COMPILATION LISTING OF SEGMENT init_root_vols 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 0953.4 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(74-12-01,VanVleck), approve(), audit(), install(): 12* Modified by THVV for NSS. 13* 2) change(75-01-01,VanVleck), approve(), audit(), install(): 14* Modified throughout 1975 by THVV and BSG for NSS. 15* 3) change(77-03-01,VanVleck), approve(), audit(), install(): 16* Modified for more vol maps than will fit in one segment. 17* 4) change(78-07-01,Greenberg), approve(), audit(), install(): 18* Modified for MANY hardcore partitions. 19* 5) change(79-02-01,MJordan), approve(), audit(), install(): 20* Modified by Michael R. Jordan for MSU500 support. 21* 6) change(79-04-01,MJordan), approve(), audit(), install(): 22* Modified for proper MSU500/501/509 initialization, and to detect 23* some configuration errors. 24* 7) change(80-11-27,Sibert), approve(), audit(), install(): 25* Modified by W. Olin Sibert to split from old init_pvt (to which 26* earlier history refers). 27* 8) change(80-11-28,Sibert), approve(), audit(), install(): 28* Modified for Bootload Multics and more error detection. 29* 9) change(82-07-01,Margulies), approve(), audit(), install(): 30* Modified by BIM to remove references to fsmap and fsdct. 31* 10) change(82-10-01,Margulies), approve(), audit(), install(): 32* Modified to return error code if the RPV takes I/O errors. 33* 11) change(83-03-01,Loepere), approve(), audit(), install(): 34* Modified by KPL to find or create bce and file partitions. 35* 12) change(84-03-01,Loepere), approve(), audit(), install(): 36* Modified to do the right thing on bce passes wrt other hardcore part 37* disks. 38* 13) change(84-09-01,ABall), approve(), audit(), install(): 39* Modified by Allen Ball to have it check in each pass that the rpv 40* in sys_boot_info matched that on the config card. 41* 14) change(84-12-01,Loepere), approve(), audit(), install(): 42* Modified by Keith Loepere to add LOG partition to the list of partitions 43* to be created on first bootload. 44* 15) change(85-03-28,Margulies), approve(), audit(), install(): 45* Modified for root pv's without partitions. 46* 16) change(85-12-05,Lippard), approve(85-12-02,MCR7309), 47* audit(86-07-08,GDixon), install(86-07-17,MR12.0-1097): 48* Modified by Jim Lippard to set new pvt bit (root_lv) for all 49* root pv's so that accept_rpv will accept root pv's without 50* partitions. 51* 17) change(85-12-20,Fawcett), approve(86-04-11,MCR7383), 52* audit(86-07-08,GDixon), install(86-07-17,MR12.0-1097): 53* Add subvolume support. 54* 18) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 55* audit(86-06-10,Martinson), install(86-07-17,MR12.0-1091): 56* Correct error message documentation. 57* END HISTORY COMMENTS */ 58 59 /* format: style2 */ 60 61 init_root_vols: 62 procedure (code); 63 64 dcl code fixed bin (35) parameter; 65 66 dcl 1 root_vol_loc_info aligned, /* Array of locations for root volumes */ 67 2 roots (20), 68 3 subsys char (4), /* Subsystem and drive number for each volume */ 69 3 drive fixed bin, 70 3 subvol fixed bin; /* with an HC partition */ 71 72 dcl subsys_name char (4) aligned; 73 dcl problem char (64); 74 dcl drive_name char (4) aligned; 75 dcl drive_no fixed bin (8) unal; 76 dcl sv_no fixed bin; 77 dcl n_roots_found fixed bin; /* Number of volumes defined on ROOT card(s) */ 78 dcl curtime fixed bin (71); /* When we got started */ 79 dcl sv_idx fixed bin; 80 dcl root_idx fixed bin; 81 dcl vol_idx fixed bin; 82 83 dcl tx fixed bin; 84 85 dcl 1 LABEL aligned like label; 86 87 88 dcl sst$root_pvtx fixed bin external static; 89 dcl pvt$root_pvtx fixed bin external static; 90 dcl pvt$root_pvid bit (36) aligned external static; 91 dcl pvt$root_lvid bit (36) aligned external static; 92 dcl pvt$prev_shutdown_state 93 fixed bin external static; 94 dcl pvt$prev_esd_state fixed bin external static; 95 dcl pvt$disk_table_vtocx fixed bin external static; 96 dcl pvt$disk_table_uid bit (36) aligned external static; 97 dcl pvt$n_entries fixed bin external static; 98 dcl pvt$root_vtocx fixed bin external static; 99 100 dcl config_$find entry (char (4) aligned, pointer); 101 102 dcl init_empty_root entry (fixed bin, fixed bin (35)); 103 dcl init_hc_part entry (fixed bin, fixed bin (18), fixed bin (18)); 104 dcl make_sdw$thread_hcp entry (fixed bin); 105 dcl read_disk_label entry (fixed bin, ptr, char (*), fixed bin (35)); 106 declare write_disk entry (fixed bin, fixed bin (18), ptr, fixed bin (35)); 107 108 dcl ( 109 syserr, 110 syserr$error_code 111 ) entry options (variable); 112 dcl create_rpv_partition entry (fixed bin, ptr, fixed bin, char (4), fixed bin (35)); 113 114 dcl ( 115 error_table_$bad_arg, 116 error_table_$bad_volid, 117 error_table_$invalid_elsize, 118 error_table_$noalloc, 119 error_table_$noarg, 120 error_table_$nopart, 121 error_table_$too_many_names 122 ) fixed bin (35) ext static; 123 124 dcl sys_boot_info$assume_config_deck 125 bit (1) external; 126 dcl sys_boot_info$config_part_frec 127 fixed bin (18) external; 128 dcl sys_boot_info$disk_device_has_sv 129 bit (1) aligned external; 130 dcl sys_boot_info$disk_device_sv 131 fixed bin (17) external; 132 dcl sys_boot_info$disk_device_number 133 fixed bin (6) external; 134 dcl sys_boot_info$rpv_cold_boot 135 bit (1) aligned ext static; 136 137 dcl ME char (16) internal static options (constant) init ("init_root_vols"); 138 dcl VALID_NUMBERS char (10) int static options (constant) init ("0123456789"); 139 140 141 dcl (addr, bin, clock, convert, divide, hbound, index, null, rtrim, substr, verify) 142 builtin; 143 144 145 code = 0; 146 curtime = clock (); 147 148 labelp = addr (LABEL); 149 pvt_arrayp = addr (pvt$array); 150 151 152 /* Locate all the volumes to have HC parts to be used at bootload time. */ 153 154 n_roots_found = 0; 155 root_cardp = null; 156 FIND_MORE_ROOT_CARDS: 157 call config_$find (ROOT_CARD_WORD, root_cardp); 158 if root_cardp = null 159 then goto ALL_ROOT_CARDS_GOTTEN; 160 161 do vol_idx = 1 to hbound (root_card_array.volume, 1); 162 /* Scan the card. */ 163 subsys_name = root_card.volume (vol_idx).subsystem; 164 /* Pick up ssname */ 165 drive_name = root_card.volume (vol_idx).drive; 166 167 sv_idx = verify (rtrim (drive_name), VALID_NUMBERS); 168 /* check for non-numeric character */ 169 if sv_idx = 0 170 then do; /* non-subvolume device */ 171 drive_no = bin (drive_name, 17); 172 sv_no = -1; 173 end; 174 else if sv_idx > 1 175 then do; /* possible subvolume device */ 176 drive_no = bin (substr (drive_name, 1, sv_idx - 1), 17); 177 sv_no = index (valid_sv_string, substr (rtrim (drive_name), sv_idx)) - 1; 178 if sv_no = -1 /* bad subvolume indicator */ 179 then goto invalid_drive; 180 end; 181 else do; /* no valid drive number */ 182 invalid_drive: 183 call syserr (CRASH, "^a: Invalid device on root card ^a_^a.", ME, subsys_name, drive_name); 184 code = error_table_$bad_arg; /* In case someone types GO */ 185 goto RETURN; 186 end; 187 188 n_roots_found = n_roots_found + 1; 189 190 if n_roots_found > hbound (root_vol_loc_info.roots, 1) 191 then do; 192 call syserr (CRASH, "^a: Maximum of ^d RLV vols has been exceeded.", ME, n_roots_found - 1); 193 code = error_table_$too_many_names;/* In case someone types GO */ 194 goto RETURN; 195 end; 196 197 do root_idx = 1 to n_roots_found - 1; /* Check for duplications */ 198 if (subsys_name = root_vol_loc_info.roots (root_idx).subsys) 199 & (drive_no = root_vol_loc_info (root_idx).drive) & (sv_no = root_vol_loc_info (root_idx).subvol) 200 then do; 201 call syserr (CRASH, "^a: ^a_^a appears twice on root cards.", ME, subsys_name, drive_name); 202 code = error_table_$bad_arg; /* In case someone types GO */ 203 goto RETURN; 204 end; 205 end; 206 207 root_vol_loc_info.roots (n_roots_found).subsys = subsys_name; 208 /* Copy to table. */ 209 root_vol_loc_info.roots (n_roots_found).drive = drive_no; 210 root_vol_loc_info.roots (n_roots_found).subvol = sv_no; 211 /* Check to make sure that it matches the one in sys_boot_info. */ 212 if n_roots_found = 1 213 then if ^sys_boot_info$assume_config_deck 214 & ((sys_boot_info$disk_device_number ^= root_vol_loc_info.roots (1).drive) 215 | (sys_boot_info$disk_device_sv ^= root_vol_loc_info.roots (1).subvol)) 216 then do; 217 218 call syserr (CRASH, 219 "^a: RPV specified in the configuration deck (^a) does not match sys_boot_info (^d^[^a^]).", 220 ME, drive_name, sys_boot_info$disk_device_number, sys_boot_info$disk_device_has_sv, 221 sys_boot_info$disk_device_sv); 222 code = error_table_$bad_arg; /* In case someone types GO */ 223 goto RETURN; 224 end; 225 if sys_info$collection_1_phase ^= SERVICE_INITIALIZATION 226 then go to ALL_ROOT_CARDS_GOTTEN; /* only one root vol (rpv) for bce */ 227 end; 228 229 goto FIND_MORE_ROOT_CARDS; 230 231 232 ALL_ROOT_CARDS_GOTTEN: 233 if n_roots_found = 0 234 then do; 235 call syserr (CRASH, "^a: No root card.", ME); 236 code = error_table_$noarg; /* In case someone types GO */ 237 goto RETURN; 238 end; 239 240 do root_idx = 1 to n_roots_found; /* Now, find all the HC partitions */ 241 subsys_name = root_vol_loc_info (root_idx).subsys; 242 /* Copy out for easier reference */ 243 drive_no = root_vol_loc_info (root_idx).drive; 244 sv_no = root_vol_loc_info (root_idx).subvol; 245 do tx = 1 to pvt$n_entries; /* Find the right pvte */ 246 pvtep = addr (pvt_array (tx)); 247 if (pvte.devname = subsys_name) & (pvte.logical_area_number = drive_no) & (pvte.sv_num = sv_no) 248 then goto FOUND_ROOT_VOL_PVTE; /* This is the one */ 249 end; 250 251 call syserr (CRASH, "^a: root card specifies nonexistent drive ^a.", ME, 252 DEVICE_NAME (subsys_name, drive_no, sv_no)); 253 code = error_table_$bad_arg; /* In case someone types GO */ 254 goto RETURN; 255 256 FOUND_ROOT_VOL_PVTE: 257 if root_idx = 1 258 then pvte.rpv = "1"b; /* RPV is defined to be first vol named on */ 259 /* the first ROOT card. */ 260 pvte.root_lv = "1"b; 261 262 call INIT_HC_PART; /* Enable the supervisor paging partition */ 263 264 if pvte.rpv 265 then call ENABLE_RPV; /* Set special info if this is the RPV */ 266 end; /* Of loop through root vol specs */ 267 268 if pvt$root_vtocx = -1 269 then do; /* Did we find the root? */ 270 call syserr (CRASH, "^a: RPV not found.", ME); 271 code = error_table_$bad_arg; /* In case someone types GO */ 272 goto RETURN; 273 end; 274 RETURN: 275 return; /* all done */ 276 277 278 INIT_HC_PART: 279 proc; 280 281 /* Seek out a hardcore partition on this volume. There ought be one. 282* Allocate and initialize the map for that hc part, thread into PVT. */ 283 284 dcl part_idx fixed bin; 285 dcl bce_part_idx fixed bin; 286 dcl file_part_idx fixed bin; 287 dcl log_part_idx fixed bin; 288 dcl baseadd fixed bin (18); 289 dcl totrec fixed bin (18); 290 dcl hc_part_idx fixed bin; 291 dcl DEFAULT_BCE_PART_SIZE fixed bin init (2200) static options (constant); 292 dcl DEFAULT_FILE_PART_SIZE fixed bin init (255) static options (constant); 293 dcl DEFAULT_LOG_PART_SIZE fixed bin init (256) static options (constant); 294 295 if sys_boot_info$rpv_cold_boot & pvte.rpv 296 then do; /* Init the vol. */ 297 call init_empty_root (tx, code); 298 if code ^= 0 /* I/O error on drive */ 299 then go to RETURN; 300 301 /* sys_boot_info$rpv_cold_boot is turned off in real_initializer, after */ 302 /* the config deck is written onto the RPV. */ 303 304 end; 305 306 READ_LABEL: 307 call read_disk_label (tx, labelp, problem, code); 308 if code ^= 0 /* guaranteed to mean that there was an I/O error */ 309 then do; 310 call syserr$error_code (CRASH, code, "^a: Error reading ^a label. ^a", ME, 311 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num), problem); 312 go to READ_LABEL; /* retry read if "go" typed. */ 313 end; 314 hc_part_idx = PART_SEARCH ("hc", labelp); 315 316 if hc_part_idx = -1 & pvte.rpv 317 then do; 318 call syserr (CRASH, "^a: No part hc on RPV volume ^a.", ME, 319 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num)); 320 code = error_table_$nopart; /* In case someone types GO */ 321 goto RETURN; 322 end; 323 324 if pvte.rpv 325 then do; 326 part_idx = PART_SEARCH ("conf", labelp); 327 if part_idx = -1 328 then call ADD_CONF_PART (hc_part_idx, labelp); 329 else sys_boot_info$config_part_frec = labelp -> label.parts (part_idx).frec; 330 331 bce_part_idx = PART_SEARCH ("bce ", labelp); 332 if bce_part_idx ^= -1 333 then if labelp -> label.parts (bce_part_idx).nrec < BCE_PART_LTH 334 then do; 335 call syserr (CRASH, "^a: bce partition is ^d records, must be ^d.", ME, 336 labelp -> label.parts (bce_part_idx).nrec, BCE_PART_LTH); 337 code = error_table_$invalid_elsize; 338 /* In case someone types GO */ 339 goto RETURN; 340 end; 341 342 file_part_idx = PART_SEARCH ("file", labelp); 343 344 log_part_idx = PART_SEARCH ("log ", labelp); 345 346 if bce_part_idx = -1 | file_part_idx = -1 | log_part_idx = -1 347 then call ADD_BM_PARTS; 348 end; 349 350 /* Copy parameters for HC part into PVT */ 351 352 if hc_part_idx > 0 /* yes, it has a partition */ & sys_info$collection_1_phase = SERVICE_INITIALIZATION 353 then do; 354 baseadd = label.parts (hc_part_idx).frec; 355 totrec = label.parts (hc_part_idx).nrec; 356 357 call init_hc_part (tx, baseadd, totrec); 358 359 /* Thread the hardcore part PVTE's. */ 360 361 call make_sdw$thread_hcp (tx); 362 363 pvte.hc_part_used = "1"b; /* See accept_fs_disk */ 364 end; 365 366 pvte.permanent = "1"b; /* No demount. */ 367 return; 368 369 370 ADD_CONF_PART: 371 procedure (hc_partx, labelp); 372 declare hc_partx fixed bin; 373 declare labelp pointer; 374 declare conf_partx fixed bin; 375 376 call syserr (ANNOUNCE, "^a: Adding config (conf) partition to rpv.", ME); 377 378 conf_partx = labelp -> label.nparts + 1; 379 if conf_partx > hbound (labelp -> label.parts, 1) 380 then do; 381 call syserr (CRASH, "^a: No room in rpv label for conf partition.", ME); 382 code = error_table_$noalloc; /* In case someone types GO */ 383 goto RETURN; 384 end; 385 labelp -> label.nparts = conf_partx; 386 labelp -> label.parts (conf_partx).part = "conf"; 387 labelp -> label.parts (conf_partx).frec = 388 (labelp -> label.parts (hc_partx).frec + labelp -> label.parts (hc_partx).nrec) - 4; 389 /* shave off */ 390 labelp -> label.parts (conf_partx).nrec = 4; 391 labelp -> label.parts (hc_partx).nrec = labelp -> label.parts (hc_partx).nrec - 4; 392 WRITE_LABEL: 393 call write_disk (tx, (LABEL_ADDR), labelp, code); 394 if code ^= 0 395 then do; 396 call syserr$error_code (CRASH, code, "^a: Error writing rpv label on ^a.", ME, 397 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num)); 398 goto WRITE_LABEL; /* retry write, if "go" typed. */ 399 end; 400 sys_boot_info$config_part_frec = labelp -> label.parts (conf_partx).frec; 401 return; 402 end ADD_CONF_PART; 403 404 ADD_BM_PARTS: 405 proc; 406 dcl first_new_part char (4); /* name of first part to add */ 407 dcl last_part_idx fixed bin; /* index in label for last part to add */ 408 dcl partition_start fixed bin; /* record number thereof */ 409 dcl total_part_size fixed bin; /* to be added */ 410 411 call syserr (ANNOUNCE, "^a: Adding ^[bce ^;^]^[file ^;^]^[log ^;^]partition(s) to rpv.", ME, bce_part_idx = -1, 412 file_part_idx = -1, log_part_idx = -1); 413 414 total_part_size = 0; 415 first_new_part = ""; 416 last_part_idx = labelp -> label.nparts; 417 if bce_part_idx = -1 418 then do; 419 total_part_size = total_part_size + DEFAULT_BCE_PART_SIZE; 420 last_part_idx = last_part_idx + 1; 421 if first_new_part = "" 422 then first_new_part = "bce "; 423 end; 424 if file_part_idx = -1 425 then do; 426 total_part_size = total_part_size + DEFAULT_FILE_PART_SIZE; 427 last_part_idx = last_part_idx + 1; 428 if first_new_part = "" 429 then first_new_part = "file"; 430 end; 431 if log_part_idx = -1 432 then do; 433 total_part_size = total_part_size + DEFAULT_LOG_PART_SIZE; 434 last_part_idx = last_part_idx + 1; 435 if first_new_part = "" 436 then first_new_part = "log "; 437 end; 438 if last_part_idx > hbound (labelp -> label.parts, 1) 439 then do; 440 call syserr (CRASH, "^a: No room in rpv label for partitions.", ME); 441 code = error_table_$noalloc; /* In case someone types GO */ 442 goto RETURN; 443 end; 444 445 call create_rpv_partition (tx, labelp, total_part_size, first_new_part, code); 446 if code ^= 0 447 then do; 448 call syserr$error_code (CRASH, code, "^a: Error adding partitions to rpv on ^a.", ME, 449 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num)); 450 goto RETURN; /* In case someone types GO */ 451 end; 452 453 /* Trim space from one partition for others. */ 454 455 partition_start = labelp -> label.parts (labelp -> label.nparts).frec; 456 labelp -> label.nparts = labelp -> label.nparts - 1; 457 if bce_part_idx = -1 458 then do; 459 labelp -> label.nparts, bce_part_idx = labelp -> label.nparts + 1; 460 labelp -> label.parts (bce_part_idx).nrec = DEFAULT_BCE_PART_SIZE; 461 labelp -> label.parts (bce_part_idx).part = "bce "; 462 labelp -> label.parts (bce_part_idx).frec = partition_start; 463 partition_start = partition_start + DEFAULT_BCE_PART_SIZE; 464 end; 465 if file_part_idx = -1 466 then do; 467 labelp -> label.nparts, file_part_idx = labelp -> label.nparts + 1; 468 labelp -> label.parts (file_part_idx).nrec = DEFAULT_FILE_PART_SIZE; 469 labelp -> label.parts (file_part_idx).part = "file"; 470 labelp -> label.parts (file_part_idx).frec = partition_start; 471 partition_start = partition_start + DEFAULT_FILE_PART_SIZE; 472 end; 473 if log_part_idx = -1 474 then do; 475 labelp -> label.nparts, log_part_idx = labelp -> label.nparts + 1; 476 labelp -> label.parts (log_part_idx).nrec = DEFAULT_LOG_PART_SIZE; 477 labelp -> label.parts (log_part_idx).part = "log "; 478 labelp -> label.parts (log_part_idx).frec = partition_start; 479 partition_start = partition_start + DEFAULT_LOG_PART_SIZE; 480 end; 481 482 WRITE_LABEL: 483 call write_disk (tx, (LABEL_ADDR), labelp, code); /* show trimmed part to disk */ 484 if code ^= 0 485 then do; 486 call syserr$error_code (CRASH, code, "^a: Error writing rpv label on ^a.", ME, 487 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num)); 488 goto WRITE_LABEL; /* retry write, if "go" typed. */ 489 end; 490 end ADD_BM_PARTS; 491 end INIT_HC_PART; 492 493 494 ENABLE_RPV: 495 procedure; 496 497 /* This procedure is called to set up the RPV */ 498 /* Implicit parameters: tx, device_type */ 499 /* Also fills the location of the bce partition in sys_boot_info */ 500 501 502 dcl bce_partx fixed bin; 503 dcl sys_boot_info$bce_part_frec 504 external fixed bin (18); 505 dcl sys_boot_info$bce_part_nrec 506 external fixed bin (18); 507 508 pvt$root_pvtx = tx; 509 sst$root_pvtx = tx; 510 511 READ_RPV_LABEL: 512 call read_disk_label (tx, labelp, problem, code); /* Get label from disk pack */ 513 if code ^= 0 514 then do; 515 call syserr$error_code (CRASH, code, "^a: Error reading RPV label on ^a. ^a", ME, 516 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num), problem); 517 go to READ_RPV_LABEL; /* retry read if "go" typed. */ 518 end; 519 520 if ^label.root.here 521 then do; 522 call syserr (CRASH, "^a: ^a is not the rpv, but rather is ^a.", ME, 523 DEVICE_NAME (pvte.devname, pvte.logical_area_number, pvte.sv_num), label.pv_name); 524 code = error_table_$bad_volid; /* In case someone types GO */ 525 go to RETURN; 526 end; 527 528 bce_partx = PART_SEARCH ("bce ", labelp); 529 if bce_partx = -1 530 then sys_boot_info$bce_part_frec = -1; /* None defined */ 531 else do; 532 sys_boot_info$bce_part_frec = label.parts (bce_partx).frec; 533 sys_boot_info$bce_part_nrec = label.parts (bce_partx).nrec; 534 end; 535 536 pvt$root_pvid = label.pvid; /* This IS the root */ 537 pvte.pvid = label.pvid; 538 pvte.lvid = label.lvid; 539 pvt$root_vtocx = label.root.root_vtocx; 540 pvt$root_lvid = label.lvid; 541 542 pvt$prev_shutdown_state = label.root.shutdown_state; 543 pvt$prev_esd_state = label.root.esd_state; 544 545 pvt$disk_table_vtocx = label.root.disk_table_vtocx; 546 pvt$disk_table_uid = label.root.disk_table_uid; 547 548 return; 549 end ENABLE_RPV; 550 551 DEVICE_NAME: 552 procedure (subsys, drive, sv) returns (char (8)); 553 declare subsys char (4) aligned; 554 declare drive fixed bin (8) unal; 555 declare p99 picture "99"; 556 declare sv fixed bin; 557 if sv = -1 558 then return (subsys || "_" || convert (p99, drive) || " "); 559 else return (subsys || "_" || convert (p99, drive) || valid_sv_array (sv)); 560 end DEVICE_NAME; 561 562 563 PART_SEARCH: 564 procedure (part, labelp) returns (fixed bin); 565 declare part character (4); 566 declare part_idx fixed bin; 567 declare labelp pointer; 568 569 do part_idx = 1 to labelp -> label.nparts while (labelp -> label.parts (part_idx).part ^= part); 570 /* Seek out HC part. */ 571 end; 572 if part_idx <= labelp -> label.nparts 573 then return (part_idx); 574 else return (-1); 575 end PART_SEARCH; 576 577 /* format: off */ 578 /* BEGIN INCLUDE FILE...disk_pack.incl.pl1 Last Modified January 1982 for new volume map */ 1 2 1 3 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 1 8* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 1 9* Add vars PAGE_SIZE and VTOCE_SIZE, Also change the SECTORS_PER_VTOCE and 1 10* VTOCES_PER_RECORD form fixed bin constants to arrays of fixed bin 1 11* constants indexed by device type as defined in fs_dev_types.incl.pl1. 1 12* This was done for support of the 3380, and 3390 devices for 512_WORD_IO. 1 13* 2) change(86-10-21,Fawcett), approve(86-10-21,MCR7533), 1 14* audit(86-10-21,Farley), install(86-10-22,MR12.0-1193): 1 15* Change PAGE_SIZE and VTOCE_SIZE from automatic to static constants. 1 16* END HISTORY COMMENTS */ 1 17 1 18 1 19 /* 1 20* All disk packs have the standard layout described below: 1 21* 1 22* Record 0 : contains the label, as declared in fs_vol_label.incl.pl1. 1 23* Record 1 to 3 : contains the volume map, as declared in vol_map.incl.pl1 1 24* Record 4 to 5 : contains the dumper bit map, as declared in dumper_bit_map.incl.pl1 1 25* Record 6 : contains the vtoc map, as declared in vtoc_map.incl.pl1 1 26* Record 7 : formerly contained bad track list; no longer used. 1 27* Records 8 to n-1 : contain the array of vtoc entries; ( n is specified in the label) 1 28* each record contains 5 192-word vtoc entries. The last 64 words are unused. 1 29* Records n to N-1 : contain the pages of the Multics segments. ( N is specified in the label) 1 30* 1 31* Sundry partitions may exist within the region n to N-1, withdrawn or not as befits the meaning 1 32* of the particular partition. 1 33* 1 34* 1 35* 1 36* A conceptual declaration for a disk pack could be: 1 37* 1 38* dcl 1 disk_pack, 1 39* 2 label_record (0 : 0) bit(36 * 1024), 1 40* 2 volume_map_record (1 : 3) bit(36 * 1024), 1 41* 2 dumper_bit_map_record (4 : 5) bit(36 * 1024), 1 42* 2 vtoc_map_record (6 : 6) bit(36 * 1024), 1 43* 2 spare_record (7 : 7) bit(36 * 1024), 1 44* 2 vtoc_array_records (8 : n-1), 1 45* 3 vtoc_entry ( 5 ) bit(36 * 192), 1 46* 3 unused bit(36 * 64), 1 47* 2 Multics_pages_records (n : N-1) bit(36 * 1024); 1 48* 1 49* 1 50* 1 51* 1 52**/ 1 53 1 54 dcl (LABEL_ADDR init (0), /* Address of Volume Label */ 1 55 VOLMAP_ADDR init (1), /* Address of first Volume Map record */ 1 56 DUMPER_BIT_MAP_ADDR init (4), /* For initial release compaitiblity */ 1 57 VTOC_MAP_ADDR init (6), /* Address of first VTOC Map Record */ 1 58 VTOC_ORIGIN init (8), /* Address of first record of VTOC */ 1 59 DEFAULT_HCPART_SIZE init (1000), /* Size of Hardcore Partition */ 1 60 MAX_VTOCE_PER_PACK init (31774)) /* Limited by size of VTOC Map */ 1 61 fixed bin (17) int static options (constant); 1 62 1 63 /* SECTORS_PER_VTOCE & VTOCES_PER_RECORD are indexed via device type as */ 1 64 /* defined by fs_dev_types and extracted form the disk_table entry (dte) */ 1 65 /* or the physical volume table entry (pvte) device type. */ 1 66 1 67 dcl PAGE_SIZE fixed bin (17) init (1024) static options (constant); 1 68 dcl VTOCE_SIZE fixed bin (17) init (192) static options (constant); 1 69 1 70 dcl SECTORS_PER_VTOCE (9) fixed bin static options (constant) init 1 71 (0, 3, 3, 3, 3, 3, 3, 1, 1); 1 72 dcl VTOCES_PER_RECORD (9) fixed bin static options (constant) init 1 73 (0, 5, 5, 5, 5, 5, 5, 2, 2); 1 74 dcl SECTORS_PER_RECORD (9) fixed bin static options (constant) init 1 75 (0, 16, 16, 16, 16, 16, 16, 2, 2); 1 76 1 77 /* END INCLUDE FILE...disk_pack.incl.pl1 */ 578 579 /* BEGIN INCLUDE FILE ... pvt.incl.pl1 ... last modified January 1982 */ 2 2 2 3 2 4 /* The physical volume table (PVT) is a wired-down table. 2 5* It has one entry for each spindle present, be it for 2 6* Storage System or "I/O" use. 2 7**/ 2 8 2 9 dcl pvt$ ext, 2 10 pvtp ptr; 2 11 2 12 2 13 dcl 1 pvt based (pvtp) aligned, 2 14 2 15 2 n_entries fixed bin (17), /* number of PVT entries */ 2 16 2 max_n_entries fixed bin (17), /* max number of PVT entries */ 2 17 2 n_in_use fixed bin (17), /* number of PVT entries in use */ 2 18 2 rwun_pvtx fixed bin, /* rewind_unloading pvtx */ 2 19 2 shutdown_state fixed bin, /* state of previous shutdown */ 2 20 2 esd_state fixed bin, /* state of ESD, >0 iff in ESD */ 2 21 2 prev_shutdown_state fixed bin, /* shutdown state of previous bootload */ 2 22 2 prev_esd_state fixed bin, /* ESD state of previous bootload */ 2 23 2 24 2 time_of_bootload fixed bin (71), /* Time of bootload */ 2 25 2 root_lvid bit (36) aligned, /* Logical volume ID of Root Logical Volume (RLV) */ 2 26 2 root_pvid bit (36) aligned, /* Physical volume ID of Root Physical Volume (RPV) */ 2 27 2 root_pvtx fixed bin, /* Index to PVTE for Root Physical Volume (RPV) */ 2 28 2 root_vtocx fixed bin, /* VTOCE index for root (>) */ 2 29 2 disk_table_vtocx fixed bin, /* VTOCE index for disk table on RPV */ 2 30 2 disk_table_uid bit (36) aligned, /* File System UID for disk_table */ 2 31 2 32 2 rpvs_requested bit (1) aligned, /* RPVS keyword given on BOOT */ 2 33 2 rpv_needs_salv bit (1) aligned, /* RPV required (not requested) salvage */ 2 34 2 rlv_needs_salv bit (1) aligned, /* RLV required (not requested) salvage */ 2 35 2 volmap_lock_wait_constant bit (36) aligned,/* For constructing wait event: OR pvte_rel into lower */ 2 36 2 volmap_idle_wait_constant bit (36) aligned,/* For constructing wait event: OR pvte_rel into lower */ 2 37 2 vtoc_map_lock_wait_constant bit (36) aligned, /* For constructing wait event: OR pvte_rel into lower */ 2 38 2 n_volmap_locks_held fixed bin (17), /* Current number of volmap locks held */ 2 39 2 n_vtoc_map_locks_held fixed bin (17), /* Current number of VTOC Map locks held */ 2 40 2 41 2 last_volmap_time fixed bin (71), /* Time a volmap was last locked/unlocked */ 2 42 2 last_vtoc_map_time fixed bin (71), /* Time a VTOC Map was last locked/unlocked */ 2 43 2 total_volmap_lock_time fixed bin (71), /* Total time volmap's were locked (integral) */ 2 44 2 total_vtoc_map_lock_time fixed bin (71), /* Total time VTOC Maps were locked (integral) */ 2 45 2 46 2 n_volmap_locks fixed bin (35), /* Number times a volmap was locked */ 2 47 2 n_vtoc_map_locks fixed bin (35), /* Number times a vtoc_map was locked */ 2 48 2 volmap_lock_nowait_calls fixed bin (35), /* Number calls to lock volmap, no wait */ 2 49 2 volmap_lock_nowait_fails fixed bin (35), /* Number times lock failed */ 2 50 2 volmap_lock_wait_calls fixed bin (35), /* Number calls to lock volmap, wait */ 2 51 2 volmap_lock_wait_fails fixed bin (35), /* Number times lock failed */ 2 52 2 pad (2) bit (36) aligned, 2 53 2 54 2 array fixed bin (71); /* Array of PVTE's -- must be double-word aligned */ 2 55 2 56 2 57 2 58 /* END INCLUDE FILE ...pvt.incl.pl1 */ 579 580 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 3 2 3 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 3 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 3 8* Add the support for subvolumes 3 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 3 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 3 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 3 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 3 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 3 14* Added inconsistent_dbm bit for determining the status of volume 3 15* dumper bit maps. 3 16* END HISTORY COMMENTS */ 3 17 3 18 dcl pvt$array aligned external; 3 19 dcl pvt$max_n_entries fixed bin external; 3 20 3 21 dcl pvt_arrayp ptr; 3 22 dcl pvtep ptr; 3 23 3 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 3 25 3 26 dcl 1 pvte based (pvtep) aligned, 3 27 3 28 2 pvid bit (36), /* physical volume ID */ 3 29 3 30 2 lvid bit (36), /* logical volume ID */ 3 31 3 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 3 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 3 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 3 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 3 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 3 37 2 pad3 bit (2) unaligned, 3 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 3 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 3 40 3 41 3 42 3 43 2 devname char (4), /* device name */ 3 44 3 45 (2 device_type fixed bin (8), /* device type */ 3 46 2 logical_area_number fixed bin (8), /* disk drive number */ 3 47 2 used bit (1), /* TRUE if this entry is used */ 3 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 3 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 3 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 3 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 3 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 3 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 3 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 3 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 3 56 2 scav_check_address 3 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 3 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 3 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 3 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 3 61 2 vacating bit (1), /* don't put new segs on this vol */ 3 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 3 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 3 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 3 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 3 66 3 67 3 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 3 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 3 70 3 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 3 72 3 73 2 nleft fixed bin (17), /* number of records left */ 3 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 3 75 3 76 2 dim_info bit (36), /* Information peculiar to DIM */ 3 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 3 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 3 79 2 records_per_cyl fixed bin, 3 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 3 81 2 sv_name char (2) aligned, 3 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 3 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 3 84 3 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 3 86 2 pad2 bit (18) unaligned, 3 87 3 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 3 89 3 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 3 91 3 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 3 93 3 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 3 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 3 96 3 97 3 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 3 99 3 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 3 101 3 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 3 103 3 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 3 105 3 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 3 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 3 108 3 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 3 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 3 111 3 112 3 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 3 114 VOLMAP_ASYNC_READ init (1), 3 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 3 116 3 117 3 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 580 581 /* BEGIN include file collection_1_phases.incl.pl1 */ 4 2 4 3 /* Symbolic names for the various collection1 phases. 4 4*Keith Loepere, October 1983. */ 4 5 4 6 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 4 7 4 8 dcl sys_info$collection_1_phase fixed bin external static; 4 9 4 10 dcl EARLY_INITIALIZATION fixed bin init (1) static options (constant); /* phase to find the config deck */ 4 11 dcl BOOT_INITIALIZATION fixed bin init (2) static options (constant); /* phase to setup up crash handler, bce */ 4 12 dcl SERVICE_INITIALIZATION fixed bin init (3) static options (constant); /* phase to set up for service */ 4 13 4 14 /* These first 3 (EARLY, BOOT and SERVICE) must be 1, 2, 3 in that order so 4 15*programs can simply tell apart the booting phases from all others (crash or 4 16*recovery type phases). */ 4 17 4 18 dcl CRASH_INITIALIZATION fixed bin init (4) static options (constant); /* phase to set up bce after crash/shut down */ 4 19 dcl RE_EARLY_INITIALIZATION fixed bin init (5) static options (constant); /* retry boot initialization given safe config to a new early level */ 4 20 dcl BCE_CRASH_INITIALIZATION fixed bin init (6) static options (constant); /* retry boot initialization to give a new boot level given a crash of bce */ 4 21 dcl SHUT_INITIALIZATION fixed bin init (7) static options (constant); /* same as boot but don't load new disk mpcs */ 4 22 4 23 dcl COLLECTION_1_PHASE_NAMES (7) char (16) unal static options (constant) init 4 24 ("early", "boot", "service", "crash", "re_early", "bce_crash", "shut"); 4 25 4 26 /* END include file collection_1_phases.incl.pl1 */ 581 582 /* BEGIN INCLUDE FILE ... config_root_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 5 7* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 5 8* Change the drive dcl from fixed bin to char (4) for subvolume support. 5 9* 2) change(87-05-07,Fawcett), approve(87-05-07,MCR7676), 5 10* audit(87-05-11,Beattie), install(87-07-15,MR12.1-1041): 5 11* Change the drive dcl in root_array_card from fixed bin to char (4), this 5 12* was an oversight in MCR7383. 5 13* END HISTORY COMMENTS */ 5 14 5 15 5 16 dcl root_cardp pointer; /* pointer to ROOT card */ 5 17 5 18 dcl 1 root_card aligned based (root_cardp), /* ROOT card declaration */ 5 19 2 word char (4), /* "root" */ 5 20 2 volume (7), /* List of RLV volumes. RPV is first in the list */ 5 21 3 subsystem char (4), /* Disk subsystem name */ 5 22 3 drive char (4), /* Disk drive number/subvol */ 5 23 5 24 2 type_word aligned, 5 25 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 5 26 3 pad1 bit (4) unaligned, 5 27 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 5 28 5 29 dcl 1 root_card_array aligned based (root_cardp), /* Overlay for counting volumes */ 5 30 2 pad bit (36) aligned, 5 31 2 volume (divide (root_card.n_fields, 2, 17, 0)), 5 32 3 subsystem char (4), /* Disk subsystem name */ 5 33 3 drive char (4); /* Disk drive number */ 5 34 5 35 dcl ROOT_CARD_WORD char (4) aligned internal static options (constant) init ("root"); 5 36 5 37 /* END INCLUDE FILE ... config_root_card.incl.pl1 */ 582 583 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 6 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 6 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 6 4 6 5 /* This include file has an ALM version. Keep 'em in sync! */ 6 6 6 7 dcl ( 6 8 6 9 /* The following constants define the message action codes. This indicates 6 10*how a message is to be handled. */ 6 11 6 12 SYSERR_CRASH_SYSTEM init (1), 6 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 6 14 6 15 SYSERR_TERMINATE_PROCESS init (2), 6 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 6 17 6 18 SYSERR_PRINT_WITH_ALARM init (3), 6 19 BEEP init (3), /* Beep and print the message on the console. */ 6 20 6 21 SYSERR_PRINT_ON_CONSOLE init (0), 6 22 ANNOUNCE init (0), /* Just print the message on the console. */ 6 23 6 24 SYSERR_LOG_OR_PRINT init (4), 6 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 6 26 6 27 SYSERR_LOG_OR_DISCARD init (5), 6 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 6 29 6 30 6 31 /* The following constants are added to the normal severities to indicate 6 32*different sorting classes of messages. */ 6 33 6 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 6 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 6 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 6 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 6 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 6 39 ) fixed bin internal static options (constant); 6 40 6 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 583 584 /* BEGIN INCLUDE FILE ... fs_vol_label.incl.pl1 .. last modified January 1982 for new volume map format */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(86-04-10,Fawcett), approve(86-04-10,MCR7383), 7 5* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 7 6* Add the subvolume info. 7 7* 2) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 7 8* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 7 9* Added inconsistent_dbm bit used to determine consistency of volume 7 10* dumper bit maps. 7 11* END HISTORY COMMENTS */ 7 12 7 13 /* This is the label at fixed location of each physical volume. Length 1 page */ 7 14 /* Note: fsout_vol clears pad fields before writing the label */ 7 15 7 16 dcl labelp ptr; 7 17 7 18 dcl 1 label based (labelp) aligned, 7 19 7 20 /* First comes data not used by Multics.. for compatibility with GCOS */ 7 21 7 22 2 gcos (5*64) fixed bin, 7 23 7 24 /* Now we have the Multics label */ 7 25 7 26 2 Multics char (32) init ("Multics Storage System Volume"), /* Identifier */ 7 27 2 version fixed bin, /* Version 1 */ 7 28 2 mfg_serial char (32), /* Manufacturer's serial number */ 7 29 2 pv_name char (32), /* Physical volume name. */ 7 30 2 lv_name char (32), /* Name of logical volume for pack */ 7 31 2 pvid bit (36), /* Unique ID of this pack */ 7 32 2 lvid bit (36), /* unique ID of its logical vol */ 7 33 2 root_pvid bit (36), /* unique ID of the pack containing the root. everybody must agree. */ 7 34 2 time_registered fixed bin (71), /* time imported to system */ 7 35 2 n_pv_in_lv fixed bin, /* # phys volumes in logical */ 7 36 2 vol_size fixed bin, /* total size of volume, in records */ 7 37 2 vtoc_size fixed bin, /* number of recs in fixed area + vtoc */ 7 38 2 not_used bit (1) unal, /* used to be multiple_class */ 7 39 2 private bit (1) unal, /* TRUE if was registered as private */ 7 40 2 inconsistent_dbm bit (1) unal, /* TRUE if ESD-less crash */ 7 41 2 flagpad bit (33) unal, 7 42 2 max_access_class bit (72), /* Maximum access class for stuff on volume */ 7 43 2 min_access_class bit (72), /* Minimum access class for stuff on volume */ 7 44 2 password bit (72), /* not yet used */ 7 45 2 number_of_sv fixed bin, /* if = 0 not a subvolume else the number of svs */ 7 46 2 this_sv fixed bin, /* what subvolume number it is */ 7 47 2 sub_vol_name char (1), /* what subvolume name (a b c d) it is */ 7 48 2 pad1 (13) fixed bin, 7 49 2 time_mounted fixed bin (71), /* time mounted */ 7 50 2 time_map_updated fixed bin (71), /* time vmap known good */ 7 51 7 52 /* The next two words overlay time_unmounted on pre-MR10 systems. This 7 53* forces a salvage if an MR10 pack is mounted on an earlier system. 7 54* */ 7 55 2 volmap_version fixed bin, /* version of volume map (currently 1) */ 7 56 2 pad6 fixed bin, 7 57 7 58 2 time_salvaged fixed bin (71), /* time salvaged */ 7 59 2 time_of_boot fixed bin (71), /* time of last bootload */ 7 60 2 time_unmounted fixed bin (71), /* time unmounted cleanly */ 7 61 2 last_pvtx fixed bin, /* pvtx in that PDMAP */ 7 62 2 pad1a (2) fixed bin, 7 63 2 err_hist_size fixed bin, /* size of pack error history */ 7 64 2 time_last_dmp (3) fixed bin (71), /* time last completed dump pass started */ 7 65 2 time_last_reloaded fixed bin (71), /* what it says */ 7 66 2 pad2 (40) fixed bin, 7 67 2 root, 7 68 3 here bit (1), /* TRUE if the root is on this pack */ 7 69 3 root_vtocx fixed bin (35), /* VTOC index of root, if it is here */ 7 70 3 shutdown_state fixed bin, /* Status of hierarchy */ 7 71 3 pad7 bit (1) aligned, 7 72 3 disk_table_vtocx fixed bin, /* VTOC index of disk table on RPV */ 7 73 3 disk_table_uid bit (36) aligned, /* UID of disk table */ 7 74 3 esd_state fixed bin, /* State of esd */ 7 75 2 volmap_record fixed bin, /* Begin record of volume map */ 7 76 2 size_of_volmap fixed bin, /* Number of records in volume map */ 7 77 2 vtoc_map_record fixed bin, /* Begin record of VTOC map */ 7 78 2 size_of_vtoc_map fixed bin, /* Number of records in VTOC map */ 7 79 2 volmap_unit_size fixed bin, /* Number of words per volume map section */ 7 80 2 vtoc_origin_record fixed bin, /* Begin record of VTOC */ 7 81 2 dumper_bit_map_record fixed bin, /* Begin record of dumper bit-map */ 7 82 2 vol_trouble_count fixed bin, /* Count of inconsistencies found since salvage */ 7 83 2 pad3 (52) fixed bin, 7 84 2 nparts fixed bin, /* Number of special partitions on pack */ 7 85 2 parts (47), 7 86 3 part char (4), /* Name of partition */ 7 87 3 frec fixed bin, /* First record */ 7 88 3 nrec fixed bin, /* Number of records */ 7 89 3 pad5 fixed bin, 7 90 2 pad4 (5*64) fixed bin; 7 91 7 92 dcl Multics_ID_String char (32) init ("Multics Storage System Volume") static; 7 93 7 94 /* END INCLUDE FILE fs_vol_label.incl.pl1 */ 584 585 /* Begin include file ...... fs_dev_types.incl.pl1 */ 8 2 8 3 /****^ HISTORY COMMENTS: 8 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 8 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 8 6* Add support for FIPS 8 7* 3380. 8 8* 2) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 8 9* audit(86-05-15,Coppola), install(86-07-18,MR12.0-1098): 8 10* Add the support for subvolumes for the MSU3380 and MSU3390. 8 11* 3) change(86-10-02,Fawcett), approve(86-10-02,PBF7383), 8 12* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200): 8 13* Changed 3390 to 3381, "d338" to "3380" & "d339" to "3381". 8 14* END HISTORY COMMENTS */ 8 15 8 16 /* Modified 5/19/76 by N. I. Morris */ 8 17 /* Modified 12/27/78 by Michael R. Jordan to correct MSS0500 information */ 8 18 /* Modified 4/79 by R.J.C. Kissel to add msu0501 information. */ 8 19 /* Modified '82 by BIM for needs_alt_part */ 8 20 /* Modified 4/84 by Chris Jones for FIPS disks */ 8 21 /* Modified 12/84 by Paul Farley for FIPS disks formatted for 512wd sectors */ 8 22 /* Modified 1/85 by Paul Farley to decrease the size of the 3380, until the 8 23* volmap and record stock can be expanded. */ 8 24 8 25 /* 8 26******************************************************************************** 8 27** * 8 28** WARNING: * 8 29** * 8 30** There exists fs_dev_types.incl.alm that must me updated when a new device * 8 31** type is added. * 8 32** * 8 33** There are other include files that contain arrays indexed by the device * 8 34** index obtained by references to MODELX or MODELN in this include file. * 8 35** These must be modified when a new device type is added: * 8 36** disk_pack.incl.pl1 * 8 37** fs_dev_types_sector.incl.pl1 (included in this include) * 8 38** * 8 39******************************************************************************** 8 40**/ 8 41 8 42 8 43 dcl (maxdevt init (9), /* maximum legal devt */ 8 44 bulkdevt init (1), /* bulk store devt */ 8 45 msu0500devt init (2), /* MSU0500 device type */ 8 46 msu0451devt init (3), /* MSU0451 device type */ 8 47 msu0450devt init (3), /* MSU0450 device type */ 8 48 msu0400devt init (4), /* MSU0400 device type */ 8 49 dsu191devt init (4), /* DSU191 device type */ 8 50 dsu190devt init (5), /* DSU190 device type */ 8 51 dsu181devt init (6), /* DSU181 device type */ 8 52 msu0501devt init (7), /* MSU0501 device type */ 8 53 fips3380devt init (8), /* 3380D FIPS device type */ 8 54 fips3381devt init (9) /* 3380E FIPS device type */ 8 55 ) fixed bin (4) static options (constant); 8 56 8 57 dcl MODEL (12) fixed bin static options (constant) init /* Known device model numbers */ 8 58 (0, 500, 451, 450, 400, 402, 191, 190, 181, 501, 3380, 3381); 8 59 8 60 dcl MODELX (12) fixed bin static options (constant) init /* translation from model number to device type */ 8 61 (1, 2, 3, 3, 4, 4, 4, 5, 6, 7, 8, 9); 8 62 8 63 dcl MODELN (9) fixed bin static options (constant) init /* translation from device type to model number */ 8 64 (0, 500, 451, 400, 190, 181, 501, 3380, 3381); 8 65 8 66 dcl device_names (9) char (4) aligned static options (constant) init /* device names indexed by device type */ 8 67 ("bulk", "d500", "d451", "d400", "d190", "d181", "d501", "3380", "3381"); 8 68 8 69 dcl first_dev_number (9) fixed bin (17) static options (constant) init /* First valid device_number */ 8 70 (1, 1, 1, 1, 1, 1, 1, 0, 0); 8 71 8 72 dcl fips_type_disk (9) bit (1) unal static options (constant) init /* ON => FIPS disk */ 8 73 ("0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"1"b,"1"b); 8 74 8 75 dcl media_removable (9) bit (1) static options (constant) init /* ON => demountable pack on device */ 8 76 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 8 77 8 78 dcl shared_spindle (9) bit (1) static options (constant) init /* ON => 2 devices per spindle */ 8 79 ("0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b); 8 80 8 81 dcl needs_alt_part (9) bit (1) static options (constant) init /* ON => needs alternate partition to run alternate tracks */ 8 82 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 8 83 8 84 dcl seek_command (9) bit (6) init /* Seek command: 00 => N/A, 30 => Seek_512, 34 => seek_64 */ 8 85 ("00"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"30"b3, "30"b3); 8 86 8 87 dcl rec_per_dev (9) fixed bin (21) static options (constant) init /* table of # of records on each device */ 8 88 (0, 38258, 38258, 19270, 14760, 4444, 67200, 112395, 224790); 8 89 8 90 dcl rec_per_sv (9) fixed bin static options (constant) init /* table of # of records on each subvol */ 8 91 (0, 38258, 38258, 19270, 14760, 4444, 67200, 56134, 74930); 8 92 8 93 dcl number_of_sv (9) fixed bin static options (constant) init /* table of subvolumes */ 8 94 (0, 0, 0, 0, 0, 0, 0, 2, 3); 8 95 8 96 dcl valid_sv_string char (3) static options (constant) init /* string of valid subvolume names */ 8 97 ("abc"); 8 98 8 99 dcl valid_sv_array (0:2) char (1) static options (constant) /* array of valid subvolume names */ 8 100 init ("a","b","c"); 8 101 8 102 dcl cyl_per_dev (9) fixed bin static options (constant) init /* table of # of cylinders on each device */ 8 103 (0, 814, 814, 410, 410, 202, 840, 885, 1770); 8 104 8 105 dcl cyl_per_sv (9) fixed bin static options (constant) init /* table of # of cylinders on each subvolume */ 8 106 (0, 814, 814, 410, 410, 202, 840, 442, 590); 8 107 8 108 dcl rec_per_cyl (9) fixed bin static options (constant) init /* table of # of records per cylinder on each device */ 8 109 (0, 47, 47, 47, 36, 22, 80, 127, 127); 8 110 8 111 dcl tracks_per_cyl (9) fixed bin static options (constant) init /* table of # of tracks per cylinder on each device */ 8 112 (0, 19, 19, 19, 19, 20, 20, 15, 15); 8 113 8 114 8 115 dcl first_rec_num (9) fixed bin static options (constant) init /* table of # of first record on each device */ 8 116 (0, 0, 0, 0, 0, 0, 0, 0, 0); 8 117 8 118 dcl last_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each device */ 8 119 (0, 38257, 38116, 19128, 14651, 4399, 67199, 112394, 224789); 8 120 8 121 dcl last_sv_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each subvolume */ 8 122 (0, 38257, 38116, 19128, 14651, 4399, 67199, 56133, 74929); 8 123 8 124 dcl first_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector for each device */ 8 125 (0, 0, 0, 0, 0, 0, 0, 0, 0); 8 126 8 127 dcl last_sect_num (9) fixed bin (24) static options (constant) init /* table of # last sector number for each device */ 8 128 (0, 618639, 616359, 309319, 239722, 71999, 1075199, 225674, 451349); 8 129 8 130 dcl first_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector of alt partition */ 8 131 (0, 638400, 616360, 309320, 239723, 72000, 1075200, 225675, 451350); 8 132 8 133 dcl last_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector of alt partition */ 8 134 (0, 639919, 618639, 311599, 241489, 72719, 1077759, 225930, 451605); 8 135 8 136 dcl last_physical_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector on device (includes T&D cylinders) */ 8 137 (0, 639919, 619399, 312359, 242249, 72359, 1077759, 225674, 451859); 8 138 8 139 dcl dev_time (9) float bin (27) static options (constant) init /* table of average access times for each device */ 8 140 (384e0, 33187e0, 33187e0, 34722e0, 46935e0, 52631e0, 33187e0, 26260e0, 26260e0); 8 141 9 1 /* Begin fs_dev_types_sector.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 9 6* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 9 7* Add the sector differance for devices that do 64 word IO and devices that 9 8* do 512 word IO. 9 9* END HISTORY COMMENTS */ 9 10 9 11 /* Created by R. A. Fawcett for 512 word IO. for procedures that do not 9 12* need all the data in fs_dev_types. This is also included in 9 13* fs_dev_types.incl.pl1 */ 9 14 9 15 dcl sect_per_cyl (9) fixed bin static options (constant) init /* table of # of sectors per cylinder on each device */ 9 16 (0, 760, 760, 760, 589, 360, 1280, 255, 255); 9 17 9 18 dcl sect_per_sv (9) fixed bin (24) static options (constant) init /* table of # of sectors per cylinder on each subvolume */ 9 19 (0, 0, 0, 0, 0, 0, 0, 112710, 150450); 9 20 9 21 dcl sect_per_rec (9) fixed bin static options (constant) init 9 22 /* table of # of sectors per record on each device */ 9 23 /* coresponding array in disk_pack.incl.pl1 called SECTORS_PER_RECORD */ 9 24 (0, 16, 16, 16, 16, 16, 16, 2, 2); 9 25 9 26 dcl sect_per_vtoc (9) fixed bin static options (constant) init 9 27 (0, 3, 3, 3, 3, 3, 3, 1, 1); 9 28 9 29 dcl vtoc_per_rec (9) fixed bin static options (constant) init 9 30 /* corespending array in disk_pack.incl.pl1 named VTOCES_PER_RECORD */ 9 31 (0, 5, 5, 5, 5, 5, 5, 2, 2); 9 32 9 33 dcl sect_per_track (9) fixed bin static options (constant) init /* table of # of sectors per track on each device */ 9 34 (0, 40, 40, 40, 31, 18, 64, 17, 17); 9 35 9 36 dcl words_per_sect (9) fixed bin static options (constant) init /* table of # of words per sector on each device */ 9 37 (0, 64, 64, 64, 64, 64, 64, 512, 512); 9 38 9 39 /* End fs_dev_types_sector.incl.pl1 */ 9 40 8 142 8 143 8 144 /* End of include file ...... fs_dev_types.incl.pl1 */ 585 586 /* BEGIN include file bce_partition_layout.incl.pl1 10 2*This is the layout of the bce partition for bootload Multics. 10 3*Written September 1983 by Keith Loepere. */ 10 4 10 5 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 10 6 10 7 dcl BCE_PART_LTH init (2200) fixed bin internal static options (constant); /* This is the default value. */ 10 8 dcl SAVED_IMAGE_RECORDX init (0) fixed bin internal static options (constant); 10 9 dcl CRASH_HANDLER_RECORDX init (512) fixed bin internal static options (constant); 10 10 dcl BCE_PAGING_AREA_RECORDX init (1024) fixed bin internal static options (constant); 10 11 dcl BCE_PAGING_AREA_LTH init (128) fixed bin internal static options (constant); 10 12 dcl MST_AREA_RECORDX init (1152) fixed bin internal static options (constant); 10 13 10 14 /* END include file bce_partition_layout.incl.pl1 */ 586 587 588 /* BEGIN MESSAGE DOCUMENTATION 589* 590* Message: 591* init_root_vols: Invalid device on root card DISK_VOL. 592* 593* S: $crash 594* 595* T: $init 596* 597* M: A root card has been found with an invalid DISK_VOL. 598* 599* A: Change the config deck and try again. 600* 601* Message: 602* init_root_vols: Maximum of LIMIT RLV vols has been exceeded. 603* 604* S: $crash 605* 606* T: $init 607* 608* M: The "root" card in the config deck specified more RLV volumes 609* than the system can handle. 610* 611* A: Change the config deck and try again. 612* 613* Message: 614* init_root_vols: DISK_VOL appears twice on root cards. 615* 616* S: $crash 617* 618* T: $init 619* 620* M: The volume DISK_VOL appears more than once on the ROOT 621* config card(s). 622* 623* A: Fix the config deck and try again. 624* 625* Message: 626* init_root_vols: RPV specified in the configuration deck (DRIVE) does not match sys_boot_info (DRIVE). 627* 628* S: $crash 629* 630* T: $init 631* 632* M: The RPV defined on the root card is not the same as the RPV 633* that is currently being used. 634* 635* A: Fix the config deck and try again. 636* 637* Message: 638* init_root_vols: No root card. 639* 640* S: $crash 641* 642* T: $init 643* 644* M: No "root" card(s) were found in the config deck. At least 645* one must be present, defining the RPV and other RLV volumes. 646* 647* A: Fix the config deck and reboot. 648* 649* Message: 650* init_root_vols: root card specifies nonexistent drive DISK_VOL. 651* 652* S: $crash 653* 654* T: $init 655* 656* M: The volume DISK_VOL, specified in the config deck, is not 657* defined by the prph dskX cards. 658* 659* A: Fix the config deck and reboot. 660* 661* Message: 662* init_root_vols: RPV not found. 663* 664* S: $crash 665* 666* T: $init 667* 668* M: None of the disk volumes specified in the "root" card(s) 669* admitted to being the RPV. 670* 671* A: Check to be sure the drive on which the RPV is mounted is specified 672* first on the "root" card(s). 673* 674* Message: 675* init_root_vols: Error reading DISK_VOL label. PROBLEM ERROR_MESSAGE 676* 677* S: $crash 678* 679* T: $init 680* 681* M: An error has been detected attempting to read the label 682* of DISK_VOL. 683* 684* A: Correct problem and type "go" to retry the read. 685* 686* Message: 687* init_root_vols: No part hc on RPV volume DISK_VOL. 688* 689* S: $crash 690* 691* T: $init 692* 693* M: Disk DISK_VOL was specified on a "root" card as the RPV, 694* but does not have a hardcore (hc) partition. 695* 696* A: The "root" card is incorrect, or the wrong pack is mounted on 697* the first drive described by the "root" cards. 698* 699* Message: 700* init_root_vols: bce partition is XXX records, must be YYY. 701* 702* S: $crash 703* 704* T: $init 705* 706* M: The bce partition defined on the rpv is not sufficiently large. 707* 708* A: Rebuild the rpv to have a large enough bce partition. 709* $contact 710* 711* Message: 712* init_root_vols: Adding config (conf) partition to rpv. 713* 714* S: $info 715* 716* T: $init 717* 718* M: No conf partition was found on the rpv. It will be created by 719* extracting 4 records from the hc partition. 720* 721* A: $ignore 722* 723* Message: 724* init_root_vols: No room in rpv label for conf partition. 725* 726* S: $crash 727* 728* T: $info 729* 730* M: The partition map for the rpv did not have sufficient room to 731* add the conf partition. 732* 733* A: The rpv will need to be rebuilt. 734* $contact 735* 736* Message: 737* init_root_vols: Error writing rpv label on DISK_VOL. ERROR_MESSAGE 738* 739* S: $crash 740* 741* T: $init 742* 743* M: An i/o prevented updating the rpv label to show the new partitions. 744* 745* A: Correct problem and type "go" to retry the write. 746* 747* Message: 748* init_root_vols: Adding {bce} {file} {log} partition(s) to rpv. 749* 750* S: $info 751* 752* T: $init 753* 754* M: The rpv does not contain the listed partitions. The pages of 755* the rpv are being arranged to add these partitions. This operation 756* takes several minutes. 757* 758* A: $ignore 759* 760* Message: 761* init_root_vols: No room in rpv label for partitions. 762* 763* S: $crash 764* 765* T: $init 766* 767* M: The rpv label does not have enough room in the partition map for 768* the new bce, file or log partitions. 769* 770* A: The rpv will need to be rebuilt. 771* $contact 772* 773* Message: 774* init_root_vols: Error adding partitions to rpv on DISK_VOL. ERROR_MESSAGE 775* 776* S: $crash 777* 778* T: $init 779* 780* M: It was not possible to add the new partitions to the rpv. This 781* message will be preceeded by a more informative message. 782* 783* A: Depending on the previous message, either a reboot should be 784* attempted or the rpv will need to be rebuilt. 785* 786* Message: 787* init_root_vols: Error reading RPV label on DISK_VOL. PROBLEM ERROR_MESSAGE 788* 789* S: $crash 790* 791* T: $init 792* 793* M: An error has been detected attempting to read the label 794* of the RPV. 795* 796* A: Correct problem and type "go" to retry the read. 797* 798* Message: 799* init_root_vols: DISK_VOL is not the rpv, but rather is VOLUME. 800* 801* S: $crash 802* 803* T: $init 804* 805* M: The label for the RPV is inconsistent. label.root.here 806* does not agree with other data, or an incorrect pack is 807* mounted on the first drive specified by the "root" card. 808* 809* A: Reload/restore, or patch the RPV label back together or 810* correctly mount the RPV. 811* 812*END MESSAGE DOCUMENTATION */ 813 814 end init_root_vols; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0815.8 init_root_vols.pl1 >spec>install>1112>init_root_vols.pl1 578 1 10/22/86 1450.1 disk_pack.incl.pl1 >ldd>include>disk_pack.incl.pl1 579 2 05/27/82 1525.8 pvt.incl.pl1 >ldd>include>pvt.incl.pl1 580 3 07/21/88 2036.0 pvte.incl.pl1 >ldd>include>pvte.incl.pl1 581 4 07/11/84 0937.3 collection_1_phases.incl.pl1 >ldd>include>collection_1_phases.incl.pl1 582 5 07/17/87 0546.8 config_root_card.incl.pl1 >ldd>include>config_root_card.incl.pl1 583 6 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 584 7 07/21/88 2036.0 fs_vol_label.incl.pl1 >ldd>include>fs_vol_label.incl.pl1 585 8 10/30/86 2010.5 fs_dev_types.incl.pl1 >ldd>include>fs_dev_types.incl.pl1 8-142 9 07/24/86 2051.8 fs_dev_types_sector.incl.pl1 >ldd>include>fs_dev_types_sector.incl.pl1 586 10 07/11/84 0937.3 bce_partition_layout.incl.pl1 >ldd>include>bce_partition_layout.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANNOUNCE 000050 constant fixed bin(17,0) initial dcl 6-7 set ref 376* 411* BCE_PART_LTH 000000 constant fixed bin(17,0) initial dcl 10-7 set ref 332 335* CRASH 000053 constant fixed bin(17,0) initial dcl 6-7 set ref 182* 192* 201* 218* 235* 251* 270* 310* 318* 335* 381* 396* 440* 448* 486* 515* 522* DEFAULT_BCE_PART_SIZE constant fixed bin(17,0) initial dcl 291 ref 419 460 463 DEFAULT_FILE_PART_SIZE constant fixed bin(17,0) initial dcl 292 ref 426 468 471 DEFAULT_LOG_PART_SIZE constant fixed bin(17,0) initial dcl 293 ref 433 476 479 LABEL 000230 automatic structure level 1 dcl 85 set ref 148 LABEL_ADDR constant fixed bin(17,0) initial dcl 1-54 ref 392 482 ME 000006 constant char(16) initial packed unaligned dcl 137 set ref 182* 192* 201* 218* 235* 251* 270* 310* 318* 335* 376* 381* 396* 411* 440* 448* 486* 515* 522* Multics 500 000230 automatic char(32) initial level 2 dcl 85 set ref 85* ROOT_CARD_WORD 000002 constant char(4) initial dcl 5-35 set ref 156* SERVICE_INITIALIZATION constant fixed bin(17,0) initial dcl 4-12 ref 225 352 VALID_NUMBERS 000003 constant char(10) initial packed unaligned dcl 138 ref 167 addr builtin function dcl 141 ref 148 149 246 baseadd 002262 automatic fixed bin(18,0) dcl 288 set ref 354* 357* bce_part_idx 002257 automatic fixed bin(17,0) dcl 285 set ref 331* 332 332 335 346 411 417 457 459* 460 461 462 bce_partx 002316 automatic fixed bin(17,0) dcl 502 set ref 528* 529 532 533 bin builtin function dcl 141 ref 171 176 clock builtin function dcl 141 ref 146 code parameter fixed bin(35,0) dcl 64 set ref 61 145* 184* 193* 202* 222* 236* 253* 271* 297* 298 306* 308 310* 320* 337* 382* 392* 394 396* 441* 445* 446 448* 482* 484 486* 511* 513 515* 524* conf_partx 002274 automatic fixed bin(17,0) dcl 374 set ref 378* 379 385 386 387 390 400 config_$find 000034 constant entry external dcl 100 ref 156 convert builtin function dcl 141 ref 557 559 create_rpv_partition 000054 constant entry external dcl 112 ref 445 curtime 000222 automatic fixed bin(71,0) dcl 78 set ref 146* devname 3 based char(4) level 2 dcl 3-26 set ref 247 310* 310* 318* 318* 396* 396* 448* 448* 486* 486* 515* 515* 522* 522* disk_table_uid 705 based bit(36) level 3 dcl 7-18 ref 546 disk_table_vtocx 704 based fixed bin(17,0) level 3 dcl 7-18 ref 545 divide builtin function dcl 141 ref 161 drive 1 000100 automatic fixed bin(17,0) array level 3 in structure "root_vol_loc_info" dcl 66 in procedure "init_root_vols" set ref 198 209* 212 243 drive parameter fixed bin(8,0) packed unaligned dcl 554 in procedure "DEVICE_NAME" ref 551 557 559 drive 2 based char(4) array level 3 in structure "root_card" dcl 5-18 in procedure "init_root_vols" ref 165 drive_name 000215 automatic char(4) dcl 74 set ref 165* 167 171 176 177 182* 201* 218* drive_no 000216 automatic fixed bin(8,0) packed unaligned dcl 75 set ref 171* 176* 198 209 243* 247 251* 251* error_table_$bad_arg 000056 external static fixed bin(35,0) dcl 114 ref 184 202 222 253 271 error_table_$bad_volid 000060 external static fixed bin(35,0) dcl 114 ref 524 error_table_$invalid_elsize 000062 external static fixed bin(35,0) dcl 114 ref 337 error_table_$noalloc 000064 external static fixed bin(35,0) dcl 114 ref 382 441 error_table_$noarg 000066 external static fixed bin(35,0) dcl 114 ref 236 error_table_$nopart 000070 external static fixed bin(35,0) dcl 114 ref 320 error_table_$too_many_names 000072 external static fixed bin(35,0) dcl 114 ref 193 esd_state 706 based fixed bin(17,0) level 3 dcl 7-18 ref 543 file_part_idx 002260 automatic fixed bin(17,0) dcl 286 set ref 342* 346 411 424 465 467* 468 469 470 first_new_part 002304 automatic char(4) packed unaligned dcl 406 set ref 415* 421 421* 428 428* 435 435* 445* frec 1005 based fixed bin(17,0) array level 3 dcl 7-18 set ref 329 354 387* 387 400 455 462* 470* 478* 532 hbound builtin function dcl 141 ref 161 190 379 438 hc_part_idx 002264 automatic fixed bin(17,0) dcl 290 set ref 314* 316 327* 352 354 355 hc_part_used 4(32) based bit(1) level 2 packed packed unaligned dcl 3-26 set ref 363* hc_partx parameter fixed bin(17,0) dcl 372 ref 370 387 387 391 391 here 700 based bit(1) level 3 dcl 7-18 ref 520 index builtin function dcl 141 ref 177 init_empty_root 000036 constant entry external dcl 102 ref 297 init_hc_part 000040 constant entry external dcl 103 ref 357 label based structure level 1 dcl 7-18 labelp parameter pointer dcl 373 in procedure "ADD_CONF_PART" set ref 370 378 379 385 386 387 387 387 390 391 391 392* 400 labelp 002236 automatic pointer dcl 7-16 in procedure "init_root_vols" set ref 148* 306* 314* 326* 327* 329 331* 332 335 342* 344* 354 355 416 438 445* 455 455 456 456 459 459 460 461 462 467 467 468 469 470 475 475 476 477 478 482* 511* 520 522 528* 532 533 536 537 538 539 540 542 543 545 546 labelp parameter pointer dcl 567 in procedure "PART_SEARCH" ref 563 569 569 572 last_part_idx 002305 automatic fixed bin(17,0) dcl 407 set ref 416* 420* 420 427* 427 434* 434 438 log_part_idx 002261 automatic fixed bin(17,0) dcl 287 set ref 344* 346 411 431 473 475* 476 477 478 logical_area_number 4(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 3-26 set ref 247 310* 310* 318* 318* 396* 396* 448* 448* 486* 486* 515* 515* 522* 522* lvid 1 based bit(36) level 2 in structure "pvte" dcl 3-26 in procedure "init_root_vols" set ref 538* lvid 542 based bit(36) level 2 in structure "label" dcl 7-18 in procedure "init_root_vols" ref 538 540 make_sdw$thread_hcp 000042 constant entry external dcl 104 ref 361 n_fields 17(32) based fixed bin(4,0) level 3 packed packed unsigned unaligned dcl 5-18 ref 161 n_roots_found 000220 automatic fixed bin(17,0) dcl 77 set ref 154* 188* 188 190 192 197 207 209 210 212 232 240 nparts 1003 based fixed bin(17,0) level 2 dcl 7-18 set ref 378 385* 416 455 456* 456 459 459* 467 467* 475 475* 569 572 nrec 1006 based fixed bin(17,0) array level 3 dcl 7-18 set ref 332 335* 355 387 390* 391* 391 460* 468* 476* 533 null builtin function dcl 141 ref 155 158 p99 automatic picture(2) packed unaligned dcl 555 ref 557 559 part parameter char(4) packed unaligned dcl 565 in procedure "PART_SEARCH" ref 563 569 part 1004 based char(4) array level 3 in structure "label" dcl 7-18 in procedure "init_root_vols" set ref 386* 461* 469* 477* 569 part_idx 002256 automatic fixed bin(17,0) dcl 284 in procedure "INIT_HC_PART" set ref 326* 327 329 part_idx 002334 automatic fixed bin(17,0) dcl 566 in procedure "PART_SEARCH" set ref 569* 569* 572 572 partition_start 002306 automatic fixed bin(17,0) dcl 408 set ref 455* 462 463* 463 470 471* 471 478 479* 479 parts 1004 based structure array level 2 dcl 7-18 set ref 379 438 permanent 4(20) based bit(1) level 2 packed packed unaligned dcl 3-26 set ref 366* problem 000175 automatic char(64) packed unaligned dcl 73 set ref 306* 310* 511* 515* pv_name 521 based char(32) level 2 dcl 7-18 set ref 522* pvid 541 based bit(36) level 2 in structure "label" dcl 7-18 in procedure "init_root_vols" ref 536 537 pvid based bit(36) level 2 in structure "pvte" dcl 3-26 in procedure "init_root_vols" set ref 537* pvt$array 000110 external static fixed bin(17,0) dcl 3-18 set ref 149 pvt$disk_table_uid 000026 external static bit(36) dcl 96 set ref 546* pvt$disk_table_vtocx 000024 external static fixed bin(17,0) dcl 95 set ref 545* pvt$n_entries 000030 external static fixed bin(17,0) dcl 97 ref 245 pvt$prev_esd_state 000022 external static fixed bin(17,0) dcl 94 set ref 543* pvt$prev_shutdown_state 000020 external static fixed bin(17,0) dcl 92 set ref 542* pvt$root_lvid 000016 external static bit(36) dcl 91 set ref 540* pvt$root_pvid 000014 external static bit(36) dcl 90 set ref 536* pvt$root_pvtx 000012 external static fixed bin(17,0) dcl 89 set ref 508* pvt$root_vtocx 000032 external static fixed bin(17,0) dcl 98 set ref 268 539* pvt_array based structure array level 1 dcl 3-24 set ref 246 pvt_arrayp 002230 automatic pointer dcl 3-21 set ref 149* 246 pvte based structure level 1 dcl 3-26 pvtep 002232 automatic pointer dcl 3-22 set ref 246* 247 247 247 256 260 264 295 310 310 310 310 310 310 316 318 318 318 318 318 318 324 363 366 396 396 396 396 396 396 448 448 448 448 448 448 486 486 486 486 486 486 515 515 515 515 515 515 522 522 522 522 522 522 537 538 read_disk_label 000044 constant entry external dcl 105 ref 306 511 root 700 based structure level 2 dcl 7-18 root_card based structure level 1 dcl 5-18 root_card_array based structure level 1 dcl 5-29 root_cardp 002234 automatic pointer dcl 5-16 set ref 155* 156* 158 161 161 163 165 root_idx 000225 automatic fixed bin(17,0) dcl 80 set ref 197* 198 198 198* 240* 241 243 244 256* root_lv 2(04) based bit(1) level 2 packed packed unaligned dcl 3-26 set ref 260* root_vol_loc_info 000100 automatic structure level 1 dcl 66 root_vtocx 701 based fixed bin(35,0) level 3 dcl 7-18 ref 539 roots 000100 automatic structure array level 2 dcl 66 set ref 190 rpv 4(26) based bit(1) level 2 packed packed unaligned dcl 3-26 set ref 256* 264 295 316 324 rtrim builtin function dcl 141 ref 167 177 seek_command 002240 automatic bit(6) initial array packed unaligned dcl 8-84 set ref 8-84* 8-84* 8-84* 8-84* 8-84* 8-84* 8-84* 8-84* 8-84* shutdown_state 702 based fixed bin(17,0) level 3 dcl 7-18 ref 542 sst$root_pvtx 000010 external static fixed bin(17,0) dcl 88 set ref 509* substr builtin function dcl 141 ref 176 177 subsys 000100 automatic char(4) array level 3 in structure "root_vol_loc_info" dcl 66 in procedure "init_root_vols" set ref 198 207* 241 subsys parameter char(4) dcl 553 in procedure "DEVICE_NAME" ref 551 557 559 subsys_name 000174 automatic char(4) dcl 72 set ref 163* 182* 198 201* 207 241* 247 251* 251* subsystem 1 based char(4) array level 3 dcl 5-18 ref 163 subvol 2 000100 automatic fixed bin(17,0) array level 3 dcl 66 set ref 198 210* 212 244 sv parameter fixed bin(17,0) dcl 556 ref 551 557 559 sv_idx 000224 automatic fixed bin(17,0) dcl 79 set ref 167* 169 174 176 177 sv_no 000217 automatic fixed bin(17,0) dcl 76 set ref 172* 177* 178 198 210 244* 247 251* 251* sv_num 11 based fixed bin(17,0) level 2 dcl 3-26 set ref 247 310* 310* 318* 318* 396* 396* 448* 448* 486* 486* 515* 515* 522* 522* sys_boot_info$assume_config_deck 000074 external static bit(1) packed unaligned dcl 124 ref 212 sys_boot_info$bce_part_frec 000114 external static fixed bin(18,0) dcl 503 set ref 529* 532* sys_boot_info$bce_part_nrec 000116 external static fixed bin(18,0) dcl 505 set ref 533* sys_boot_info$config_part_frec 000076 external static fixed bin(18,0) dcl 126 set ref 329* 400* sys_boot_info$disk_device_has_sv 000100 external static bit(1) dcl 128 set ref 218* sys_boot_info$disk_device_number 000104 external static fixed bin(6,0) dcl 132 set ref 212 218* sys_boot_info$disk_device_sv 000102 external static fixed bin(17,0) dcl 130 set ref 212 218* sys_boot_info$rpv_cold_boot 000106 external static bit(1) dcl 134 ref 295 sys_info$collection_1_phase 000112 external static fixed bin(17,0) dcl 4-8 ref 225 352 syserr 000050 constant entry external dcl 108 ref 182 192 201 218 235 251 270 318 335 376 381 411 440 522 syserr$error_code 000052 constant entry external dcl 108 ref 310 396 448 486 515 total_part_size 002307 automatic fixed bin(17,0) dcl 409 set ref 414* 419* 419 426* 426 433* 433 445* totrec 002263 automatic fixed bin(18,0) dcl 289 set ref 355* 357* tx 000227 automatic fixed bin(17,0) dcl 83 set ref 245* 246* 297* 306* 357* 361* 392* 445* 482* 508 509 511* type_word 17 based structure level 2 dcl 5-18 valid_sv_array constant char(1) initial array packed unaligned dcl 8-99 ref 559 valid_sv_string 000001 constant char(3) initial packed unaligned dcl 8-96 ref 177 verify builtin function dcl 141 ref 167 vol_idx 000226 automatic fixed bin(17,0) dcl 81 set ref 161* 163 165* volume 1 based structure array level 2 in structure "root_card_array" dcl 5-29 in procedure "init_root_vols" ref 161 volume 1 based structure array level 2 in structure "root_card" dcl 5-18 in procedure "init_root_vols" write_disk 000046 constant entry external dcl 106 ref 392 482 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BCE_CRASH_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-20 BCE_PAGING_AREA_LTH internal static fixed bin(17,0) initial dcl 10-11 BCE_PAGING_AREA_RECORDX internal static fixed bin(17,0) initial dcl 10-10 BEEP internal static fixed bin(17,0) initial dcl 6-7 BOOT_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-11 COLLECTION_1_PHASE_NAMES internal static char(16) initial array packed unaligned dcl 4-23 CRASH_HANDLER_RECORDX internal static fixed bin(17,0) initial dcl 10-9 CRASH_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-18 DEFAULT_HCPART_SIZE internal static fixed bin(17,0) initial dcl 1-54 DUMPER_BIT_MAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 EARLY_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-10 JUST_LOG internal static fixed bin(17,0) initial dcl 6-7 LOG internal static fixed bin(17,0) initial dcl 6-7 MAX_VTOCE_PER_PACK internal static fixed bin(17,0) initial dcl 1-54 MODEL internal static fixed bin(17,0) initial array dcl 8-57 MODELN internal static fixed bin(17,0) initial array dcl 8-63 MODELX internal static fixed bin(17,0) initial array dcl 8-60 MST_AREA_RECORDX internal static fixed bin(17,0) initial dcl 10-12 Multics_ID_String internal static char(32) initial packed unaligned dcl 7-92 PAGE_SIZE internal static fixed bin(17,0) initial dcl 1-67 RE_EARLY_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-19 SAVED_IMAGE_RECORDX internal static fixed bin(17,0) initial dcl 10-8 SECTORS_PER_RECORD internal static fixed bin(17,0) initial array dcl 1-74 SECTORS_PER_VTOCE internal static fixed bin(17,0) initial array dcl 1-70 SHUT_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-21 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 6-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 6-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 6-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 6-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 6-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 6-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 6-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 6-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 6-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 6-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 6-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 6-7 VOLMAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 3-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 3-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 3-113 VTOCES_PER_RECORD internal static fixed bin(17,0) initial array dcl 1-72 VTOCE_SIZE internal static fixed bin(17,0) initial dcl 1-68 VTOC_MAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 VTOC_ORIGIN internal static fixed bin(17,0) initial dcl 1-54 bulkdevt internal static fixed bin(4,0) initial dcl 8-43 cyl_per_dev internal static fixed bin(17,0) initial array dcl 8-102 cyl_per_sv internal static fixed bin(17,0) initial array dcl 8-105 dev_time internal static float bin(27) initial array dcl 8-139 device_names internal static char(4) initial array dcl 8-66 dsu181devt internal static fixed bin(4,0) initial dcl 8-43 dsu190devt internal static fixed bin(4,0) initial dcl 8-43 dsu191devt internal static fixed bin(4,0) initial dcl 8-43 fips3380devt internal static fixed bin(4,0) initial dcl 8-43 fips3381devt internal static fixed bin(4,0) initial dcl 8-43 fips_type_disk internal static bit(1) initial array packed unaligned dcl 8-72 first_alt_sect_num internal static fixed bin(24,0) initial array dcl 8-130 first_dev_number internal static fixed bin(17,0) initial array dcl 8-69 first_rec_num internal static fixed bin(17,0) initial array dcl 8-115 first_sect_num internal static fixed bin(24,0) initial array dcl 8-124 last_alt_sect_num internal static fixed bin(24,0) initial array dcl 8-133 last_physical_sect_num internal static fixed bin(24,0) initial array dcl 8-136 last_rec_num internal static fixed bin(18,0) initial array dcl 8-118 last_sect_num internal static fixed bin(24,0) initial array dcl 8-127 last_sv_rec_num internal static fixed bin(18,0) initial array dcl 8-121 maxdevt internal static fixed bin(4,0) initial dcl 8-43 media_removable internal static bit(1) initial array packed unaligned dcl 8-75 msu0400devt internal static fixed bin(4,0) initial dcl 8-43 msu0450devt internal static fixed bin(4,0) initial dcl 8-43 msu0451devt internal static fixed bin(4,0) initial dcl 8-43 msu0500devt internal static fixed bin(4,0) initial dcl 8-43 msu0501devt internal static fixed bin(4,0) initial dcl 8-43 needs_alt_part internal static bit(1) initial array packed unaligned dcl 8-81 number_of_sv internal static fixed bin(17,0) initial array dcl 8-93 pvt based structure level 1 dcl 2-13 pvt$ external static fixed bin(17,0) dcl 2-9 pvt$max_n_entries external static fixed bin(17,0) dcl 3-19 pvtp automatic pointer dcl 2-9 rec_per_cyl internal static fixed bin(17,0) initial array dcl 8-108 rec_per_dev internal static fixed bin(21,0) initial array dcl 8-87 rec_per_sv internal static fixed bin(17,0) initial array dcl 8-90 sect_per_cyl internal static fixed bin(17,0) initial array dcl 9-15 sect_per_rec internal static fixed bin(17,0) initial array dcl 9-21 sect_per_sv internal static fixed bin(24,0) initial array dcl 9-18 sect_per_track internal static fixed bin(17,0) initial array dcl 9-33 sect_per_vtoc internal static fixed bin(17,0) initial array dcl 9-26 shared_spindle internal static bit(1) initial array packed unaligned dcl 8-78 tracks_per_cyl internal static fixed bin(17,0) initial array dcl 8-111 vtoc_per_rec internal static fixed bin(17,0) initial array dcl 9-29 words_per_sect internal static fixed bin(17,0) initial array dcl 9-36 NAMES DECLARED BY EXPLICIT CONTEXT. ADD_BM_PARTS 002231 constant entry internal dcl 404 ref 346 ADD_CONF_PART 002005 constant entry internal dcl 370 ref 327 ALL_ROOT_CARDS_GOTTEN 001144 constant label dcl 232 ref 158 225 DEVICE_NAME 003175 constant entry internal dcl 551 ref 251 251 310 310 318 318 396 396 448 448 486 486 515 515 522 522 ENABLE_RPV 002721 constant entry internal dcl 494 ref 264 FIND_MORE_ROOT_CARDS 000506 constant label dcl 156 ref 229 FOUND_ROOT_VOL_PVTE 001312 constant label dcl 256 ref 247 INIT_HC_PART 001371 constant entry internal dcl 278 ref 262 PART_SEARCH 003310 constant entry internal dcl 563 ref 314 326 331 342 344 528 READ_LABEL 001415 constant label dcl 306 ref 312 READ_RPV_LABEL 002727 constant label dcl 511 ref 517 RETURN 001370 constant label dcl 274 ref 185 194 203 223 237 254 272 298 321 339 383 442 450 525 WRITE_LABEL 002117 constant label dcl 392 in procedure "ADD_CONF_PART" ref 398 WRITE_LABEL 002620 constant label dcl 482 in procedure "ADD_BM_PARTS" ref 488 init_root_vols 000373 constant entry external dcl 61 invalid_drive 000647 constant label dcl 182 ref 178 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4300 4420 3657 4310 Length 5072 3657 120 435 421 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME init_root_vols 1696 external procedure is an external procedure. INIT_HC_PART internal procedure shares stack frame of external procedure init_root_vols. ADD_CONF_PART internal procedure shares stack frame of external procedure init_root_vols. ADD_BM_PARTS internal procedure shares stack frame of external procedure init_root_vols. ENABLE_RPV internal procedure shares stack frame of external procedure init_root_vols. DEVICE_NAME internal procedure shares stack frame of external procedure init_root_vols. PART_SEARCH internal procedure shares stack frame of external procedure init_root_vols. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME init_root_vols 000100 root_vol_loc_info init_root_vols 000174 subsys_name init_root_vols 000175 problem init_root_vols 000215 drive_name init_root_vols 000216 drive_no init_root_vols 000217 sv_no init_root_vols 000220 n_roots_found init_root_vols 000222 curtime init_root_vols 000224 sv_idx init_root_vols 000225 root_idx init_root_vols 000226 vol_idx init_root_vols 000227 tx init_root_vols 000230 LABEL init_root_vols 002230 pvt_arrayp init_root_vols 002232 pvtep init_root_vols 002234 root_cardp init_root_vols 002236 labelp init_root_vols 002240 seek_command init_root_vols 002256 part_idx INIT_HC_PART 002257 bce_part_idx INIT_HC_PART 002260 file_part_idx INIT_HC_PART 002261 log_part_idx INIT_HC_PART 002262 baseadd INIT_HC_PART 002263 totrec INIT_HC_PART 002264 hc_part_idx INIT_HC_PART 002274 conf_partx ADD_CONF_PART 002304 first_new_part ADD_BM_PARTS 002305 last_part_idx ADD_BM_PARTS 002306 partition_start ADD_BM_PARTS 002307 total_part_size ADD_BM_PARTS 002316 bce_partx ENABLE_RPV 002334 part_idx PART_SEARCH THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return_mac ext_entry set_chars_eis index_chars_eis any_to_any_truncate_clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. config_$find create_rpv_partition init_empty_root init_hc_part make_sdw$thread_hcp read_disk_label syserr syserr$error_code write_disk THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_volid error_table_$invalid_elsize error_table_$noalloc error_table_$noarg error_table_$nopart error_table_$too_many_names pvt$array pvt$disk_table_uid pvt$disk_table_vtocx pvt$n_entries pvt$prev_esd_state pvt$prev_shutdown_state pvt$root_lvid pvt$root_pvid pvt$root_pvtx pvt$root_vtocx sst$root_pvtx sys_boot_info$assume_config_deck sys_boot_info$bce_part_frec sys_boot_info$bce_part_nrec sys_boot_info$config_part_frec sys_boot_info$disk_device_has_sv sys_boot_info$disk_device_number sys_boot_info$disk_device_sv sys_boot_info$rpv_cold_boot sys_info$collection_1_phase LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 61 000370 85 000400 8 84 000403 145 000472 146 000474 148 000476 149 000500 154 000503 155 000504 156 000506 158 000517 161 000523 163 000535 165 000541 167 000543 169 000567 171 000570 172 000603 173 000605 174 000606 176 000610 177 000623 178 000644 180 000646 182 000647 184 000702 185 000706 188 000707 190 000710 192 000713 193 000745 194 000751 197 000752 198 000761 201 000776 202 001031 203 001035 205 001036 207 001040 209 001044 210 001050 212 001052 218 001066 222 001130 223 001134 225 001135 227 001141 229 001143 232 001144 235 001146 236 001172 237 001176 240 001177 241 001205 243 001210 244 001214 245 001216 246 001227 247 001233 249 001251 251 001253 253 001305 254 001311 256 001312 260 001317 262 001321 264 001322 266 001327 268 001331 270 001335 271 001363 272 001367 274 001370 278 001371 295 001372 297 001401 298 001412 306 001415 308 001443 310 001446 312 001526 314 001527 316 001533 318 001544 320 001612 321 001616 324 001617 326 001621 327 001625 329 001633 331 001640 332 001644 335 001655 337 001710 339 001714 342 001715 344 001721 346 001725 352 001737 354 001745 355 001753 357 001755 361 001767 363 001776 366 002001 367 002004 370 002005 376 002007 378 002033 379 002041 381 002043 382 002067 383 002073 385 002074 386 002075 387 002100 390 002110 391 002112 392 002117 394 002140 396 002143 398 002217 400 002220 401 002230 404 002231 411 002232 414 002304 415 002305 416 002307 417 002312 419 002315 420 002317 421 002320 424 002327 426 002332 427 002334 428 002335 431 002344 433 002347 434 002351 435 002352 438 002361 440 002364 441 002410 442 002414 445 002415 446 002435 448 002440 450 002514 455 002515 456 002522 457 002524 459 002527 460 002533 461 002537 462 002543 463 002546 465 002550 467 002553 468 002557 469 002563 470 002567 471 002572 473 002574 475 002577 476 002603 477 002607 478 002613 479 002616 482 002620 484 002640 486 002643 488 002717 490 002720 494 002721 508 002722 509 002725 511 002727 513 002755 515 002760 517 003040 520 003041 522 003044 524 003120 525 003124 528 003125 529 003131 532 003140 533 003146 536 003150 537 003153 538 003155 539 003160 540 003162 542 003164 543 003166 545 003170 546 003172 548 003174 551 003175 557 003177 559 003243 563 003310 569 003312 571 003335 572 003337 574 003347 ----------------------------------------------------------- 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