COMPILATION LISTING OF SEGMENT display_disk_label Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1027.1 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 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 /* format: style4,initcol1,indattr,declareind8,dclind4,idind33,ifthenstmt,ifthen,^indproc,delnl,insnl */ 13 14 display_disk_label: 15 ddl: 16 proc; 17 18 /* display_disk_label (or ddl), display_pvte 19* 20* Commands to display the label and/or PVTE of a mounted Storage 21* System volume. 22* 23* Calling sequence: 24* 25* {display_disk_label|display_pvte} {dskX_NN | PVNAME | PVID} {-control_args} 26* 27* If display_disk_label is called, the default is to display information 28* from the volume label only. If display_pvte is called, the 29* default is to display information from the PVTE only. 30* 31* Control Arguments: 32* 33* -pvid PVID 34* selects the volume with Physical Volume ID PVID 35* 36* -long, -lg 37* for display_disk_label, also displays information from the PVTE 38* for display_pvte, also displays information form the label 39* 40* 41* Written November 1981 by J. Bongiovanni 42* Modified March 1982, J. Bongiovanni, for record stocks 43* Modified August 1982, J. Bongiovannni, for usage message, print more flags, 44* the scavenger, and ALT partition 45* Modified August 1984, Allen Ball, to make compatiable with 46* bce_display_disk_label by using new subroutine display_disk_label_. 47**/ 48 49 /****^ HISTORY COMMENTS: 50* 1) change(86-01-16,Fawcett), approve(86-04-10,MCR7383), 51* audit(86-06-30,Coppola), install(86-07-18,MR12.0-1098): 52* Add support for subvolumes, and 512_WORD_IO, 3380 and 3390. 53* 2) change(86-11-20,Lippard), approve(86-12-08,MCR7591), 54* audit(87-01-21,Beattie), install(87-03-23,MR12.1-1009): 55* Fix bug: stop losing a bit when converting pvid. 56* 3) change(88-03-30,GWMay), approve(88-04-12,MCR7867), 57* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 58* Changed to display octal numbers with "o". 59* 4) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 60* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 61* Changed to display the status of volume dumper bit maps. 62* END HISTORY COMMENTS */ 63 64 label_call = "1"b; 65 do_label = "1"b; 66 do_pvte = "0"b; 67 myname = "display_disk_label"; 68 goto COMMON; 69 70 display_pvte: 71 entry; 72 73 label_call = "0"b; 74 do_label = "0"b; 75 do_pvte = "1"b; 76 myname = "display_pvte"; 77 78 79 /* Romp through arguments, validating them */ 80 81 COMMON: 82 have_sv, have_subsys_unit, have_pvname, have_pvid = "0"b; 83 unit, subvol_num = 0; 84 85 call cu_$arg_count (nargs, code); 86 if code ^= 0 then do; 87 call com_err_ (code, myname); 88 return; 89 end; 90 91 if nargs = 0 then do; 92 USAGE: 93 call com_err_ (error_table_$noarg, myname, " 94 Usage: ^a {-long, -lg}", myname); 95 return; 96 end; 97 98 do arg_no = 1 to nargs; 99 100 call cu_$arg_ptr (arg_no, argp, argl, code); 101 if code ^= 0 then do; 102 call com_err_ (code, myname, "Argument ^d", arg_no); 103 return; 104 end; 105 106 if substr (arg, 1, 1) ^= "-" then do; /* dskX_NN or pvname or pvid */ 107 if arg_no ^= 1 then do; /* Which must be 1st argument */ 108 BAD_OPT: 109 call com_err_ (error_table_$badopt, myname, arg); 110 return; 111 end; 112 if substr (arg, 1, 3) = "dsk" & (argl = 7 | argl = 8) then 113 if substr (arg, 5, 1) = "_" then do; 114 /* dskX_NN */ 115 subsys_name = substr (arg, 1, 4); 116 unit = cv_dec_check_ (substr (arg, 6, 2), code); 117 if code ^= 0 then do; 118 BAD_DISK: 119 call com_err_ (0, myname, "Invalid disk unit ^a", arg); 120 return; 121 end; 122 if argl = 8 then do; 123 subvol_num = index (valid_sv_string, substr (arg, 8, 1)) - 1; 124 if subvol_num < 0 then goto BAD_DISK; 125 have_sv = "1"b; 126 end; 127 have_subsys_unit = "1"b; 128 end; 129 if ^have_subsys_unit then do; /* pvname or pvid */ 130 pvid_bin = cv_oct_check_ (arg, code); 131 if code = 0 then do; 132 pvid = unspec (pvid_bin); 133 have_pvid = "1"b; 134 end; 135 else do; 136 pvname = arg; 137 have_pvname = "1"b; 138 end; 139 end; 140 end; 141 142 else if arg = "-pvid" then do; 143 arg_no = arg_no + 1; 144 call cu_$arg_ptr (arg_no, argp, argl, code); 145 if code ^= 0 then do; 146 call com_err_ (code, myname, "PVID"); 147 return; 148 end; 149 pvid_bin = cv_oct_check_ (arg, code); 150 if code ^= 0 then do; 151 call com_err_ (0, myname, "Invalid PVID ^a", arg); 152 return; 153 end; 154 pvid = unspec (pvid_bin); 155 have_pvid = "1"b; 156 end; 157 158 else if arg = "-long" | arg = "-lg" then do; 159 if label_call then 160 do_pvte = "1"b; 161 else do_label = "1"b; 162 end; 163 164 else goto BAD_OPT; 165 166 end; 167 168 if ^have_pvname & ^have_subsys_unit & ^have_pvid then go to USAGE; 169 170 if (have_pvname | have_subsys_unit) & have_pvid then do; 171 call com_err_ (error_table_$inconsistent, myname, "^[^a^;^1s^]^[^a_^a^;^2s^] and -pvid", have_pvname, 172 pvname, have_subsys_unit, subsys_name, convert (unit_pic, unit)); 173 return; 174 end; 175 176 /* Copy the PVT and stock_seg from ring-0 */ 177 178 temp_segp (1) = null (); 179 180 on cleanup call clean_me_out; 181 182 call get_temp_segments_ (myname, temp_segp, code); 183 if code ^= 0 then do; 184 call com_err_ (code, myname, "Getting temp segments"); 185 return; 186 end; 187 pvtp = temp_segp (1); 188 labelp = temp_segp (2); 189 stock_segp = temp_segp (3); 190 191 call copy_ring0_seg ("pvt", pvtp, r0_pvtp); 192 call copy_ring0_seg ("stock_seg", stock_segp, r0_stock_segp); 193 194 call ring0_get_$segptr ("", "scavenger_data", r0_scav_datap, code); 195 if code ^= 0 then do; 196 call com_err_ (code, myname, "scavenger_data"); 197 call clean_me_out; 198 return; 199 end; 200 201 pvt_arrayp = addr (pvt.array); 202 203 204 205 /* Find pvtx and pvid (possibly pvname, too) for unit */ 206 207 if have_subsys_unit then do; /* Given dskX_NN */ 208 found_pvte = "0"b; 209 do pvtx = 1 repeat pvtx + 1 while (^found_pvte & pvtx <= pvt.n_entries); 210 pvtep = addr (my_pvt_array (pvtx)); 211 if pvte.devname = subsys_name & pvte.logical_area_number = unit & pvte.used then do; 212 found_pvte = "1"b; 213 if have_sv & pvte.sv_num ^= subvol_num then found_pvte = "0"b; 214 /* wrong Subvolume */ 215 if pvte.is_sv & ^have_sv then do; /* must specify Subvolume to display */ 216 call com_err_ (error_table_$subvol_needed, myname, "^a_^a", subsys_name, 217 convert (unit_pic, unit)); 218 call clean_me_out; 219 return; 220 end; 221 if have_sv & ^pvte.is_sv then do; /* must NOT specify Subvolume */ 222 call com_err_ (error_table_$subvol_invalid, myname, "^a_^a", subsys_name, 223 convert (unit_pic, unit)); 224 call clean_me_out; 225 return; 226 end; 227 end; 228 end; 229 if ^found_pvte then do; 230 call com_err_ (0, myname, "^a_^a^[^a^;^1s^] not found in PVT", subsys_name, convert (unit_pic, unit), 231 have_sv, substr (valid_sv_string, subvol_num + 1, 1)); 232 call clean_me_out; 233 return; 234 end; 235 pvid = pvte.pvid; 236 call pvname_to_pvtx_$pvid (pvid, pvtx, pvname, code); 237 if code ^= 0 then do; 238 call com_err_ (code, myname, "PVID ^wo", pvid); 239 call clean_me_out; 240 return; 241 end; 242 end; 243 244 else if have_pvname then do; /* pvname given */ 245 call pvname_to_pvtx_ (pvname, pvtx, pvid, code); 246 if code ^= 0 then do; 247 call com_err_ (code, myname, pvname); 248 call clean_me_out; 249 return; 250 end; 251 pvtep = addr (my_pvt_array (pvtx)); 252 end; 253 254 else do; 255 call pvname_to_pvtx_$pvid (pvid, pvtx, pvname, code); 256 if code ^= 0 then do; 257 call com_err_ (code, myname, "PVID ^wo", pvid); 258 call clean_me_out; 259 return; 260 end; 261 pvtep = addr (my_pvt_array (pvtx)); 262 end; 263 264 if pvte.is_sv then do; 265 if have_subsys_unit & ^have_sv then max_pvtx = pvtx + (pvte.num_of_svs - 1); 266 max_pvtx = pvtx; 267 end; 268 else max_pvtx = pvtx; 269 270 do pvtx = pvtx to max_pvtx; 271 pvtep = addr (my_pvt_array (pvtx)); 272 273 274 275 if do_label then do; 276 277 278 /* Read the disk label, printing an error message on no access */ 279 280 on linkage_error goto LINKAGE_ERROR; 281 282 call phcs_$read_disk_label (pvid, labelp, code); 283 284 revert linkage_error; 285 286 if code ^= 0 then do; 287 call com_err_ (code, myname, pvname); 288 call clean_me_out; 289 return; 290 end; 291 292 /* Print the label in reasonable form */ 293 294 call ioa_ ("^/Label for Multics Storage System Volume ^a on ^a_^a^[^a^;^1s^] ^a ^[(Private)^;^1s^]^/", 295 pvname, pvte.devname, convert (unit_pic, pvte.logical_area_number), pvte.is_sv, pvte.sv_name, 296 device_names (pvte.device_type), label.private); 297 call display_disk_label_ (labelp); 298 end; 299 300 if do_pvte then do; 301 call ioa_ ("^/PVTE for Multics Storage System Volume ^a on ^a_^a^[^a^;^1s^] ^a at pvt|^o^/", pvname, 302 pvte.devname, convert (unit_pic, pvte.logical_area_number), pvte.is_sv, pvte.sv_name, 303 device_names (pvte.device_type), rel (pvtep)); 304 305 call ioa_ ("PVID^-^-^wo^/LVID^-^-^wo^/", pvte.pvid, pvte.lvid); 306 call ioa_ ("VTOCEs^/ Number^-^-^8d (^oo)^/ Left^-^-^8d (^oo)", pvte.n_vtoce, pvte.n_vtoce, 307 pvte.n_free_vtoce, pvte.n_free_vtoce); 308 call ioa_ ("^/Records^/ Number^-^-^8d (^oo)^/ Left^-^-^8d (^oo)", pvte.totrec, pvte.totrec, 309 pvte.nleft, pvte.nleft); 310 if pvte.is_sv then 311 call ioa_ ( 312 "^/Subvolume Info^/ sv_num^-^-^8d^/ num_of_svs^-^8d^/ record_factor^-^8d^/ records_per_cyl^-^8d", 313 pvte.sv_num, pvte.num_of_svs, pvte.record_factor, pvte.records_per_cyl); 314 call ioa_ ("^/Inconsistencies^-^8d", pvte.vol_trouble_count); 315 call ioa_ (" 316 The volume dumper bit maps located at dbm_seg|^o and dbm_seg|^o 317 are ^[NOT ^]consistent.", pvte.dbmrp (1), pvte.dbmrp (2), pvte.inconsistent_dbm); 318 319 if unspec (pvte.volmap_astep) ^= ""b & pvte.volmap_astep ^= null () then do; 320 call ioa_ ("^/Volume Map^/ volmap_seg ASTE^-^a", convert_ptr (pvte.volmap_astep)); 321 if unspec (pvte.volmap_stock_ptr) ^= ""b & pvte.volmap_stock_ptr ^= null () then do; 322 record_stockp = ptr (stock_segp, rel (pvte.volmap_stock_ptr)); 323 if pvte.volmap_stock_ptr = ptr (r0_stock_segp, rel (record_stockp)) 324 & record_stock.pvtep = ptr (r0_pvtp, rel (pvtep)) then do; 325 call ioa_ (" record stock^-^a", convert_ptr (pvte.volmap_stock_ptr)); 326 bias = 64 * 32; /* Old volume map kludge */ 327 do volmap_pagex = 1 to record_stock.n_volmap_pages; 328 call ioa_ (" Page ^1d - Base^-^8o^/^11xFree^-^8o", volmap_pagex - 1, 329 record_stock.volmap_page (volmap_pagex).baseadd + bias, 330 record_stock.volmap_page (volmap_pagex).n_free); 331 bias = 0; 332 end; 333 call ioa_ (" vtoce stock^-^a", convert_ptr (pvte.vtoc_map_stock_ptr)); 334 end; 335 end; 336 end; 337 338 339 if pvte.scavenger_block_rel ^= ""b then 340 call ioa_ ("^/Scavenge in progress^/ scavenger block^-^a", 341 convert_ptr ((ptr (r0_scav_datap, pvte.scavenger_block_rel)))); 342 343 on_string = "^/ON:^-"; 344 off_string = "^/OFF:^-"; 345 on_line_l = 0; 346 off_line_l = 0; 347 call set_on_off (pvte.used, "used"); 348 call set_on_off (pvte.is_sv, "is_sv"); 349 call set_on_off (pvte.storage_system, "storage_system"); 350 call set_on_off (pvte.root_lv, "root_lv"); 351 call set_on_off (pvte.rpv, "rpv"); 352 call set_on_off (pvte.permanent, "permanent"); 353 call set_on_off (pvte.testing, "testing"); 354 call set_on_off (pvte.being_mounted, "being_mounted"); 355 call set_on_off (pvte.being_demounted, "being_demounted"); 356 call set_on_off (pvte.removable_pack, "removable_pack"); 357 call set_on_off (pvte.check_read_incomplete, "check_read_incomplete"); 358 call set_on_off (pvte.device_inoperative, "device_inoperative"); 359 call set_on_off (pvte.scav_check_address, "scav_check_address"); 360 call set_on_off (pvte.deposit_to_volmap, "deposit_to_volmap"); 361 call set_on_off (pvte.being_demounted2, "being_demounted2"); 362 call set_on_off (pvte.pc_vacating, "pc_vacating"); 363 call set_on_off (pvte.vacating, "vacating"); 364 call set_on_off (pvte.hc_part_used, "hc_part_used"); 365 call set_on_off (pvte.volmap_lock_notify, "volmap_lock_notify"); 366 call set_on_off (pvte.volmap_idle_notify, "volmap_idle_notify"); 367 call set_on_off (pvte.vtoc_map_lock_notify, "vtoc_map_lock_notify"); 368 call set_on_off (pvte.dmpr_in_use (incr), "dmpr_in_use(incr)"); 369 call set_on_off (pvte.dmpr_in_use (cons), "dmpr_in_use(cons)"); 370 call set_on_off (pvte.dmpr_in_use (comp), "dmpr_in_use(comp)"); 371 372 call ioa_ (rtrim (on_string)); 373 call ioa_ (rtrim (off_string)); 374 375 call ioa_ ("^/Volume Map from PVTE"); 376 call ioa_ (" 377 First Record Size"); 378 call ioa_ (MAP_IOA_STRING, LABEL_ADDR, LABEL_ADDR, VTOC_ORIGIN - LABEL_ADDR, VTOC_ORIGIN - LABEL_ADDR, 379 "Label Region"); 380 call ioa_ (MAP_IOA_STRING, VTOC_ORIGIN, VTOC_ORIGIN, pvte.vtoc_size - VTOC_ORIGIN, 381 pvte.vtoc_size - VTOC_ORIGIN, "VTOC Region"); 382 if pvte.baseadd - pvte.vtoc_size > 0 then 383 call ioa_ (MAP_IOA_STRING, pvte.vtoc_size, pvte.vtoc_size, pvte.baseadd - pvte.vtoc_size, 384 pvte.baseadd - pvte.vtoc_size, "Partitions"); 385 call ioa_ (MAP_IOA_STRING, pvte.baseadd, pvte.baseadd, pvte.totrec, pvte.totrec, "Paging Region"); 386 if last_rec_num (pvte.device_type) - (pvte.baseadd + pvte.totrec) > 0 then 387 call ioa_ (MAP_IOA_STRING, pvte.baseadd + pvte.totrec, pvte.baseadd + pvte.totrec, 388 last_rec_num (pvte.device_type) - (pvte.baseadd + pvte.totrec), 389 last_rec_num (pvte.device_type) - (pvte.baseadd + pvte.totrec), "Partitions"); 390 call ioa_ ("^22t^8d (^oo)^51tTotal Size^/", rec_per_sv (pvte.device_type), 391 rec_per_sv (pvte.device_type)); 392 end; 393 end; 394 395 396 GLOBAL_RETURN: 397 call clean_me_out; 398 399 return; 400 401 LINKAGE_ERROR: 402 call com_err_ (error_table_$not_privileged, myname, "phcs_"); 403 call clean_me_out; 404 return; 405 406 /* Internal procedure for cleanup */ 407 408 clean_me_out: 409 proc; 410 411 if temp_segp (1) ^= null () then call release_temp_segments_ (myname, temp_segp, code); 412 temp_segp (1) = null (); 413 414 end clean_me_out; 415 416 417 418 /* Internal procedure to convert a pointer to a fixed size character string */ 419 420 convert_ptr: 421 proc (p) returns (char (8)); 422 423 dcl p ptr unaligned; 424 425 dcl p_char char (8); 426 dcl p_char_ret char (8); 427 dcl p_char_len fixed bin (21); 428 429 call ioa_$rsnnl ("^p", p_char, p_char_len, p); 430 p_char_ret = ""; 431 substr (p_char_ret, 9 - p_char_len, p_char_len) = substr (p_char, 1, p_char_len); 432 return (p_char_ret); 433 434 end convert_ptr; 435 436 437 438 /* Internal procedure to copy a named segment from ring-0 */ 439 440 copy_ring0_seg: 441 proc (name, copy_ptr, ring0_ptr); 442 443 dcl name char (*); 444 dcl copy_ptr ptr; 445 dcl ring0_ptr ptr; 446 447 dcl code fixed bin (35); 448 dcl nwords fixed bin (19); 449 450 call ring0_get_$segptr ("", name, ring0_ptr, code); 451 if code ^= 0 then do; 452 RING0_SEG_ERR: 453 call com_err_ (code, myname, name); 454 goto GLOBAL_RETURN; 455 end; 456 457 call ring_zero_peek_$get_max_length (name, nwords, code); 458 if code ^= 0 then goto RING0_SEG_ERR; 459 460 call ring_zero_peek_$by_name (name, 0, copy_ptr, nwords, code); 461 if code ^= 0 then goto RING0_SEG_ERR; 462 463 end copy_ring0_seg; 464 465 /* Internal procedure to maintain ioa control strings for On and Off */ 466 467 set_on_off: 468 proc (this_bit, this_name); 469 470 dcl this_bit bit (1); 471 dcl this_name char (*); 472 473 if this_bit then 474 call set (on_string, this_name, on_line_l); 475 else call set (off_string, this_name, off_line_l); 476 return; 477 478 479 set: 480 proc (ioa_string, name, line_l); 481 482 dcl ioa_string char (*); 483 dcl name char (*); 484 dcl line_l fixed bin; 485 486 dcl name_l fixed bin; 487 488 name_l = length (name); 489 if name_l > MAX_LINE_L then return; 490 491 if name_l + line_l > MAX_LINE_L then do; 492 ioa_string = rtrim (ioa_string) || "^/^- " || name || " "; 493 line_l = name_l + 1; 494 end; 495 else do; 496 ioa_string = rtrim (ioa_string) || " " || name || " "; 497 line_l = line_l + name_l + 1; 498 end; 499 500 end set; 501 502 end set_on_off; 503 504 /* Automatic */ 505 506 dcl arg_no fixed bin; /* Current argument number */ 507 dcl argl fixed bin (21); /* Current argument length */ 508 dcl argp ptr; /* Pointer to current argument */ 509 dcl bias fixed bin; 510 dcl code fixed bin (35); /* Standard error code */ 511 dcl do_label bit (1); /* ON => display information from label */ 512 dcl do_pvte bit (1); /* ON => display information from PVTE */ 513 dcl found_pvte bit (1); /* ON => found pvte in pvt */ 514 dcl have_pvid bit (1); /* ON => PVID given */ 515 dcl have_pvname bit (1); /* ON => PVNAME given */ 516 dcl have_subsys_unit bit (1); /* ON => dskX_NN given */ 517 dcl have_sv bit (1); /* ON => dskX_NNA given to indicate subvolume */ 518 dcl label_call bit (1); /* ON => display_disk_label called */ 519 dcl max_pvtx fixed bin (17); /* max number of pvte's to look at for subvol */ 520 dcl myname char (32); /* Name of command called */ 521 dcl nargs fixed bin; /* Number of arguments */ 522 dcl off_line_l fixed bin; /* Working line length for OFF flags */ 523 dcl off_string char (1024); /* OFF ioa_ control string */ 524 dcl on_line_l fixed bin; /* Working line length for ON flags */ 525 dcl on_string char (1024); 526 dcl pvid bit (36) aligned; /* PVID */ 527 dcl pvid_bin fixed bin (35); /* Temp for conversion */ 528 dcl pvtx fixed bin; /* Index into pvte array */ 529 dcl pvname char (32); /* Physical volume name */ 530 dcl r0_pvtp ptr; /* Pointer to PVT in ring-0 */ 531 dcl r0_scav_datap ptr; /* Pointer to scavenger_data in ring-0 */ 532 dcl r0_stock_segp ptr; /* Pointer to stock_seg in ring-0 */ 533 dcl subsys_name char (4); /* Name of disk subsystem */ 534 dcl subvol_num fixed bin (17); /* Number of subvolume user requested (0, 1 or 2) */ 535 dcl temp_segp (N_TEMP_SEGS) ptr; /* Temporary segments used by command */ 536 dcl unit fixed bin (35); /* Unit number given */ 537 dcl unit_pic pic "99"; /* For printing unit number */ 538 dcl volmap_pagex fixed bin; 539 540 /* Static */ 541 542 dcl MAP_IOA_STRING char (29) static options (constant) init ("^8d (^oo)^22t^8d (^oo)^51t^4a"); 543 544 dcl MAX_LINE_L fixed bin int static options (constant) init (60); 545 dcl N_TEMP_SEGS fixed bin int static options (constant) init (3); 546 /* Number temp segments used */ 547 548 /* Based */ 549 550 dcl arg char (argl) based (argp); 551 /* Current argument */ 552 dcl 1 my_pvt_array (pvt.max_n_entries) aligned like pvte based (pvt_arrayp); 553 554 /* Entry */ 555 556 dcl com_err_ entry options (variable); 557 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 558 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 559 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 560 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 561 dcl display_disk_label_ entry (ptr); 562 dcl ioa_ entry options (variable); 563 dcl ioa_$rsnnl entry options (variable); 564 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 565 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 566 dcl ring_zero_peek_$by_name entry (char (*), fixed bin (18), ptr, fixed bin (19), fixed bin (35)); 567 dcl ring_zero_peek_$get_max_length entry (char (*), fixed bin (19), fixed bin (35)); 568 dcl ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)); 569 dcl phcs_$read_disk_label entry (bit (36) aligned, ptr, fixed bin (35)); 570 dcl pvname_to_pvtx_ entry (char (*), fixed bin, bit (36) aligned, fixed bin (35)); 571 dcl pvname_to_pvtx_$pvid entry (bit (36) aligned, fixed bin, char (*), fixed bin (35)); 572 573 574 /* External */ 575 576 dcl error_table_$badopt fixed bin (35) external; 577 dcl error_table_$inconsistent fixed bin (35) external; 578 dcl error_table_$noarg fixed bin (35) external; 579 dcl error_table_$not_privileged fixed bin (35) external; 580 dcl error_table_$subvol_invalid fixed bin (35) external; 581 dcl error_table_$subvol_needed fixed bin (35) external; 582 583 /* Condition */ 584 585 dcl cleanup condition; 586 dcl linkage_error condition; 587 588 /* Builtin */ 589 590 dcl addr builtin; 591 dcl convert builtin; 592 dcl index builtin; 593 dcl length builtin; 594 dcl null builtin; 595 dcl ptr builtin; 596 dcl rel builtin; 597 dcl rtrim builtin; 598 dcl substr builtin; 599 dcl unspec builtin; 600 1 1 /* BEGIN INCLUDE FILE ... backup_static_variables.incl.pl1 ... March 1976 */ 1 2 1 3 1 4 dcl incr fixed bin init (1) internal static options (constant); /* incremental dump mode */ 1 5 dcl cons fixed bin init (2) internal static options (constant); /* consolidated dump mode */ 1 6 dcl comp fixed bin init (3) internal static options (constant); /* complete dump mode */ 1 7 dcl backup_version_1 fixed bin init (1) static internal options (constant); /* backup_version_1 of input/output structures */ 1 8 1 9 1 10 1 11 /* END INCLUDE FILE ... backup_static_variables.incl.pl1 */ 601 602 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 */ 603 604 3 1 /* Begin include file ...... fs_dev_types.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 3 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 3 6* Add support for FIPS 3 7* 3380. 3 8* 2) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 3 9* audit(86-05-15,Coppola), install(86-07-18,MR12.0-1098): 3 10* Add the support for subvolumes for the MSU3380 and MSU3390. 3 11* 3) change(86-10-02,Fawcett), approve(86-10-02,PBF7383), 3 12* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200): 3 13* Changed 3390 to 3381, "d338" to "3380" & "d339" to "3381". 3 14* END HISTORY COMMENTS */ 3 15 3 16 /* Modified 5/19/76 by N. I. Morris */ 3 17 /* Modified 12/27/78 by Michael R. Jordan to correct MSS0500 information */ 3 18 /* Modified 4/79 by R.J.C. Kissel to add msu0501 information. */ 3 19 /* Modified '82 by BIM for needs_alt_part */ 3 20 /* Modified 4/84 by Chris Jones for FIPS disks */ 3 21 /* Modified 12/84 by Paul Farley for FIPS disks formatted for 512wd sectors */ 3 22 /* Modified 1/85 by Paul Farley to decrease the size of the 3380, until the 3 23* volmap and record stock can be expanded. */ 3 24 3 25 /* 3 26******************************************************************************** 3 27** * 3 28** WARNING: * 3 29** * 3 30** There exists fs_dev_types.incl.alm that must me updated when a new device * 3 31** type is added. * 3 32** * 3 33** There are other include files that contain arrays indexed by the device * 3 34** index obtained by references to MODELX or MODELN in this include file. * 3 35** These must be modified when a new device type is added: * 3 36** disk_pack.incl.pl1 * 3 37** fs_dev_types_sector.incl.pl1 (included in this include) * 3 38** * 3 39******************************************************************************** 3 40**/ 3 41 3 42 3 43 dcl (maxdevt init (9), /* maximum legal devt */ 3 44 bulkdevt init (1), /* bulk store devt */ 3 45 msu0500devt init (2), /* MSU0500 device type */ 3 46 msu0451devt init (3), /* MSU0451 device type */ 3 47 msu0450devt init (3), /* MSU0450 device type */ 3 48 msu0400devt init (4), /* MSU0400 device type */ 3 49 dsu191devt init (4), /* DSU191 device type */ 3 50 dsu190devt init (5), /* DSU190 device type */ 3 51 dsu181devt init (6), /* DSU181 device type */ 3 52 msu0501devt init (7), /* MSU0501 device type */ 3 53 fips3380devt init (8), /* 3380D FIPS device type */ 3 54 fips3381devt init (9) /* 3380E FIPS device type */ 3 55 ) fixed bin (4) static options (constant); 3 56 3 57 dcl MODEL (12) fixed bin static options (constant) init /* Known device model numbers */ 3 58 (0, 500, 451, 450, 400, 402, 191, 190, 181, 501, 3380, 3381); 3 59 3 60 dcl MODELX (12) fixed bin static options (constant) init /* translation from model number to device type */ 3 61 (1, 2, 3, 3, 4, 4, 4, 5, 6, 7, 8, 9); 3 62 3 63 dcl MODELN (9) fixed bin static options (constant) init /* translation from device type to model number */ 3 64 (0, 500, 451, 400, 190, 181, 501, 3380, 3381); 3 65 3 66 dcl device_names (9) char (4) aligned static options (constant) init /* device names indexed by device type */ 3 67 ("bulk", "d500", "d451", "d400", "d190", "d181", "d501", "3380", "3381"); 3 68 3 69 dcl first_dev_number (9) fixed bin (17) static options (constant) init /* First valid device_number */ 3 70 (1, 1, 1, 1, 1, 1, 1, 0, 0); 3 71 3 72 dcl fips_type_disk (9) bit (1) unal static options (constant) init /* ON => FIPS disk */ 3 73 ("0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"1"b,"1"b); 3 74 3 75 dcl media_removable (9) bit (1) static options (constant) init /* ON => demountable pack on device */ 3 76 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 3 77 3 78 dcl shared_spindle (9) bit (1) static options (constant) init /* ON => 2 devices per spindle */ 3 79 ("0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b); 3 80 3 81 dcl needs_alt_part (9) bit (1) static options (constant) init /* ON => needs alternate partition to run alternate tracks */ 3 82 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 3 83 3 84 dcl seek_command (9) bit (6) init /* Seek command: 00 => N/A, 30 => Seek_512, 34 => seek_64 */ 3 85 ("00"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"30"b3, "30"b3); 3 86 3 87 dcl rec_per_dev (9) fixed bin (21) static options (constant) init /* table of # of records on each device */ 3 88 (0, 38258, 38258, 19270, 14760, 4444, 67200, 112395, 224790); 3 89 3 90 dcl rec_per_sv (9) fixed bin static options (constant) init /* table of # of records on each subvol */ 3 91 (0, 38258, 38258, 19270, 14760, 4444, 67200, 56134, 74930); 3 92 3 93 dcl number_of_sv (9) fixed bin static options (constant) init /* table of subvolumes */ 3 94 (0, 0, 0, 0, 0, 0, 0, 2, 3); 3 95 3 96 dcl valid_sv_string char (3) static options (constant) init /* string of valid subvolume names */ 3 97 ("abc"); 3 98 3 99 dcl valid_sv_array (0:2) char (1) static options (constant) /* array of valid subvolume names */ 3 100 init ("a","b","c"); 3 101 3 102 dcl cyl_per_dev (9) fixed bin static options (constant) init /* table of # of cylinders on each device */ 3 103 (0, 814, 814, 410, 410, 202, 840, 885, 1770); 3 104 3 105 dcl cyl_per_sv (9) fixed bin static options (constant) init /* table of # of cylinders on each subvolume */ 3 106 (0, 814, 814, 410, 410, 202, 840, 442, 590); 3 107 3 108 dcl rec_per_cyl (9) fixed bin static options (constant) init /* table of # of records per cylinder on each device */ 3 109 (0, 47, 47, 47, 36, 22, 80, 127, 127); 3 110 3 111 dcl tracks_per_cyl (9) fixed bin static options (constant) init /* table of # of tracks per cylinder on each device */ 3 112 (0, 19, 19, 19, 19, 20, 20, 15, 15); 3 113 3 114 3 115 dcl first_rec_num (9) fixed bin static options (constant) init /* table of # of first record on each device */ 3 116 (0, 0, 0, 0, 0, 0, 0, 0, 0); 3 117 3 118 dcl last_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each device */ 3 119 (0, 38257, 38116, 19128, 14651, 4399, 67199, 112394, 224789); 3 120 3 121 dcl last_sv_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each subvolume */ 3 122 (0, 38257, 38116, 19128, 14651, 4399, 67199, 56133, 74929); 3 123 3 124 dcl first_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector for each device */ 3 125 (0, 0, 0, 0, 0, 0, 0, 0, 0); 3 126 3 127 dcl last_sect_num (9) fixed bin (24) static options (constant) init /* table of # last sector number for each device */ 3 128 (0, 618639, 616359, 309319, 239722, 71999, 1075199, 225674, 451349); 3 129 3 130 dcl first_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector of alt partition */ 3 131 (0, 638400, 616360, 309320, 239723, 72000, 1075200, 225675, 451350); 3 132 3 133 dcl last_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector of alt partition */ 3 134 (0, 639919, 618639, 311599, 241489, 72719, 1077759, 225930, 451605); 3 135 3 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) */ 3 137 (0, 639919, 619399, 312359, 242249, 72359, 1077759, 225674, 451859); 3 138 3 139 dcl dev_time (9) float bin (27) static options (constant) init /* table of average access times for each device */ 3 140 (384e0, 33187e0, 33187e0, 34722e0, 46935e0, 52631e0, 33187e0, 26260e0, 26260e0); 3 141 4 1 /* Begin fs_dev_types_sector.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 4 6* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 4 7* Add the sector differance for devices that do 64 word IO and devices that 4 8* do 512 word IO. 4 9* END HISTORY COMMENTS */ 4 10 4 11 /* Created by R. A. Fawcett for 512 word IO. for procedures that do not 4 12* need all the data in fs_dev_types. This is also included in 4 13* fs_dev_types.incl.pl1 */ 4 14 4 15 dcl sect_per_cyl (9) fixed bin static options (constant) init /* table of # of sectors per cylinder on each device */ 4 16 (0, 760, 760, 760, 589, 360, 1280, 255, 255); 4 17 4 18 dcl sect_per_sv (9) fixed bin (24) static options (constant) init /* table of # of sectors per cylinder on each subvolume */ 4 19 (0, 0, 0, 0, 0, 0, 0, 112710, 150450); 4 20 4 21 dcl sect_per_rec (9) fixed bin static options (constant) init 4 22 /* table of # of sectors per record on each device */ 4 23 /* coresponding array in disk_pack.incl.pl1 called SECTORS_PER_RECORD */ 4 24 (0, 16, 16, 16, 16, 16, 16, 2, 2); 4 25 4 26 dcl sect_per_vtoc (9) fixed bin static options (constant) init 4 27 (0, 3, 3, 3, 3, 3, 3, 1, 1); 4 28 4 29 dcl vtoc_per_rec (9) fixed bin static options (constant) init 4 30 /* corespending array in disk_pack.incl.pl1 named VTOCES_PER_RECORD */ 4 31 (0, 5, 5, 5, 5, 5, 5, 2, 2); 4 32 4 33 dcl sect_per_track (9) fixed bin static options (constant) init /* table of # of sectors per track on each device */ 4 34 (0, 40, 40, 40, 31, 18, 64, 17, 17); 4 35 4 36 dcl words_per_sect (9) fixed bin static options (constant) init /* table of # of words per sector on each device */ 4 37 (0, 64, 64, 64, 64, 64, 64, 512, 512); 4 38 4 39 /* End fs_dev_types_sector.incl.pl1 */ 4 40 3 142 3 143 3 144 /* End of include file ...... fs_dev_types.incl.pl1 */ 605 606 5 1 /* BEGIN INCLUDE FILE ... fs_vol_label.incl.pl1 .. last modified January 1982 for new volume map format */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-04-10,Fawcett), approve(86-04-10,MCR7383), 5 5* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 5 6* Add the subvolume info. 5 7* 2) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 5 8* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 5 9* Added inconsistent_dbm bit used to determine consistency of volume 5 10* dumper bit maps. 5 11* END HISTORY COMMENTS */ 5 12 5 13 /* This is the label at fixed location of each physical volume. Length 1 page */ 5 14 /* Note: fsout_vol clears pad fields before writing the label */ 5 15 5 16 dcl labelp ptr; 5 17 5 18 dcl 1 label based (labelp) aligned, 5 19 5 20 /* First comes data not used by Multics.. for compatibility with GCOS */ 5 21 5 22 2 gcos (5*64) fixed bin, 5 23 5 24 /* Now we have the Multics label */ 5 25 5 26 2 Multics char (32) init ("Multics Storage System Volume"), /* Identifier */ 5 27 2 version fixed bin, /* Version 1 */ 5 28 2 mfg_serial char (32), /* Manufacturer's serial number */ 5 29 2 pv_name char (32), /* Physical volume name. */ 5 30 2 lv_name char (32), /* Name of logical volume for pack */ 5 31 2 pvid bit (36), /* Unique ID of this pack */ 5 32 2 lvid bit (36), /* unique ID of its logical vol */ 5 33 2 root_pvid bit (36), /* unique ID of the pack containing the root. everybody must agree. */ 5 34 2 time_registered fixed bin (71), /* time imported to system */ 5 35 2 n_pv_in_lv fixed bin, /* # phys volumes in logical */ 5 36 2 vol_size fixed bin, /* total size of volume, in records */ 5 37 2 vtoc_size fixed bin, /* number of recs in fixed area + vtoc */ 5 38 2 not_used bit (1) unal, /* used to be multiple_class */ 5 39 2 private bit (1) unal, /* TRUE if was registered as private */ 5 40 2 inconsistent_dbm bit (1) unal, /* TRUE if ESD-less crash */ 5 41 2 flagpad bit (33) unal, 5 42 2 max_access_class bit (72), /* Maximum access class for stuff on volume */ 5 43 2 min_access_class bit (72), /* Minimum access class for stuff on volume */ 5 44 2 password bit (72), /* not yet used */ 5 45 2 number_of_sv fixed bin, /* if = 0 not a subvolume else the number of svs */ 5 46 2 this_sv fixed bin, /* what subvolume number it is */ 5 47 2 sub_vol_name char (1), /* what subvolume name (a b c d) it is */ 5 48 2 pad1 (13) fixed bin, 5 49 2 time_mounted fixed bin (71), /* time mounted */ 5 50 2 time_map_updated fixed bin (71), /* time vmap known good */ 5 51 5 52 /* The next two words overlay time_unmounted on pre-MR10 systems. This 5 53* forces a salvage if an MR10 pack is mounted on an earlier system. 5 54* */ 5 55 2 volmap_version fixed bin, /* version of volume map (currently 1) */ 5 56 2 pad6 fixed bin, 5 57 5 58 2 time_salvaged fixed bin (71), /* time salvaged */ 5 59 2 time_of_boot fixed bin (71), /* time of last bootload */ 5 60 2 time_unmounted fixed bin (71), /* time unmounted cleanly */ 5 61 2 last_pvtx fixed bin, /* pvtx in that PDMAP */ 5 62 2 pad1a (2) fixed bin, 5 63 2 err_hist_size fixed bin, /* size of pack error history */ 5 64 2 time_last_dmp (3) fixed bin (71), /* time last completed dump pass started */ 5 65 2 time_last_reloaded fixed bin (71), /* what it says */ 5 66 2 pad2 (40) fixed bin, 5 67 2 root, 5 68 3 here bit (1), /* TRUE if the root is on this pack */ 5 69 3 root_vtocx fixed bin (35), /* VTOC index of root, if it is here */ 5 70 3 shutdown_state fixed bin, /* Status of hierarchy */ 5 71 3 pad7 bit (1) aligned, 5 72 3 disk_table_vtocx fixed bin, /* VTOC index of disk table on RPV */ 5 73 3 disk_table_uid bit (36) aligned, /* UID of disk table */ 5 74 3 esd_state fixed bin, /* State of esd */ 5 75 2 volmap_record fixed bin, /* Begin record of volume map */ 5 76 2 size_of_volmap fixed bin, /* Number of records in volume map */ 5 77 2 vtoc_map_record fixed bin, /* Begin record of VTOC map */ 5 78 2 size_of_vtoc_map fixed bin, /* Number of records in VTOC map */ 5 79 2 volmap_unit_size fixed bin, /* Number of words per volume map section */ 5 80 2 vtoc_origin_record fixed bin, /* Begin record of VTOC */ 5 81 2 dumper_bit_map_record fixed bin, /* Begin record of dumper bit-map */ 5 82 2 vol_trouble_count fixed bin, /* Count of inconsistencies found since salvage */ 5 83 2 pad3 (52) fixed bin, 5 84 2 nparts fixed bin, /* Number of special partitions on pack */ 5 85 2 parts (47), 5 86 3 part char (4), /* Name of partition */ 5 87 3 frec fixed bin, /* First record */ 5 88 3 nrec fixed bin, /* Number of records */ 5 89 3 pad5 fixed bin, 5 90 2 pad4 (5*64) fixed bin; 5 91 5 92 dcl Multics_ID_String char (32) init ("Multics Storage System Volume") static; 5 93 5 94 /* END INCLUDE FILE fs_vol_label.incl.pl1 */ 607 608 6 1 /* BEGIN INCLUDE FILE ... pvt.incl.pl1 ... last modified January 1982 */ 6 2 6 3 6 4 /* The physical volume table (PVT) is a wired-down table. 6 5* It has one entry for each spindle present, be it for 6 6* Storage System or "I/O" use. 6 7**/ 6 8 6 9 dcl pvt$ ext, 6 10 pvtp ptr; 6 11 6 12 6 13 dcl 1 pvt based (pvtp) aligned, 6 14 6 15 2 n_entries fixed bin (17), /* number of PVT entries */ 6 16 2 max_n_entries fixed bin (17), /* max number of PVT entries */ 6 17 2 n_in_use fixed bin (17), /* number of PVT entries in use */ 6 18 2 rwun_pvtx fixed bin, /* rewind_unloading pvtx */ 6 19 2 shutdown_state fixed bin, /* state of previous shutdown */ 6 20 2 esd_state fixed bin, /* state of ESD, >0 iff in ESD */ 6 21 2 prev_shutdown_state fixed bin, /* shutdown state of previous bootload */ 6 22 2 prev_esd_state fixed bin, /* ESD state of previous bootload */ 6 23 6 24 2 time_of_bootload fixed bin (71), /* Time of bootload */ 6 25 2 root_lvid bit (36) aligned, /* Logical volume ID of Root Logical Volume (RLV) */ 6 26 2 root_pvid bit (36) aligned, /* Physical volume ID of Root Physical Volume (RPV) */ 6 27 2 root_pvtx fixed bin, /* Index to PVTE for Root Physical Volume (RPV) */ 6 28 2 root_vtocx fixed bin, /* VTOCE index for root (>) */ 6 29 2 disk_table_vtocx fixed bin, /* VTOCE index for disk table on RPV */ 6 30 2 disk_table_uid bit (36) aligned, /* File System UID for disk_table */ 6 31 6 32 2 rpvs_requested bit (1) aligned, /* RPVS keyword given on BOOT */ 6 33 2 rpv_needs_salv bit (1) aligned, /* RPV required (not requested) salvage */ 6 34 2 rlv_needs_salv bit (1) aligned, /* RLV required (not requested) salvage */ 6 35 2 volmap_lock_wait_constant bit (36) aligned,/* For constructing wait event: OR pvte_rel into lower */ 6 36 2 volmap_idle_wait_constant bit (36) aligned,/* For constructing wait event: OR pvte_rel into lower */ 6 37 2 vtoc_map_lock_wait_constant bit (36) aligned, /* For constructing wait event: OR pvte_rel into lower */ 6 38 2 n_volmap_locks_held fixed bin (17), /* Current number of volmap locks held */ 6 39 2 n_vtoc_map_locks_held fixed bin (17), /* Current number of VTOC Map locks held */ 6 40 6 41 2 last_volmap_time fixed bin (71), /* Time a volmap was last locked/unlocked */ 6 42 2 last_vtoc_map_time fixed bin (71), /* Time a VTOC Map was last locked/unlocked */ 6 43 2 total_volmap_lock_time fixed bin (71), /* Total time volmap's were locked (integral) */ 6 44 2 total_vtoc_map_lock_time fixed bin (71), /* Total time VTOC Maps were locked (integral) */ 6 45 6 46 2 n_volmap_locks fixed bin (35), /* Number times a volmap was locked */ 6 47 2 n_vtoc_map_locks fixed bin (35), /* Number times a vtoc_map was locked */ 6 48 2 volmap_lock_nowait_calls fixed bin (35), /* Number calls to lock volmap, no wait */ 6 49 2 volmap_lock_nowait_fails fixed bin (35), /* Number times lock failed */ 6 50 2 volmap_lock_wait_calls fixed bin (35), /* Number calls to lock volmap, wait */ 6 51 2 volmap_lock_wait_fails fixed bin (35), /* Number times lock failed */ 6 52 2 pad (2) bit (36) aligned, 6 53 6 54 2 array fixed bin (71); /* Array of PVTE's -- must be double-word aligned */ 6 55 6 56 6 57 6 58 /* END INCLUDE FILE ...pvt.incl.pl1 */ 609 7 1 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 7 2 7 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 7 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 7 8* Add the support for subvolumes 7 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 7 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 7 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 7 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 7 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 7 14* Added inconsistent_dbm bit for determining the status of volume 7 15* dumper bit maps. 7 16* END HISTORY COMMENTS */ 7 17 7 18 dcl pvt$array aligned external; 7 19 dcl pvt$max_n_entries fixed bin external; 7 20 7 21 dcl pvt_arrayp ptr; 7 22 dcl pvtep ptr; 7 23 7 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 7 25 7 26 dcl 1 pvte based (pvtep) aligned, 7 27 7 28 2 pvid bit (36), /* physical volume ID */ 7 29 7 30 2 lvid bit (36), /* logical volume ID */ 7 31 7 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 7 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 7 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 7 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 7 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 7 37 2 pad3 bit (2) unaligned, 7 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 7 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 7 40 7 41 7 42 7 43 2 devname char (4), /* device name */ 7 44 7 45 (2 device_type fixed bin (8), /* device type */ 7 46 2 logical_area_number fixed bin (8), /* disk drive number */ 7 47 2 used bit (1), /* TRUE if this entry is used */ 7 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 7 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 7 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 7 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 7 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 7 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 7 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 7 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 7 56 2 scav_check_address 7 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 7 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 7 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 7 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 7 61 2 vacating bit (1), /* don't put new segs on this vol */ 7 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 7 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 7 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 7 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 7 66 7 67 7 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 7 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 7 70 7 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 7 72 7 73 2 nleft fixed bin (17), /* number of records left */ 7 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 7 75 7 76 2 dim_info bit (36), /* Information peculiar to DIM */ 7 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 7 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 7 79 2 records_per_cyl fixed bin, 7 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 7 81 2 sv_name char (2) aligned, 7 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 7 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 7 84 7 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 7 86 2 pad2 bit (18) unaligned, 7 87 7 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 7 89 7 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 7 91 7 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 7 93 7 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 7 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 7 96 7 97 7 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 7 99 7 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 7 101 7 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 7 103 7 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 7 105 7 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 7 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 7 108 7 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 7 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 7 111 7 112 7 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 7 114 VOLMAP_ASYNC_READ init (1), 7 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 7 116 7 117 7 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 610 8 1 /* START OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 8 2 8 3 dcl stock_segp ptr; 8 4 dcl record_stockp ptr; 8 5 dcl vtoce_stockp ptr; 8 6 dcl stock_seg$ ext; 8 7 8 8 dcl n_in_record_stock fixed bin; 8 9 dcl n_volmap_pages fixed bin; 8 10 dcl n_in_vtoce_stock fixed bin; 8 11 8 12 8 13 dcl 1 stock_seg aligned based (stock_segp), 8 14 8 15 2 meters aligned like rsmeters, 8 16 8 17 2 record_stock_entries fixed bin, /* Number of entries in a record stock */ 8 18 2 vtoce_stock_entries fixed bin, /* Number of entries in a VTOCE stock */ 8 19 2 record_stock_size fixed bin, /* Size of a record stock in words */ 8 20 2 vtoce_stock_size fixed bin, /* Size of a VTOCE stock in words */ 8 21 2 n_stock_entries fixed bin, /* Number of stocks of each type */ 8 22 2 record_stock_arrayp ptr, /* Record stock region */ 8 23 2 vtoce_stock_arrayp ptr; /* VTOCE stock region */ 8 24 8 25 8 26 dcl 1 record_stock aligned based (record_stockp), 8 27 8 28 2 pvtep ptr unal, /* PVTE for this stock */ 8 29 8 30 2 n_in_stock fixed bin (18) uns unal,/* Max number of addresses in stock */ 8 31 2 n_volmap_pages fixed bin (18) uns unal,/* Number of pages in Volume Map */ 8 32 8 33 2 n_free_in_stock fixed bin (18) uns unal,/* Number addresses currently free */ 8 34 2 n_os_in_stock fixed bin (18) uns unal,/* Number addresses currently out-of-service */ 8 35 8 36 2 low_threshold fixed bin (18) uns unal,/* Low threshold for withdrawing from volmap */ 8 37 2 high_threshold fixed bin (18) uns unal,/* High threshold for depositing to volmap */ 8 38 8 39 2 target fixed bin (18) uns unal,/* Target for stock */ 8 40 2 stock_offset bit (18) unal, /* Offset of stock in this structure */ 8 41 8 42 2 n_words_in_stock fixed bin (18) uns unal,/* Number of words = Number of entries / 2 */ 8 43 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 8 44 8 45 2 old_volmap_page (3) aligned, /* N_OLD_VOLMAP_PAGES (cif) */ 8 46 3 last fixed bin (18) uns unal,/* Roving pointer */ 8 47 3 pad bit (18) unal, 8 48 8 49 2 volmap_page (n_volmap_pages refer (record_stock.n_volmap_pages)) aligned, 8 50 3 n_free fixed bin (18) uns unal,/* Number free records in this volmap page */ 8 51 3 baseadd fixed bin (17) unal, /* First record address described by this page */ 8 52 8 53 2 stock (n_in_record_stock refer (record_stock.n_in_stock)) bit (18) unal; /* Stock array of addresses */ 8 54 /* bit 0 ON => out-of-service */ 8 55 8 56 8 57 dcl 1 vtoce_stock aligned based (vtoce_stockp), 8 58 2 pvtep ptr unal, /* PVTE for this stock */ 8 59 2 n_in_stock fixed bin (18) uns unal,/* Max number indices in stock */ 8 60 2 n_free_in_stock fixed bin (18) uns unal,/* Number indices currently free */ 8 61 2 target fixed bin (18) uns unal,/* Target when withdrawing/depositing */ 8 62 2 search_index fixed bin (18) uns unal,/* Roving pointer */ 8 63 2 stock (n_in_vtoce_stock refer (vtoce_stock.n_in_stock)) fixed bin (17) unal; /* Stock array of VTOCE indices */ 8 64 8 65 8 66 dcl 1 rsmeters aligned based, 8 67 8 68 2 async_read_calls fixed bin (35), /* Number of asynchronous read attempts */ 8 69 2 async_page_reads fixed bin (35), /* Number of times page read was required */ 8 70 2 async_post_io_calls fixed bin (35), /* Number of times read or write posted */ 8 71 2 deposit_calls fixed bin (35), /* Number of times deposit called */ 8 72 2 async_post_io_time fixed bin (71), /* CPU time posting I/Os (interrupt side) */ 8 73 2 deposit_time fixed bin (71), /* CPU time in deposit (call side) */ 8 74 2 low_thresh_detected fixed bin (35), /* Number of times stock below low threshold */ 8 75 2 high_thresh_detected fixed bin (35), /* Number of times stock above high threshold */ 8 76 2 low_thresh_fails fixed bin (35), /* Number of times no records in volmap */ 8 77 2 withdraw_stock_steps fixed bin (35), /* Number steps thru stock in withdraw */ 8 78 2 withdraw_stock_losses fixed bin (35), /* Number lockless losses */ 8 79 2 n_withdraw_attempt fixed bin (35), /* Number attempts to withdraw a page */ 8 80 2 n_withdraw_range fixed bin (35), /* Number attempts to withdraw within range */ 8 81 2 n_pages_withdraw_stock fixed bin (35), /* Number pages withdrawn from stock */ 8 82 2 n_pages_withdraw_async fixed bin (35), /* Number pages withdrawn from volmap */ 8 83 2 n_v_withdraw_attempts fixed bin (35), /* Number attempts to withdraw from volmap */ 8 84 2 withdraw_volmap_steps fixed bin (35), /* Number steps thru volmap in withdraw */ 8 85 2 deposit_stock_steps fixed bin (35), /* Number steps thru stock in deposit */ 8 86 2 deposit_stock_losses fixed bin (35), /* Number lockless losses */ 8 87 2 n_deposit_attempt fixed bin (35), /* Number attempts to deposit a page */ 8 88 2 n_pages_deposit_stock fixed bin (35), /* Number pages deposited to stock */ 8 89 2 n_pages_deposit_volmap fixed bin (35), /* Number pages deposited to volmap */ 8 90 2 n_v_deposit_attempts fixed bin (35), /* Number attempts to deposit to volmap */ 8 91 2 reset_os_calls fixed bin (35), /* Number calls to reset_os */ 8 92 2 reset_os_losses fixed bin (35), /* Number lockless losses */ 8 93 2 withdraw_calls fixed bin (35), /* Number calls to withdraw */ 8 94 2 withdraw_time fixed bin (71), /* CPU time in withdraw (page-fault) */ 8 95 2 pc_deposit_time fixed bin (71), /* CPU time in pc_deposit */ 8 96 2 pc_deposit_calls fixed bin (35), /* Number calls to pc_deposit */ 8 97 2 pc_deposit_pages fixed bin (35), /* Number pages deposited by pc_deposit */ 8 98 2 get_free_vtoce_calls fixed bin (35), /* Number calls to get_free_vtoce */ 8 99 2 return_free_vtoce_call fixed bin (35), /* Number calls to return_free_vtoce */ 8 100 2 deposit_vstock_calls fixed bin (35), /* Number attempts to deposit to vtoce stock */ 8 101 2 deposit_vstock_fails fixed bin (35), /* Number times deposit failed */ 8 102 2 withdraw_vstock_calls fixed bin (35), /* Number attempts to withdraw from vtoce stock */ 8 103 2 withdraw_vstock_fails fixed bin (35), /* Number times withdraw failed */ 8 104 2 deposit_vtoc_map fixed bin (35), /* Number times vtoce deposited to map */ 8 105 2 withdraw_check_scav fixed bin (35), /* Number times withdraw checked an address for scavenge */ 8 106 2 withdraw_conflict fixed bin (35), /* Number times conflict found */ 8 107 2 pad (11) fixed bin (35); 8 108 8 109 8 110 dcl N_OLD_VOLMAP_PAGES fixed bin init (3) int static options (constant); 8 111 dcl DEFAULT_N_IN_RECORD_STOCK fixed bin init (104) int static options (constant); 8 112 dcl DEFAULT_N_IN_VTOCE_STOCK fixed bin init (10) int static options (constant); 8 113 8 114 8 115 /* END OF: stock_seg.incl.pl1 * * * * * * * * * * * * * * * * */ 611 612 613 end display_disk_label; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1523.2 display_disk_label.pl1 >special_ldd>install>MR12.2-1061>display_disk_label.pl1 601 1 09/05/80 1136.5 backup_static_variables.incl.pl1 >ldd>include>backup_static_variables.incl.pl1 603 2 10/22/86 1450.1 disk_pack.incl.pl1 >ldd>include>disk_pack.incl.pl1 605 3 10/30/86 2010.5 fs_dev_types.incl.pl1 >ldd>include>fs_dev_types.incl.pl1 3-142 4 07/24/86 2051.8 fs_dev_types_sector.incl.pl1 >ldd>include>fs_dev_types_sector.incl.pl1 607 5 07/19/88 1523.2 fs_vol_label.incl.pl1 >special_ldd>install>MR12.2-1061>fs_vol_label.incl.pl1 609 6 05/27/82 1525.8 pvt.incl.pl1 >ldd>include>pvt.incl.pl1 610 7 07/19/88 1523.2 pvte.incl.pl1 >special_ldd>install>MR12.2-1061>pvte.incl.pl1 611 8 10/25/82 1015.6 stock_seg.incl.pl1 >ldd>include>stock_seg.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 000141 constant fixed bin(17,0) initial dcl 2-54 set ref 378* 378* 378 378 MAP_IOA_STRING 000034 constant char(29) initial packed unaligned dcl 542 set ref 378* 380* 382* 385* 386* MAX_LINE_L constant fixed bin(17,0) initial dcl 544 ref 489 491 N_TEMP_SEGS constant fixed bin(17,0) initial dcl 545 ref 535 VTOC_ORIGIN 000132 constant fixed bin(17,0) initial dcl 2-54 set ref 378 378 380* 380* 380 380 addr builtin function dcl 590 ref 201 210 251 261 271 arg based char packed unaligned dcl 550 set ref 106 108* 112 112 115 116 116 118* 123 130* 136 142 149* 151* 158 158 arg_no 000100 automatic fixed bin(17,0) dcl 506 set ref 98* 100* 102* 107 143* 143 144* argl 000101 automatic fixed bin(21,0) dcl 507 set ref 100* 106 108 108 112 112 112 112 115 116 116 118 118 122 123 130 130 136 142 144* 149 149 151 151 158 158 argp 000102 automatic pointer dcl 508 set ref 100* 106 108 112 112 115 116 116 118 123 130 136 142 144* 149 151 158 158 array 50 based fixed bin(71,0) level 2 dcl 6-13 set ref 201 baseadd 20 based fixed bin(18,0) level 2 in structure "pvte" packed packed unsigned unaligned dcl 7-26 in procedure "ddl" set ref 382 382 382 385* 385* 386 386 386 386 386 baseadd 11(18) based fixed bin(17,0) array level 3 in structure "record_stock" packed packed unaligned dcl 8-26 in procedure "ddl" ref 328 being_demounted 4(23) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 355* being_demounted2 4(29) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 361* being_mounted 4(22) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 354* bias 000104 automatic fixed bin(17,0) dcl 509 set ref 326* 328 331* check_read_incomplete 4(24) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 357* cleanup 001160 stack reference condition dcl 585 ref 180 code 000105 automatic fixed bin(35,0) dcl 510 in procedure "ddl" set ref 85* 86 87* 100* 101 102* 116* 117 130* 131 144* 145 146* 149* 150 182* 183 184* 194* 195 196* 236* 237 238* 245* 246 247* 255* 256 257* 282* 286 287* 411* code 001276 automatic fixed bin(35,0) dcl 447 in procedure "copy_ring0_seg" set ref 450* 451 452* 457* 458 460* 461 com_err_ 000010 constant entry external dcl 556 ref 87 92 102 108 118 146 151 171 184 196 216 222 230 238 247 257 287 401 452 comp constant fixed bin(17,0) initial dcl 1-6 ref 370 cons constant fixed bin(17,0) initial dcl 1-5 ref 369 convert builtin function dcl 591 ref 171 171 216 216 222 222 230 230 294 294 301 301 copy_ptr parameter pointer dcl 444 set ref 440 460* cu_$arg_count 000012 constant entry external dcl 557 ref 85 cu_$arg_ptr 000014 constant entry external dcl 558 ref 100 144 cv_dec_check_ 000016 constant entry external dcl 559 ref 116 cv_oct_check_ 000020 constant entry external dcl 560 ref 130 149 dbmrp 6 based bit(18) array level 2 packed packed unaligned dcl 7-26 set ref 315* 315* deposit_to_volmap 4(28) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 360* device_inoperative 4(25) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 358* device_names 000023 constant char(4) initial array dcl 3-66 set ref 294* 301* device_type 4 based fixed bin(8,0) level 2 packed packed unaligned dcl 7-26 ref 294 301 386 386 386 390 390 devname 3 based char(4) level 2 dcl 7-26 set ref 211 294* 301* display_disk_label_ 000022 constant entry external dcl 561 ref 297 dmpr_in_use 2 based bit(1) array level 2 packed packed unaligned dcl 7-26 set ref 368* 369* 370* do_label 000106 automatic bit(1) packed unaligned dcl 511 set ref 65* 74* 161* 275 do_pvte 000107 automatic bit(1) packed unaligned dcl 512 set ref 66* 75* 159* 300 error_table_$badopt 000050 external static fixed bin(35,0) dcl 576 set ref 108* error_table_$inconsistent 000052 external static fixed bin(35,0) dcl 577 set ref 171* error_table_$noarg 000054 external static fixed bin(35,0) dcl 578 set ref 92* error_table_$not_privileged 000056 external static fixed bin(35,0) dcl 579 set ref 401* error_table_$subvol_invalid 000060 external static fixed bin(35,0) dcl 580 set ref 222* error_table_$subvol_needed 000062 external static fixed bin(35,0) dcl 581 set ref 216* found_pvte 000110 automatic bit(1) packed unaligned dcl 513 set ref 208* 209 212* 213* 229 get_temp_segments_ 000030 constant entry external dcl 564 ref 182 have_pvid 000111 automatic bit(1) packed unaligned dcl 514 set ref 81* 133* 155* 168 170 have_pvname 000112 automatic bit(1) packed unaligned dcl 515 set ref 81* 137* 168 170 171* 244 have_subsys_unit 000113 automatic bit(1) packed unaligned dcl 516 set ref 81* 127* 129 168 170 171* 207 265 have_sv 000114 automatic bit(1) packed unaligned dcl 517 set ref 81* 125* 213 215 221 230* 265 hc_part_used 4(32) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 364* inconsistent_dbm 2(06) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 315* incr constant fixed bin(17,0) initial dcl 1-4 ref 368 index builtin function dcl 592 ref 123 ioa_ 000024 constant entry external dcl 562 ref 294 301 305 306 308 310 314 315 320 325 328 333 339 372 373 375 376 378 380 382 385 386 390 ioa_$rsnnl 000026 constant entry external dcl 563 ref 429 ioa_string parameter char packed unaligned dcl 482 set ref 479 492* 492 496* 496 is_sv 2(03) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 215 221 264 294* 301* 310 348* label based structure level 1 dcl 5-18 label_call 000115 automatic bit(1) packed unaligned dcl 518 set ref 64* 73* 159 labelp 001176 automatic pointer dcl 5-16 set ref 188* 282* 294 297* last_rec_num 000000 constant fixed bin(18,0) initial array dcl 3-118 ref 386 386 386 length builtin function dcl 593 ref 488 line_l parameter fixed bin(17,0) dcl 484 set ref 479 491 493* 497* 497 linkage_error 001166 stack reference condition dcl 586 ref 280 284 logical_area_number 4(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 7-26 ref 211 294 294 301 301 lvid 1 based bit(36) level 2 dcl 7-26 set ref 305* max_pvtx 000116 automatic fixed bin(17,0) dcl 519 set ref 265* 266* 268* 270 my_pvt_array based structure array level 1 dcl 552 set ref 210 251 261 271 myname 000117 automatic char(32) packed unaligned dcl 520 set ref 67* 76* 87* 92* 92* 102* 108* 118* 146* 151* 171* 182* 184* 196* 216* 222* 230* 238* 247* 257* 287* 401* 411* 452* n_entries based fixed bin(17,0) level 2 dcl 6-13 ref 209 n_free 11 based fixed bin(18,0) array level 3 packed packed unsigned unaligned dcl 8-26 set ref 328* n_free_vtoce 5 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 306* 306* n_volmap_pages 1(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 8-26 ref 327 n_vtoce 17(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 306* 306* name parameter char packed unaligned dcl 483 in procedure "set" ref 479 488 492 496 name parameter char packed unaligned dcl 443 in procedure "copy_ring0_seg" set ref 440 450* 452* 457* 460* name_l 001314 automatic fixed bin(17,0) dcl 486 set ref 488* 489 491 493 497 nargs 000127 automatic fixed bin(17,0) dcl 521 set ref 85* 91 98 nleft 7 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 308* 308* null builtin function dcl 594 ref 178 319 321 411 412 num_of_svs 12 based fixed bin(17,0) level 2 dcl 7-26 set ref 265 310* nwords 001277 automatic fixed bin(19,0) dcl 448 set ref 457* 460* off_line_l 000130 automatic fixed bin(17,0) dcl 522 set ref 346* 475* off_string 000131 automatic char(1024) packed unaligned dcl 523 set ref 344* 373 373 475* on_line_l 000531 automatic fixed bin(17,0) dcl 524 set ref 345* 473* on_string 000532 automatic char(1024) packed unaligned dcl 525 set ref 343* 372 372 473* p parameter pointer packed unaligned dcl 423 set ref 420 429* p_char 001262 automatic char(8) packed unaligned dcl 425 set ref 429* 431 p_char_len 001266 automatic fixed bin(21,0) dcl 427 set ref 429* 431 431 431 p_char_ret 001264 automatic char(8) packed unaligned dcl 426 set ref 430* 431* 432 pc_vacating 4(30) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 362* permanent 4(20) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 352* phcs_$read_disk_label 000042 constant entry external dcl 569 ref 282 private 551(01) based bit(1) level 2 packed packed unaligned dcl 5-18 set ref 294* ptr builtin function dcl 595 ref 322 323 323 339 339 pvid based bit(36) level 2 in structure "pvte" dcl 7-26 in procedure "ddl" set ref 235 305* pvid 001132 automatic bit(36) dcl 526 in procedure "ddl" set ref 132* 154* 235* 236* 238* 245* 255* 257* 282* pvid_bin 001133 automatic fixed bin(35,0) dcl 527 set ref 130* 132 149* 154 pvname 001135 automatic char(32) packed unaligned dcl 529 set ref 136* 171* 236* 245* 247* 255* 287* 294* 301* pvname_to_pvtx_ 000044 constant entry external dcl 570 ref 245 pvname_to_pvtx_$pvid 000046 constant entry external dcl 571 ref 236 255 pvt based structure level 1 dcl 6-13 pvt_arrayp 001202 automatic pointer dcl 7-21 set ref 201* 210 251 261 271 pvte based structure level 1 dcl 7-26 pvtep based pointer level 2 in structure "record_stock" packed packed unaligned dcl 8-26 in procedure "ddl" ref 323 pvtep 001204 automatic pointer dcl 7-22 in procedure "ddl" set ref 210* 211 211 211 213 215 221 235 251* 261* 264 265 271* 294 294 294 294 294 294 301 301 301 301 301 301 301 301 305 305 306 306 306 306 308 308 308 308 310 310 310 310 310 314 315 315 315 319 319 320 320 321 321 322 323 323 325 325 333 333 339 339 339 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 380 380 382 382 382 382 382 382 382 382 385 385 385 385 386 386 386 386 386 386 386 386 386 386 386 386 386 390 390 pvtp 001200 automatic pointer dcl 6-9 set ref 187* 191* 201 209 pvtx 001134 automatic fixed bin(17,0) dcl 528 set ref 209* 209* 210* 228 236* 245* 251 255* 261 265 266 268 270* 270* 271* r0_pvtp 001146 automatic pointer dcl 530 set ref 191* 323 r0_scav_datap 001150 automatic pointer dcl 531 set ref 194* 339 339 r0_stock_segp 001152 automatic pointer dcl 532 set ref 192* 323 rec_per_sv 000012 constant fixed bin(17,0) initial array dcl 3-90 set ref 390* 390* record_factor 14 based fixed bin(17,0) level 2 dcl 7-26 set ref 310* record_stock based structure level 1 dcl 8-26 record_stockp 001210 automatic pointer dcl 8-4 set ref 322* 323 323 327 328 328 records_per_cyl 13 based fixed bin(17,0) level 2 dcl 7-26 set ref 310* rel builtin function dcl 596 ref 301 301 322 323 323 release_temp_segments_ 000032 constant entry external dcl 565 ref 411 removable_pack 2(05) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 356* ring0_get_$segptr 000040 constant entry external dcl 568 ref 194 450 ring0_ptr parameter pointer dcl 445 set ref 440 450* ring_zero_peek_$by_name 000034 constant entry external dcl 566 ref 460 ring_zero_peek_$get_max_length 000036 constant entry external dcl 567 ref 457 root_lv 2(04) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 350* rpv 4(26) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 351* rsmeters based structure level 1 dcl 8-66 rtrim builtin function dcl 597 ref 372 372 373 373 492 496 scav_check_address 4(27) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 359* scavenger_block_rel 33(18) based bit(18) level 2 packed packed unaligned dcl 7-26 ref 339 339 339 seek_command 001174 automatic bit(6) initial array packed unaligned dcl 3-84 set ref 3-84* 3-84* 3-84* 3-84* 3-84* 3-84* 3-84* 3-84* 3-84* stock_segp 001206 automatic pointer dcl 8-3 set ref 189* 192* 322 storage_system 4(19) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 349* substr builtin function dcl 598 set ref 106 112 112 115 116 116 123 230 230 431* 431 subsys_name 001154 automatic char(4) packed unaligned dcl 533 set ref 115* 171* 211 216* 222* 230* subvol_num 001155 automatic fixed bin(17,0) dcl 534 set ref 83* 123* 124 213 230 230 sv_name 15 based char(2) level 2 dcl 7-26 set ref 294* 301* sv_num 11 based fixed bin(17,0) level 2 dcl 7-26 set ref 213 310* temp_segp 001156 automatic pointer array dcl 535 set ref 178* 182* 187 188 189 411 411* 412* testing 4(21) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 353* this_bit parameter bit(1) packed unaligned dcl 470 ref 467 473 this_name parameter char packed unaligned dcl 471 set ref 467 473* 475* totrec 7(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 308* 308* 385* 385* 386 386 386 386 386 unit 001156 automatic fixed bin(35,0) dcl 536 set ref 83* 116* 171 171 211 216 216 222 222 230 230 unit_pic automatic picture(2) packed unaligned dcl 537 ref 171 171 216 216 222 222 230 230 294 294 301 301 unspec builtin function dcl 599 ref 132 154 319 321 used 4(18) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 211 347* vacating 4(31) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 363* valid_sv_string 000011 constant char(3) initial packed unaligned dcl 3-96 ref 123 230 230 vol_trouble_count 33 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 314* volmap_astep 24 based pointer level 2 packed packed unaligned dcl 7-26 set ref 319 319 320* 320* volmap_idle_notify 4(34) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 366* volmap_lock_notify 4(33) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 365* volmap_page 11 based structure array level 2 dcl 8-26 volmap_pagex 001157 automatic fixed bin(17,0) dcl 538 set ref 327* 328 328 328* volmap_stock_ptr 30 based pointer level 2 packed packed unaligned dcl 7-26 set ref 321 321 322 323 325* 325* vtoc_map_lock_notify 4(35) based bit(1) level 2 packed packed unaligned dcl 7-26 set ref 367* vtoc_map_stock_ptr 31 based pointer level 2 packed packed unaligned dcl 7-26 set ref 333* 333* vtoc_size 5(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-26 set ref 380 380 382 382* 382* 382 382 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DEFAULT_HCPART_SIZE internal static fixed bin(17,0) initial dcl 2-54 DEFAULT_N_IN_RECORD_STOCK internal static fixed bin(17,0) initial dcl 8-111 DEFAULT_N_IN_VTOCE_STOCK internal static fixed bin(17,0) initial dcl 8-112 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 MODEL internal static fixed bin(17,0) initial array dcl 3-57 MODELN internal static fixed bin(17,0) initial array dcl 3-63 MODELX internal static fixed bin(17,0) initial array dcl 3-60 Multics_ID_String internal static char(32) initial packed unaligned dcl 5-92 N_OLD_VOLMAP_PAGES internal static fixed bin(17,0) initial dcl 8-110 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 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 7-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 7-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 7-113 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 backup_version_1 internal static fixed bin(17,0) initial dcl 1-7 bulkdevt internal static fixed bin(4,0) initial dcl 3-43 cyl_per_dev internal static fixed bin(17,0) initial array dcl 3-102 cyl_per_sv internal static fixed bin(17,0) initial array dcl 3-105 dev_time internal static float bin(27) initial array dcl 3-139 dsu181devt internal static fixed bin(4,0) initial dcl 3-43 dsu190devt internal static fixed bin(4,0) initial dcl 3-43 dsu191devt internal static fixed bin(4,0) initial dcl 3-43 fips3380devt internal static fixed bin(4,0) initial dcl 3-43 fips3381devt internal static fixed bin(4,0) initial dcl 3-43 fips_type_disk internal static bit(1) initial array packed unaligned dcl 3-72 first_alt_sect_num internal static fixed bin(24,0) initial array dcl 3-130 first_dev_number internal static fixed bin(17,0) initial array dcl 3-69 first_rec_num internal static fixed bin(17,0) initial array dcl 3-115 first_sect_num internal static fixed bin(24,0) initial array dcl 3-124 last_alt_sect_num internal static fixed bin(24,0) initial array dcl 3-133 last_physical_sect_num internal static fixed bin(24,0) initial array dcl 3-136 last_sect_num internal static fixed bin(24,0) initial array dcl 3-127 last_sv_rec_num internal static fixed bin(18,0) initial array dcl 3-121 maxdevt internal static fixed bin(4,0) initial dcl 3-43 media_removable internal static bit(1) initial array packed unaligned dcl 3-75 msu0400devt internal static fixed bin(4,0) initial dcl 3-43 msu0450devt internal static fixed bin(4,0) initial dcl 3-43 msu0451devt internal static fixed bin(4,0) initial dcl 3-43 msu0500devt internal static fixed bin(4,0) initial dcl 3-43 msu0501devt internal static fixed bin(4,0) initial dcl 3-43 n_in_record_stock automatic fixed bin(17,0) dcl 8-8 n_in_vtoce_stock automatic fixed bin(17,0) dcl 8-10 n_volmap_pages automatic fixed bin(17,0) dcl 8-9 needs_alt_part internal static bit(1) initial array packed unaligned dcl 3-81 number_of_sv internal static fixed bin(17,0) initial array dcl 3-93 pvt$ external static fixed bin(17,0) dcl 6-9 pvt$array external static fixed bin(17,0) dcl 7-18 pvt$max_n_entries external static fixed bin(17,0) dcl 7-19 pvt_array based structure array level 1 dcl 7-24 rec_per_cyl internal static fixed bin(17,0) initial array dcl 3-108 rec_per_dev internal static fixed bin(21,0) initial array dcl 3-87 sect_per_cyl internal static fixed bin(17,0) initial array dcl 4-15 sect_per_rec internal static fixed bin(17,0) initial array dcl 4-21 sect_per_sv internal static fixed bin(24,0) initial array dcl 4-18 sect_per_track internal static fixed bin(17,0) initial array dcl 4-33 sect_per_vtoc internal static fixed bin(17,0) initial array dcl 4-26 shared_spindle internal static bit(1) initial array packed unaligned dcl 3-78 stock_seg based structure level 1 dcl 8-13 stock_seg$ external static fixed bin(17,0) dcl 8-6 tracks_per_cyl internal static fixed bin(17,0) initial array dcl 3-111 valid_sv_array internal static char(1) initial array packed unaligned dcl 3-99 vtoc_per_rec internal static fixed bin(17,0) initial array dcl 4-29 vtoce_stock based structure level 1 dcl 8-57 vtoce_stockp automatic pointer dcl 8-5 words_per_sect internal static fixed bin(17,0) initial array dcl 4-36 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_DISK 001410 constant label dcl 118 ref 124 BAD_OPT 001315 constant label dcl 108 ref 158 COMMON 001133 constant label dcl 81 ref 68 GLOBAL_RETURN 005503 constant label dcl 396 ref 454 LINKAGE_ERROR 005510 constant label dcl 401 ref 280 RING0_SEG_ERR 005711 constant label dcl 452 ref 458 461 USAGE 001174 constant label dcl 92 ref 168 clean_me_out 005541 constant entry internal dcl 408 ref 180 197 218 224 232 239 248 258 288 396 403 convert_ptr 005577 constant entry internal dcl 420 ref 320 320 325 325 333 333 339 339 copy_ring0_seg 005647 constant entry internal dcl 440 ref 191 192 ddl 001067 constant entry external dcl 14 display_disk_label 001077 constant entry external dcl 14 display_pvte 001116 constant entry external dcl 70 set 006104 constant entry internal dcl 479 ref 473 475 set_on_off 006021 constant entry internal dcl 467 ref 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6670 6754 6350 6700 Length 7414 6350 64 424 317 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ddl 930 external procedure is an external procedure. on unit on line 180 64 on unit on unit on line 280 64 on unit clean_me_out 78 internal procedure is called by several nonquick procedures. convert_ptr internal procedure shares stack frame of external procedure ddl. copy_ring0_seg internal procedure shares stack frame of external procedure ddl. set_on_off internal procedure shares stack frame of external procedure ddl. set internal procedure shares stack frame of external procedure ddl. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ddl 000100 arg_no ddl 000101 argl ddl 000102 argp ddl 000104 bias ddl 000105 code ddl 000106 do_label ddl 000107 do_pvte ddl 000110 found_pvte ddl 000111 have_pvid ddl 000112 have_pvname ddl 000113 have_subsys_unit ddl 000114 have_sv ddl 000115 label_call ddl 000116 max_pvtx ddl 000117 myname ddl 000127 nargs ddl 000130 off_line_l ddl 000131 off_string ddl 000531 on_line_l ddl 000532 on_string ddl 001132 pvid ddl 001133 pvid_bin ddl 001134 pvtx ddl 001135 pvname ddl 001146 r0_pvtp ddl 001150 r0_scav_datap ddl 001152 r0_stock_segp ddl 001154 subsys_name ddl 001155 subvol_num ddl 001156 unit ddl 001156 temp_segp ddl 001157 volmap_pagex ddl 001174 seek_command ddl 001176 labelp ddl 001200 pvtp ddl 001202 pvt_arrayp ddl 001204 pvtep ddl 001206 stock_segp ddl 001210 record_stockp ddl 001262 p_char convert_ptr 001264 p_char_ret convert_ptr 001266 p_char_len convert_ptr 001276 code copy_ring0_seg 001277 nwords copy_ring0_seg 001314 name_l set THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp unpk_to_pk cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_dec_check_ cv_oct_check_ display_disk_label_ get_temp_segments_ ioa_ ioa_$rsnnl phcs_$read_disk_label pvname_to_pvtx_ pvname_to_pvtx_$pvid release_temp_segments_ ring0_get_$segptr ring_zero_peek_$by_name ring_zero_peek_$get_max_length THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$not_privileged error_table_$subvol_invalid error_table_$subvol_needed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 535 000747 3 84 000755 182 001044 411 001054 14 001066 64 001105 65 001107 66 001110 67 001111 68 001114 70 001115 73 001124 74 001125 75 001126 76 001130 81 001133 83 001137 85 001141 86 001152 87 001154 88 001171 91 001172 92 001174 95 001223 98 001224 100 001233 101 001250 102 001252 103 001304 106 001305 107 001312 108 001315 110 001341 112 001342 115 001357 116 001362 117 001406 118 001410 120 001447 122 001450 123 001453 124 001464 125 001465 127 001467 129 001471 130 001474 131 001517 132 001521 133 001523 134 001525 136 001526 137 001533 140 001535 142 001536 143 001543 144 001544 145 001561 146 001563 147 001606 149 001607 150 001632 151 001634 152 001673 154 001674 155 001676 156 001700 158 001701 159 001711 161 001716 166 001720 168 001722 170 001732 171 001742 173 002020 178 002021 180 002023 182 002045 183 002066 184 002070 185 002117 187 002120 188 002123 189 002126 191 002131 192 002136 194 002145 195 002200 196 002202 197 002231 198 002235 201 002236 207 002241 208 002244 209 002245 210 002257 211 002263 212 002276 213 002300 215 002307 216 002317 218 002362 219 002366 221 002367 222 002374 224 002437 225 002443 228 002444 229 002446 230 002450 232 002532 233 002536 235 002537 236 002541 237 002566 238 002570 239 002617 240 002623 242 002624 244 002625 245 002630 246 002655 247 002657 248 002677 249 002703 251 002704 252 002711 255 002712 256 002737 257 002741 258 002770 259 002774 261 002775 264 003002 265 003006 266 003020 267 003022 268 003023 270 003025 271 003033 275 003037 280 003041 282 003060 284 003073 286 003074 287 003076 288 003116 289 003122 294 003123 297 003214 300 003223 301 003225 305 003317 306 003343 308 003400 310 003435 314 003472 315 003516 319 003552 320 003560 321 003610 322 003616 323 003623 325 003643 326 003673 327 003675 328 003707 331 003752 332 003753 333 003755 339 004011 343 004043 344 004046 345 004051 346 004052 347 004053 348 004074 349 004115 350 004142 351 004163 352 004204 353 004230 354 004251 355 004276 356 004323 357 004350 358 004375 359 004417 360 004444 361 004466 362 004513 363 004536 364 004557 365 004603 366 004630 367 004652 368 004677 369 004722 370 004750 372 004773 373 005024 375 005056 376 005076 378 005112 380 005156 382 005230 385 005312 386 005357 390 005452 393 005501 396 005503 399 005507 401 005510 403 005533 404 005537 408 005540 411 005546 412 005573 414 005576 420 005577 429 005601 430 005631 431 005633 432 005641 440 005647 450 005660 451 005707 452 005711 454 005734 457 005735 458 005760 460 005762 461 006016 463 006020 467 006021 473 006032 475 006062 476 006103 479 006104 488 006122 489 006123 491 006126 492 006132 493 006206 494 006212 496 006213 497 006267 500 006274 ----------------------------------------------------------- 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