COMPILATION LISTING OF SEGMENT display_vtoce Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/18/86 1412.2 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: style2,indcomtxt */ 11 12 display_vtoce: 13 procedure options (variable); 14 15 16 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 /* */ 18 /* dump_vtoce Bernard Greenberg 4/21/76 */ 19 /* */ 20 /* Modified: Joe Stansbury 1/82 */ 21 /* 1) made "brief" the default behavior */ 22 /* 2) fixed bug to allow dumping of ncd switch */ 23 /* 3) implemented better error msg when pathname is given as an arg */ 24 /* 4) allowed octal dumping by activation info, file map, and permanent info. */ 25 /* */ 26 /* Modified: J. Bongiovanni, 9/82, synchronized switch, fm_damaged, fm_checksum_valid */ 27 /* Modified: 2/10/83 by GA Texada to add access class to output. */ 28 /* Modified: 2/22/83 by GA Texada to allow pathnames */ 29 /* Modified: 84-01-21 by BIM. Flush octal printing, save with -dump. 30* Display devadds in useful (if more verbose) format. 31* add -he/-nhe -fm/-nfm -octal/-no_octal 32* add -long as for obscure stuff. 33* -octal just dumps the whole thing in dump_segment format. */ 34 35 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 36 37 38 39 /* EXTERNAL ENTRIES */ 40 dcl com_err_ entry () options (variable); 41 dcl com_err_$suppress_name entry () options (variable); 42 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 43 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 44 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 45 dcl date_time_$format entry (character (*), fixed binary (71), character (*), character (*)) 46 returns (character (250) var); 47 dcl dump_segment_ entry (pointer, pointer, fixed binary, fixed binary (18), fixed binary (18), 48 bit (*)); 49 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 50 dcl ioa_ entry () options (variable); 51 dcl ioa_$nnl entry () options (variable); 52 dcl ioa_$rsnnl entry options (variable); 53 dcl mdc_$read_disk_table entry (ptr, fixed bin (35)); 54 dcl mdc_$find_volname entry (bit (36) aligned, char (*), char (*), fixed bin (35)); 55 56 dcl phcs_$get_vtoce entry (fixed bin, fixed bin, ptr, fixed bin (35)); 57 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 58 dcl requote_string_ entry (char (*)) returns (char (*)); 59 dcl vpn_cv_uid_path_$ent entry (ptr, char (*), bit (36) aligned, fixed bin (35)); 60 61 /* BASED */ 62 dcl arg char (argl) based (argp); 63 64 /* BUILTIN */ 65 dcl (addr, divide, fixed, index, lbound, length, hbound, null, reverse, substr, unspec, verify, addwordno, bin, byte, copy, decimal, rtrim, string) 66 builtin; 67 68 /* AUTOMATIC */ 69 dcl Nargs fixed bin; 70 dcl argl fixed bin; 71 dcl argp ptr; 72 dcl code fixed bin (35); 73 dcl fx fixed bin; 74 dcl free bit (1); /* is it a free VTOCE? */ 75 dcl (i, non_ctl_args) fixed bin; 76 dcl (file_map_sw, header_sw, octal_sw, long_sw) 77 bit (1) aligned; 78 dcl last_fme bit (18); 79 dcl skipping bit (1) aligned; 80 dcl args (2) char (168); 81 dcl pname char (168); 82 dcl pvname char (24); 83 dcl lvname char (32); 84 dcl pvtx fixed bin; 85 dcl q (1) ptr init (null ()); 86 dcl sname char (32); 87 dcl vtocx fixed bin; 88 dcl vpn char (168); 89 90 /* STATIC */ 91 dcl goodstuff char (182) varying 92 init ( 93 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.!""#$%&'()=-^~|\{}[]_/?.,<>:*;+@` " 94 ) static internal options (constant); 95 dcl myname char (32) int static options (constant) init ("display_vtoce"); 96 dcl error_table_$pvid_not_found 97 fixed bin (35) ext static; 98 dcl error_table_$bad_conversion 99 fixed bin (35) ext static; 100 dcl error_table_$badopt fixed bin (35) ext static; 101 dcl error_table_$wrong_no_of_args 102 fixed bin (35) ext static; 103 dcl iox_$user_output ptr ext static; 104 105 /* STRUCTURES */ 106 dcl 1 local_vtoce like vtoce aligned; 107 108 /* CONDITIONS */ 109 dcl cleanup condition; 110 111 112 113 114 free = "0"b; 115 header_sw = "1"b; 116 long_sw, octal_sw, file_map_sw = "0"b; 117 pname, pvname = ""; 118 non_ctl_args, vtocx, pvtx = 0; 119 call cu_$arg_count (Nargs, code); 120 if code ^= 0 121 then do; 122 call com_err_ (code, myname); 123 return; 124 end; 125 if Nargs < 1 126 then 127 USAGE: 128 do; 129 call com_err_$suppress_name (0, myname, 130 "Usage: display_vtoce {Pathname|pvname vtocx(octal)} -he/-nhe -fm/-nfm -octal/-no_octal"); 131 return; 132 end; 133 134 do i = 1 to Nargs; 135 call cu_$arg_ptr (i, argp, argl, (0)); 136 if arg = "-long" | arg = "-lg" 137 then header_sw, long_sw = "1"b; 138 else if arg = "-brief" | arg = "-bf" 139 then do; 140 header_sw = "1"b; 141 long_sw = "0"b; 142 end; 143 else if arg = "-octal" | arg = "-oc" 144 then octal_sw = "1"b; 145 else if arg = "-no_octal" | arg = "-noc" 146 then octal_sw = "0"b; 147 else if arg = "-file_map" | arg = "-fm" 148 then file_map_sw = "1"b; 149 else if arg = "-no_file_map" | arg = "-nfm" 150 then file_map_sw = "0"b; 151 else if arg = "-header" | arg = "-he" 152 then header_sw = "1"b; 153 else if arg = "-no_header" | arg = "-nhe" 154 then header_sw = "0"b; 155 else if index (arg, "-") = 1 156 then do; 157 call com_err_ (error_table_$badopt, myname, "^a", arg); 158 return; 159 end; 160 else do; 161 non_ctl_args = non_ctl_args + 1; /* count these to prevent ambiguity */ 162 if non_ctl_args > 2 163 then do; 164 code = error_table_$wrong_no_of_args; 165 goto USAGE; 166 end; 167 args (non_ctl_args) = arg; 168 end; 169 end; 170 if non_ctl_args = 1 171 then do; /* MUST be a pathname */ 172 pname = args (1); /* path given, we need to determine everything */ 173 call get_vtocx (pname, vtocx, pvname, code); 174 /* get the vtocx and pvname */ 175 if code ^= 0 176 then return; /* errors already given */ 177 call get_pvtx ((pvname)); /* use pvname from above to get pvtx */ 178 if code ^= 0 179 then return; 180 end; 181 182 else do; /* if we have 2 non-ctl args */ 183 pvtx = cv_oct_check_ (args (1), code); /* it's either a pvtx (in octal) */ 184 if code ^= 0 185 then do; 186 call get_pvtx (args (1)); /* or a pvname */ 187 if code ^= 0 188 then return; 189 end; 190 else do; /* now, got a pvtx, get pvname */ 191 call get_pvname (pvtx, code); 192 if code ^= 0 193 then return; 194 end; 195 196 vtocx = cv_oct_check_ (args (2), code); /* with either a pvtx or pvname need this */ 197 if code ^= 0 198 then do; 199 call com_err_ (error_table_$bad_conversion, myname, 200 "Invalid vtocx: ^a. Vtocx must be given in octal.", args (2)); 201 return; 202 end; 203 end; 204 205 206 vtocep = addr (local_vtoce); /* set up for get_vtoce */ 207 call phcs_$get_vtoce (pvtx, vtocx, vtocep, code); /* get it */ 208 if code ^= 0 209 then do; 210 call com_err_ (code, myname, "Getting vtoce ^o on pvtx ^o.", vtocx, pvtx); 211 return; 212 end; 213 214 /* Get reasonable printing of name */ 215 216 if vtoce.uid = ""b /* FREE */ 217 then do; 218 free = "1"b; 219 sname = "in a free state"; 220 end; 221 else do; 222 if verify (vtoce.primary_name, goodstuff) = 0 223 then sname = requote_string_ (rtrim (vtoce.primary_name)); 224 else begin; 225 declare pname_bits (32) bit (9) unaligned; 226 unspec (pname_bits) = unspec (vtoce.primary_name); 227 sname = ""; 228 call ioa_$rsnnl ("nonASCII name ^(^.3b^)", sname, (0), pname_bits); 229 end; 230 end; 231 232 call ioa_ ("^/VTOCE ^a ^[(Directory)^], vtocx ^o on pvtx ^o (^a)^/", sname, vtoce.dirsw, vtocx, pvtx, 233 pvname); 234 235 236 if header_sw & ^free 237 then do; 238 call ioa_ ("UID: ^w, msl: ^3d, csl: ^3d, records: ^3d", vtoce.uid, fixed (vtoce.msl, 9), 239 fixed (vtoce.csl, 9), fixed (vtoce.records, 9)); 240 if vtoce.dirsw 241 then do; 242 if vtoce.quota (0) ^= 0 | vtoce.quota (1) ^= 0 243 then call ioa_ (" Quota (S D)^30t(^6d ^6d)", vtoce.quota (0), vtoce.quota (1)); 244 if vtoce.used (0) ^= 0 | vtoce.used (1) ^= 0 245 then call ioa_ (" Quota used (S D)^30t(^6d ^6d)", vtoce.used (0), vtoce.used (1)); 246 if vtoce.received (0) ^= 0 | vtoce.received (1) ^= 0 247 then call ioa_ (" Quota received (S D)^30t(^6d ^6d)", vtoce.received (0), 248 vtoce.received (1)); 249 if vtoce.trp (0) ^= 0 250 then do; 251 call ioa_ ( 252 " Time-record product (S) ^6e page-seconds^/ updated at ^a.", 253 divide (decimal (vtoce.trp (0), 30), 1000000, 30, 6), 254 fs_date_time (vtoce.trp_time (0))); 255 end; 256 if vtoce.trp (1) ^= 0 257 then do; 258 call ioa_ ( 259 " Time-record product (D) ^6e page-seconds^/ updated at ^a.", 260 divide (decimal (vtoce.trp (1), 30), 1000000, 30, 6), 261 fs_date_time (vtoce.trp_time (1))); 262 end; 263 264 end; 265 else call ioa_ ("Usage count = ^d", seg_vtoce.usage); 266 call ioa_ ("Created ^12t^a", fs_date_time (vtoce.time_created)); 267 if vtoce.dtd 268 then call ioa_ ("Dumped ^12t^a", fs_date_time (vtoce.dtd)); 269 else call ioa_ ("Never dumped"); 270 if vtoce.dtu 271 then call ioa_ ("Used ^12t^a", fs_date_time (vtoce.dtu)); 272 else call ioa_ ("Never used"); 273 if vtoce.dtm 274 then call ioa_ ("Modified ^12t^a", fs_date_time (vtoce.dtm)); 275 else call ioa_ ("Never modified"); 276 call flag$$init; 277 call flag (vtoce.deciduous, "deciduous"); 278 call flag (vtoce.per_process, "per_process"); 279 call flag (vtoce.nqsw, "nqsw"); 280 call flag (vtoce.master_dir, "master_dir"); 281 call flag (vtoce.nid, "nid"); 282 call flag (vtoce.ncd, "ncd"); 283 call flag (vtoce.dnzp, "dnzp"); 284 call flag (vtoce.damaged, "damaged"); 285 call flag (vtoce.synchronized, "synchronized"); 286 call flag (vtoce.fm_damaged, "fm_damaged"); 287 call flag (vtoce.fm_checksum_valid, "fm_checksum_valid"); 288 call flag$$display; 289 call get_access_class (vtoce.access_class, code); 290 if code ^= 0 291 then call ioa_ ("Unable to convert access class information."); 292 end; 293 294 if long_sw 295 then do; 296 call vpn_cv_uid_path_$ent (addr (vtoce.uid_path), vpn, (vtoce.uid), code); 297 if code = 0 298 then call ioa_ ("UID path: ^a", vpn); 299 else call com_err_$suppress_name (code, myname, "UID path ^(^w^).", vtoce.uid_path); 300 call mdc_$find_volname ((vtoce.par_pvid), pvname, lvname, code); 301 if code = 0 302 then call ioa_ ("Parent vtocx ^o of ^a of LV ^a", vtoce.par_vtocx, pvname, lvname); 303 else call com_err_$suppress_name (code, myname, "Parent vtocx ^0 of pvid ^w.", vtoce.par_vtocx, 304 vtoce.par_pvid); 305 if vtoce.cn_salv_time 306 then call ioa_ ("Check-vtoce salvage at ^a.", fs_date_time ((vtoce.cn_salv_time))); 307 if vtoce.volid (1) 308 then call VOLID (vtoce.volid (1), "incremental"); 309 if vtoce.volid (2) 310 then call VOLID (vtoce.volid (2), "consolidated"); 311 if vtoce.volid (3) 312 then call VOLID (vtoce.volid (3), "complete"); 313 end; 314 if file_map_sw 315 then do; 316 317 last_fme = ""b; /* unlikely */ 318 skipping = "0"b; 319 call ioa_ ("File map:"); 320 do fx = 0 to hbound (vtoce.fm, 1); 321 if vtoce.fm (fx) = last_fme & fx < hbound (vtoce.fm, 1) 322 then skipping = "1"b; /* skip it */ 323 else if skipping 324 then do; 325 skipping = "0"b; 326 call ioa_ (" ======"); 327 end; 328 329 if ^skipping | fx = hbound (vtoce.fm, 1) 330 then do; 331 last_fme = vtoce.fm (fx); 332 call ioa_$nnl ("^3d ", fx); 333 if vtoce.fm (fx) = create_vtoce_null_addr 334 then call ioa_ ("Null address from create_vtoce"); 335 else if vtoce.fm (fx) = update_vtoce_null_addr 336 then call ioa_ ("Null address from update_vtoce"); 337 else if vtoce.fm (fx) = truncate_vtoce_null_addr 338 then call ioa_ ("Null address from truncate_vtoce"); 339 else if vtoce.fm (fx) = truncate_vtoce_fill_null_addr 340 then call ioa_ ("Null address from truncate_vtoce_fill_vtoce"); 341 else if vtoce.fm (fx) = pv_salv_null_addr 342 then call ioa_ ("Null address from pv_salv"); 343 else if vtoce.fm (fx) = pv_scav_null_addr 344 then call ioa_ ("Null address from pv_scav"); 345 else if vtoce.fm (fx) = volume_reloader_null_addr 346 then call ioa_ ("Null address from volume_reloader"); 347 else if vtoce.fm (fx) = salv_truncate_null_addr 348 then call ioa_ ("Null address from salv_truncate"); 349 else if substr (vtoce.fm (fx), 1, 1) 350 then call ioa_ ("^a", page_control_null_address (vtoce.fm (fx))); 351 else call ioa_ ("Record ^6o", vtoce.fm (fx)); 352 end; 353 end; 354 end; 355 356 if octal_sw 357 then do; 358 call ioa_ ("Octal dump:^/"); 359 call ioa_ (" Part 1:"); 360 call dump_segment_ (iox_$user_output, addr (local_vtoce), -1, 0, 64, "01000"b); 361 call ioa_ ("^/Part 2:"); 362 call dump_segment_ (iox_$user_output, addwordno (addr (local_vtoce), 64), -1, 0, 64, "01000"b); 363 call ioa_ ("^/Part 3:"); 364 call dump_segment_ (iox_$user_output, addwordno (addr (local_vtoce), 128), -1, 0, 64, "01000"b); 365 end; 366 367 return; 368 369 370 fs_date_time: 371 procedure (dt) returns (char (30)); 372 373 declare dt bit (36); 374 declare 1 clock_ aligned like clock_value; 375 declare time fixed bin (71); 376 declare sub_error_ condition; 377 378 clock_ = ""b; 379 clock_.fs_time = dt; 380 unspec (time) = string (clock_); 381 go to COMMON; 382 383 date_time: 384 entry (full_clock) returns (char (30)); 385 386 declare full_clock fixed bin (71); 387 388 unspec (time) = unspec (full_clock); 389 390 COMMON: 391 if time = 0 392 then 393 ZERO: 394 return ("ZERO"); 395 396 on sub_error_ go to ZERO; 397 return (date_time_$format ("iso_long_date_time", time, "", "")); 398 end fs_date_time; 399 400 get_pvtx: 401 proc (in_pvname); 402 403 dcl in_pvname char (*); 404 405 on cleanup call release_temp_segments_ (myname, q, (0)); 406 call get_temp_segments_ (myname, q, code); 407 if code ^= 0 408 then do; 409 call com_err_ (code, myname, "Getting temp disk table."); 410 return; 411 end; 412 dtp = q (1); /* set up pointer for disk table */ 413 call mdc_$read_disk_table (dtp, code); /* get it */ 414 if code ^= 0 415 then do; 416 call com_err_ (code, myname, "Getting disk table."); 417 call release_temp_segments_ (myname, q, (0)); 418 return; 419 end; 420 do pvtx = 1 to dt.n_entries; /* look for given PV */ 421 dtep = addr (dt.array (pvtx)); /* set pointer just in case, */ 422 if dte.used & dte.storage_system & dte.pvname = in_pvname 423 then go to got_pvtx; /* found it, continue. */ 424 end; 425 code = error_table_$pvid_not_found; 426 call com_err_ (code, myname, "^a", in_pvname); 427 call release_temp_segments_ (myname, q, (0)); 428 return; 429 430 got_pvtx: 431 pvname = dte.pvname; 432 call release_temp_segments_ (myname, q, (0)); 433 end get_pvtx; 434 435 get_pvname: 436 proc (in_pvtx, ec); 437 438 dcl in_pvtx fixed bin, 439 ec fixed bin (35); 440 441 on cleanup call release_temp_segments_ (myname, q, (0)); 442 call get_temp_segments_ (myname, q, ec); 443 if ec ^= 0 444 then do; 445 call com_err_ (ec, myname, "Getting temp disk table."); 446 return; 447 end; 448 dtp = q (1); /* set up pointer for disk table */ 449 call mdc_$read_disk_table (dtp, ec); /* get it */ 450 if ec ^= 0 451 then do; 452 call com_err_ (ec, myname, "Getting disk table."); 453 call release_temp_segments_ (myname, q, (0)); 454 return; 455 end; 456 if (in_pvtx <= hbound (dt.array, 1) & in_pvtx >= lbound (dt.array, 1)) 457 then ; /* check bounds to be sure */ 458 else goto no_pvtx; /* out-of-bounds pvtx */ 459 dtep = addr (dt.array (in_pvtx)); /* set pointer just in case, */ 460 if dte.used & dte.storage_system 461 then pvname = dte.pvname; 462 else do; 463 no_pvtx: 464 ec = error_table_$pvid_not_found; 465 call com_err_ (ec, myname, "Pvtx = ^d", in_pvtx); 466 end; 467 call release_temp_segments_ (myname, q, (0)); 468 return; 469 470 end get_pvname; 471 472 get_vtocx: 473 proc (pin, vtocxo, pvname, ec); 474 475 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 476 /* */ 477 /* This procedure was cribbed from display_branch in its entirety. Very minor changes */ 478 /* have been made to fit it in here. */ 479 /* */ 480 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 481 482 483 dcl pin char (*), 484 pvname char (*), 485 vtocxo fixed bin, 486 ec fixed bin (35), 487 LINK bit (18) unal init ("000000000000000101"b) int static options (constant), 488 (adir, pdir) char (168), 489 (ent, pent) char (32), 490 (verify, null, addr, ptr, baseno, fixed, size, length, rel, reverse, substr) 491 builtin, 492 q ptr, 493 error_table_$noentry fixed bin (35) ext, 494 ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)), 495 (rzdp, rzdsp) ptr, 496 1 tsdw like sdw aligned, 497 lvname char (32), 498 ppname char (168), 499 epname char (168), 500 (dirsegno, failct) fixed bin, 501 hash_index_ entry (ptr, fixed bin, fixed bin, fixed bin) returns (fixed bin), 502 dirlen fixed bin (17), 503 hsi fixed bin, 504 phcs_$initiate entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35)), 505 phcs_$terminate_noname entry (ptr, fixed bin (35)), 506 phcs_$ring_0_peek entry (ptr, ptr, fixed bin), 507 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 508 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 509 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 510 (cleanup, out_of_bounds) 511 condition; 512 1 1 /* BEGIN INCLUDE FILE ... sdw.incl.pl1 ... last modified 12 May 1976 */ 1 2 1 3 dcl sdwp ptr; 1 4 1 5 dcl 1 sdw based (sdwp) aligned, /* Segment Descriptor Word */ 1 6 1 7 (2 add bit (24), /* main memory address of page table */ 1 8 2 (r1, r2, r3) bit (3), /* ring brackets for the segment */ 1 9 2 df bit (1), /* directed fault bit (0 => fault) */ 1 10 2 df_no bit (2), /* directed fault number */ 1 11 1 12 2 pad1 bit (1), 1 13 2 bound bit (14), /* boundary field (in 16 word blocks) */ 1 14 2 access, /* access bits */ 1 15 3 read bit (1), /* read permission bit */ 1 16 3 execute bit (1), /* execute permission bit */ 1 17 3 write bit (1), /* write permission bit */ 1 18 3 privileged bit (1), /* privileged bit */ 1 19 2 unpaged bit (1), /* segment is unpaged if this is 1 */ 1 20 2 entry_bound_sw bit (1), /* if this is 0 the entry bound is checked by hardware */ 1 21 2 cache bit (1), /* cache enable bit */ 1 22 2 entry_bound bit (14)) unaligned; /* entry bound */ 1 23 1 24 dcl 1 sdwa (0: 1) based (sdwp) aligned like sdw; /* SDW array (descriptor segment) */ 1 25 1 26 /* END INCLUDE FILE sdw.incl.pl1 */ 513 514 2 1 /* BEGIN INCLUDE FILE ... dir_header.incl.pl1 */ 2 2 /* Modified 8/74 for NSS */ 2 3 /* Modified 8/76 to add version number and hash table rel pointer for variable hash table sizes */ 2 4 /* Modified 3/82 BIM for change pclock */ 2 5 /* format: style3 */ 2 6 2 7 /* Template for the directory header. Length = 64 words. */ 2 8 2 9 dcl dp ptr; 2 10 2 11 dcl 1 dir based (dp) aligned, 2 12 2 13 2 modify bit (36), /* Process ID of last modifier */ 2 14 2 type bit (18) unaligned, /* type of object = dir header */ 2 15 2 size fixed bin (17) unaligned, /* size of header in words */ 2 16 2 dtc (3), /* date-time checked by salvager array */ 2 17 3 date bit (36), /* the date */ 2 18 3 error bit (36), /* what errors were discovered */ 2 19 2 20 2 uid bit (36), /* uid of the directory - copied from branch */ 2 21 2 22 2 pvid bit (36), /* phys vol id of the dir - copied from branch */ 2 23 2 24 2 sons_lvid bit (36), /* log vol id for inf non dir seg - copied from branch */ 2 25 2 26 2 access_class bit (72), /* security attributes of dir - copied from branch */ 2 27 2 28 (2 vtocx fixed bin (17), /* vtoc entry index of the dir - copied from branch */ 2 29 2 version_number fixed bin (17), /* version number of header */ 2 30 2 31 2 entryfrp bit (18), /* rel ptr to beginning of entry list */ 2 32 2 pad2 bit (18), 2 33 2 34 2 entrybrp bit (18), /* rel ptr to end of entry list */ 2 35 2 pad3 bit (18), 2 36 2 37 2 pers_frp bit (18), /* rel ptr to start of person name list */ 2 38 2 proj_frp bit (18), /* rel ptr to start of project name list */ 2 39 2 40 2 pers_brp bit (18), /* rel ptr to end of person name list */ 2 41 2 proj_brp bit (18), /* rel ptr to end of project name list */ 2 42 2 43 2 seg_count fixed bin (17), /* number of non-directory branches */ 2 44 2 dir_count fixed bin (17), /* number of directory branches */ 2 45 2 46 2 lcount fixed bin (17), /* number of links */ 2 47 2 acle_total fixed bin (17), /* total number of ACL entries in directory */ 2 48 2 49 2 arearp bit (18), /* relative pointer to beginning of allocation area */ 2 50 2 per_process_sw bit (1), /* indicates dir contains per process segments */ 2 51 2 master_dir bit (1), /* TRUE if this is a master dir */ 2 52 2 force_rpv bit (1), /* TRUE if segs must be on RPV */ 2 53 2 rehashing bit (1), /* TRUE if hash table is being constructed */ 2 54 2 pad4 bit (14), 2 55 2 56 2 iacl_count (0:7), 2 57 3 seg fixed bin (17), /* number of initial acl entries for segs */ 2 58 3 dir fixed bin (17), /* number of initial acl entries for dir */ 2 59 2 60 2 iacl (0:7), /* pointer to initial ACLs for each ring */ 2 61 3 seg_frp bit (18), /* rel ptr to start of initial ACL for segs */ 2 62 3 seg_brp bit (18), /* rel ptr to end of initial ACL for segs */ 2 63 2 64 3 dir_frp bit (18), /* rel ptr to start of initial for dirs */ 2 65 3 dir_brp bit (18), /* rel ptr to end of initial ACL for dirs */ 2 66 2 67 2 htsize fixed bin (17), /* size of hash table */ 2 68 2 hash_table_rp bit (18), /* rel ptr to start of hash table */ 2 69 2 70 2 htused fixed bin (17), /* no. of used places in hash table */ 2 71 2 pad6 fixed bin (17), 2 72 2 73 2 tree_depth fixed bin (17), /* number of levels from root of this dir */ 2 74 2 pad7 bit (18)) unaligned, 2 75 2 76 2 dts bit (36), /* date-time directory last salvaged */ 2 77 2 78 2 master_dir_uid bit (36), /* uid of superior master dir */ 2 79 2 change_pclock fixed bin (35), /* up one each call to sum$dirmod */ 2 80 2 pad8 (11) bit (36), /* pad to make it a 64 word header */ 2 81 2 checksum bit (36), /* checksummed from uid on */ 2 82 2 owner bit (36); /* uid of parent dir */ 2 83 2 84 dcl version_number_2 fixed bin int static options (constant) init (2); 2 85 2 86 /* END INCLUDE FILE ... dir_header.incl.pl1 */ 515 3 1 /* BEGIN INCLUDE FILE ... dir_ht.incl.pl1 */ 3 2 3 3 3 4 dcl htp ptr; 3 5 3 6 dcl 1 hash_table based (htp) aligned, /* htp = ptr(dp,active_hardcore_data$htrp) */ 3 7 2 modify bit (36) unal, 3 8 2 type bit (18) unal, /* type = dir hash table */ 3 9 2 size fixed bin (17) unal, /* size of current dir hash table entry */ 3 10 2 name_rp (0:1) bit(18) unal, /* rel ptr of name entry */ 3 11 2 checksum bit (36) unal, 3 12 2 owner bit (36) unal; 3 13 /* otherwise rel ptr to name */ 3 14 3 15 /* END INCLUDE FILE ... dir_ht.incl.pl1 */ 516 517 4 1 /* BEGIN INCLUDE FILE ... dir_entry.incl.pl1 ...last modified August 1974 for nss */ 4 2 4 3 4 4 /* Template for an entry. Length = 38 words */ 4 5 4 6 dcl ep ptr; 4 7 4 8 dcl 1 entry based (ep) aligned, 4 9 4 10 (2 efrp bit (18), /* forward rel ptr to next entry */ 4 11 2 ebrp bit (18)) unaligned, /* backward rel ptr to previous entry */ 4 12 4 13 2 type bit (18) unaligned, /* type of object = dir entry */ 4 14 2 size fixed bin (17) unaligned, /* size of dir entry */ 4 15 4 16 2 uid bit (36), /* unique id of entry */ 4 17 4 18 2 dtem bit (36), /* date-time entry modified */ 4 19 4 20 (2 bs bit (1), /* branch switch = 1 if branch */ 4 21 2 pad0 bit (17), 4 22 2 nnames fixed bin (17), /* number of names for this entry */ 4 23 4 24 2 name_frp bit (18), /* rel pointer to start of name list */ 4 25 2 name_brp bit (18), /* rel pointer to end of name list */ 4 26 4 27 2 author, /* user who created branch */ 4 28 3 pers_rp bit (18), /* name of user who created branch */ 4 29 3 proj_rp bit (18), /* project of user who created branch */ 4 30 4 31 3 tag char (1), /* tag of user who created branch */ 4 32 3 pad1 char (3), 4 33 4 34 2 primary_name bit (504), /* first name on name list */ 4 35 4 36 2 dtd bit (36), /* date time dumped */ 4 37 4 38 2 pad2 bit (36), 4 39 4 40 4 41 /* the declarations below are for branch only */ 4 42 4 43 4 44 2 pvid bit (36), /* physical volume id */ 4 45 4 46 2 vtocx fixed bin (17), /* vtoc entry index */ 4 47 2 pad3 bit (18), 4 48 4 49 2 dirsw bit (1), /* = 1 if this is a directory branch */ 4 50 2 oosw bit (1), /* out of service switch on = 1 */ 4 51 2 per_process_sw bit (1), /* indicates segment is per process */ 4 52 2 copysw bit (1), /* = 1 make copy of segment whenever initiated */ 4 53 2 safety_sw bit (1), /* if 1 then entry cannot be deleted */ 4 54 2 multiple_class bit (1), /* segment has multiple security classes */ 4 55 2 audit_flag bit (1), /* segment must be audited for security */ 4 56 2 security_oosw bit (1), /* security out of service switch */ 4 57 2 entrypt_sw bit (1), /* 1 if call limiter is to be enabled */ 4 58 2 master_dir bit (1), /* TRUE for master directory */ 4 59 2 tpd bit (1), /* TRUE if this segment is never to go on the PD */ 4 60 2 pad4 bit (11), 4 61 2 entrypt_bound bit (14)) unaligned, /* call limiter */ 4 62 4 63 2 access_class bit (72) aligned, /* security attributes : level and category */ 4 64 4 65 (2 ring_brackets (3) bit (3), /* ring brackets on segment */ 4 66 2 ex_ring_brackets (3) bit (3), /* extended ring brackets */ 4 67 2 acle_count fixed bin (17), /* number of entries on ACL */ 4 68 4 69 2 acl_frp bit (18), /* rel ptr to start of ACL */ 4 70 2 acl_brp bit (18), /* rel ptr to end of ACL */ 4 71 4 72 2 bc_author, /* user who last set the bit count */ 4 73 3 pers_rp bit (18), /* name of user who set the bit count */ 4 74 3 proj_rp bit (18), /* project of user who set the bit count */ 4 75 4 76 3 tag char (1), /* tag of user who set the bit count */ 4 77 3 pad5 bit (2), 4 78 2 bc fixed bin (24)) unaligned, /* bit count for segs, msf indicator for dirs */ 4 79 4 80 2 sons_lvid bit (36), /* logical volume id for immediat inf non dir seg */ 4 81 4 82 2 pad6 bit (36), 4 83 4 84 2 checksum bit (36), /* checksum from dtd */ 4 85 4 86 2 owner bit (36); /* uid of containing directory */ 4 87 4 88 /* END INCLUDE FILE ... dir_entry.incl.pl1 ... */ 518 519 5 1 /* BEGIN INCLUDE FILE ... dir_link.incl.pl1 ... last modified August 1974 for nss */ 5 2 5 3 /* Template for link. Note that it is identical to entry for first 24 words. */ 5 4 5 5 5 6 dcl 1 link based (ep) aligned, 5 7 5 8 (2 efrp bit (18), /* forward rel ptr to next entry */ 5 9 2 ebrp bit (18), /* backward rel ptr to previous entry */ 5 10 5 11 2 type bit (18), /* type = dir link */ 5 12 2 size fixed bin (17), /* size of link in words */ 5 13 5 14 2 uid bit (36), /* unique id of entry */ 5 15 5 16 2 dtem bit (36), /* date-time entry modified */ 5 17 5 18 2 bs bit (1), /* entry switch = 1 if entry */ 5 19 2 pad0 bit (17), 5 20 2 nnames fixed bin (17), /* number of names for this entry */ 5 21 5 22 2 name_frp bit (18), /* rel pointer to start of name list */ 5 23 2 name_brp bit (18), /* rel pointer to end of name list */ 5 24 5 25 2 author, /* user who created entry */ 5 26 3 pers_rp bit (18), /* name of user who created entry */ 5 27 3 proj_rp bit (18), /* project of user who created entry */ 5 28 5 29 3 tag char (1), /* tag of user who created entry */ 5 30 3 pad1 char (3), 5 31 5 32 2 primary_name bit (504), /* first name on name list */ 5 33 5 34 2 dtd bit (36), /* date time dumped */ 5 35 5 36 2 pad2 bit (36), 5 37 5 38 5 39 /* the declarations below are only applicable to links */ 5 40 5 41 2 pad3 bit (18), 5 42 2 pathname_size fixed bin (17), /* number of characters in pathname */ 5 43 5 44 2 pathname char (168 refer (pathname_size))) unaligned, /* pathname of link */ 5 45 5 46 2 checksum bit (36), /* checksum from uid */ 5 47 5 48 2 owner bit (36); /* uid of containing directory */ 5 49 5 50 /* END INCLUDE FILE ... dir_link.incl.pl1 */ 520 521 6 1 /* BEGIN INCLUDE FILE ... dir_name.incl.pl1 ... last modified Nov 1975 for nss */ 6 2 6 3 /* Template for names of branches or links. Length = 14 words. */ 6 4 6 5 dcl np ptr; 6 6 6 7 dcl 1 names based aligned, /* based on ptr(dp,ep->entry.name_frp) */ 6 8 2 fp bit(18) unaligned, /* rel ptr to next name */ 6 9 2 bp bit(18) unaligned, /* rel ptr to prev name */ 6 10 6 11 2 type bit (18) unaligned, /* type = dir name */ 6 12 2 size fixed bin (17) unaligned, /* size of dir name */ 6 13 6 14 2 entry_rp bit(18) unaligned, /* rel ptr to entry */ 6 15 2 ht_index fixed bin(17) unaligned, /* index of hash table entry */ 6 16 6 17 2 hash_thread bit (18) unal, /* relative ptr to next hash entry */ 6 18 2 pad3 bit (18) unal, 6 19 6 20 2 name char(32) aligned, 6 21 6 22 2 checksum bit (36), /* checksum from entry_rp */ 6 23 6 24 2 owner bit (36); /* uid of entry */ 6 25 6 26 6 27 /* END INCLUDE FILE ... dir_name.incl.pl1 */ 522 523 524 rzdsp, q = null (); 525 ec = 0; 526 call ring0_get_$segptr ("", "dseg", rzdsp, ec); 527 if ec ^= 0 528 then do; 529 call com_err_ (0, myname, "Cannot get dseg ptr"); 530 return; 531 end; 532 got_ent: 533 call expand_pathname_ (pin, adir, ent, ec); 534 if ec ^= 0 535 then do; 536 call com_err_ (ec, myname, pin); 537 goto RETURN; 538 end; 539 540 if adir = ">" 541 then if ent = "" 542 then do; 543 pvname = "rpv"; 544 vtocxo = 0; 545 goto RETURN; 546 end; 547 548 call expand_pathname_ (adir, pdir, pent, (0)); /* Cannot fail */ 549 if pdir = ">" 550 then ppname = ">" || pent; 551 else ppname = substr (pdir, 1, trim (pdir)) || ">" || pent; 552 553 if pent = "" 554 then epname = ">" || ent; 555 else epname = substr (adir, 1, trim (adir)) || ">" || ent; 556 557 558 on cleanup goto RETURN; 559 560 call get_temp_segment_ (myname, q, ec); 561 if ec ^= 0 562 then do; 563 call com_err_ (ec, myname, "Getting temp segment."); 564 goto RETURN; 565 end; 566 567 dp = q; 568 call phcs_$initiate (pdir, pent, "", 0, 0, rzdp, ec); 569 if rzdp = null 570 then do; 571 call com_err_ (ec, myname, ppname); 572 goto RETURN; 573 end; 574 575 dirsegno = fixed (baseno (rzdp), 18); 576 call phcs_$ring_0_peek (rzdp, dp, 1); /* Cause fault */ 577 failct = 0; 578 ftsdw: 579 call phcs_$ring_0_peek (addr (rzdsp -> sdwa (dirsegno)), addr (tsdw), 2); 580 if tsdw.bound = "0"b 581 then go to ftsdw; 582 dirlen = fixed (tsdw.bound, 15) * 16 + 16; 583 584 on out_of_bounds go to refetch_dir; 585 refetch_dir: 586 failct = failct + 1; 587 if failct > 10 588 then do; 589 call com_err_ (0, myname, "Cannot get consistent copy of ^a after 10 tries", ppname); 590 goto RETURN; 591 end; 592 593 call m_a (dp, size (dir)); 594 hsi = hash_index_ (addr (ent), trim (ent), 0, (dir.htsize)); 595 htp = ptr (dp, dp -> dir.hash_table_rp); 596 call m_a (htp, (dir.htsize)); 597 598 do np = ptr (dp, htp -> hash_table.name_rp (hsi)) repeat ptr (dp, np -> names.hash_thread) while (rel (np)); 599 call m_a (np, size (names)); 600 if fixed (rel (np), 18) >= dirlen 601 then go to refetch_dir; 602 if np -> names.ht_index ^= hsi 603 then go to refetch_dir; 604 if ent = np -> names.name 605 then do; 606 607 ep = ptr (dp, np -> names.entry_rp); 608 call m_a (ep, size (entry)); 609 if entry.type = LINK 610 then do; 611 pin = link.pathname; 612 call release_temp_segment_ (myname, q, (0)); 613 call phcs_$terminate_noname (rzdp, (0)); 614 goto got_ent; 615 end; 616 vtocxo = entry.vtocx; 617 call mdc_$find_volname ((entry.pvid), pvname, lvname, ec); 618 if ec ^= 0 619 then do; 620 call com_err_ (ec, myname, "^/ Cannot determine vol name for pvid ^w", entry.pvid); 621 lvname, pvname = "-NOT-CLEAR-"; 622 end; 623 goto RETURN; 624 end; 625 end; /* Name not found. Cleanup and return. */ 626 call com_err_ (error_table_$noentry, myname, epname); 627 RETURN: 628 if q ^= null () 629 then call release_temp_segment_ (myname, q, (0)); 630 if rzdp ^= null () 631 then call phcs_$terminate_noname (rzdp, (0)); 632 return; 633 634 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 635 636 637 trim: 638 proc (ch) returns (fixed bin); 639 dcl ch char (*); 640 dcl x fixed bin; 641 x = verify (reverse (ch), " "); 642 if x ^= 0 643 then x = length (ch) - x + 1; 644 return (x); 645 end trim; 646 647 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 648 649 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 650 651 652 m_a: 653 proc (cp, sz); 654 655 /* This proc is needed to avoid copying a whole directory out, 656* which can, and did one May morning in Phoenix, withdraw a large number 657* of pages against the RLV. Writers of similar programs beware. */ 658 659 dcl (cp, rgp) ptr, 660 sz fixed bin; 661 662 rgp = ptr (rzdp, rel (cp)); 663 call phcs_$ring_0_peek (rgp, cp, sz); 664 end m_a; 665 666 end get_vtocx; 667 668 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 669 670 get_access_class: 671 proc (access_class, code); 672 673 dcl access_class bit (72) aligned, 674 (class, temp_string) char (336), 675 (class_len, k, kk) fixed bin, 676 short_class char (32), 677 first bit (1), 678 code fixed bin (35); 679 dcl convert_authorization_$to_string_short 680 entry (bit (72) aligned, char (*), fixed bin (35)); 681 dcl convert_aim_attributes_ 682 entry (bit (72) aligned, char (32)); 683 684 code = 0; 685 686 call convert_authorization_$to_string_short (access_class, class, code); 687 if code ^= 0 688 then do; 689 call convert_aim_attributes_ (access_class, short_class); 690 class = rtrim (short_class) || " (invalid)"; 691 end; 692 if class = "" 693 then call ioa_ ("Access Class: system_low"); 694 else do; /* format access class in lines of 50 chars */ 695 class_len = index (class, " ") - 1; 696 if class_len = -1 697 then class_len = 336; 698 k = 1; 699 first = "1"b; 700 do while ((class_len - k + 1) > 50); 701 temp_string = substr (class, k, 50); 702 kk = length (temp_string) + 1 - index (reverse (temp_string), ","); 703 call ioa_ ("^[Access Class:^; ^] ^a", (first), substr (class, k, kk)); 704 first = "0"b; 705 k = k + kk; 706 end; 707 call ioa_ ("^[Access Class: ^; ^]^a", (first), substr (class, k)); 708 end; 709 end get_access_class; 710 711 VOLID: 712 procedure (encoded_volid, type); 713 declare encoded_volid bit (36); 714 declare type char (*); 715 716 declare 1 volid unaligned, 717 2 name char (2), 718 2 number fixed bin (18) unsigned; 719 720 unspec (volid) = encoded_volid; 721 call ioa_ ("Last ^a volume dumped on volume ^a^d", type, volid.name, volid.number); 722 return; 723 end VOLID; 724 725 page_control_null_address: 726 procedure (fme) returns (char (80) varying); 727 728 declare fme bit (18) unaligned; 729 730 declare 1 null_address unaligned, 731 2 seven_7_7_0 bit (12) unaligned,/* or 377 */ 732 2 key bit (6); 733 734 declare kx fixed bin; 735 declare cv_bin_$oct entry (fixed binary (18) uns) returns (character (12) aligned); 736 737 string (null_address) = fme; 738 739 kx = bin (null_address.key, 6); 740 if kx < lbound (NULLS, 1) | kx > hbound (NULLS, 1) 741 then return ("Undocumented null address " || rtrim (cv_bin_$oct (bin (fme)))); 742 else return ("Page control null address from " || rtrim (NULLS (kx))); 743 744 declare NULLS (0:58) char (60) int static options (constant) varying init ("zeros", 745 /* 0 */ 746 (6) (1)"invalid source", 747 /* 1 -> 6 */ 748 "pc$move_page_table_1", 749 /* 7 */ 750 "pc$move_page_table_2", 751 /* 10 */ 752 "get_aste", /* 11 */ 753 "make_sdw", /* 12 */ 754 "put_aste", /* 13 */ 755 (2) (1)"invalid source", 756 /* 15 */ 757 "list_deposit", /* 16 */ 758 "get_file_map", /* 17 */ 759 "fill_page_table", /* 20 */ 760 "init_sst", /* 21 */ 761 "get_file_map_vt", /* 22 */ 762 "unprotected", /* 23 */ 763 "page_bad", /* 24 */ 764 "page_problem", /* 25 */ 765 "page_parity", /* 26 */ 766 "page_devparity", /* 27 */ 767 (34) (1)"invalid source", 768 /* 28 - 53 */ 769 "get_file_map_dumper" /* 72, sort of */); 770 end page_control_null_address; 771 772 declare flags (0:1) char (1000) varying; 773 /* off, on */ 774 declare line_used (0:1) fixed bin; /* line length used up on cur line */ 775 declare line_length fixed bin; 776 777 flag$$init: 778 procedure; 779 780 declare get_line_length_$switch 781 entry (pointer, fixed binary (35)) returns (fixed binary); 782 declare iox_$user_output ptr ext static; 783 784 line_length = get_line_length_$switch (iox_$user_output, code); 785 if code ^= 0 786 then line_length = 72; 787 flags (0) = "OFF: "; 788 flags (1) = "ON: "; 789 line_used (*) = 10; /* always prepend space */ 790 return; 791 792 flag: 793 entry (flag_bit, flag_name); 794 795 declare flag_bit bit (1) unaligned; 796 declare flag_name char (*); 797 798 declare flag_bin fixed bin (1); 799 800 flag_bin = bin (flag_bit, 1); 801 if line_used (flag_bin) + length (flag_name) + 1 > line_length 802 then do; 803 flags (flag_bin) = flags (flag_bin) || byte (10) || copy (" ", 10); 804 /* NL */ 805 line_used (flag_bin) = 10; 806 end; 807 flags (flag_bin) = flags (flag_bin) || " " || flag_name; 808 /* assume trimmed */ 809 line_used (flag_bin) = line_used (flag_bin) + 1 + length (flag_name); 810 return; 811 812 flag$$display: 813 entry; 814 815 call ioa_ ("^/^a^/^a^/", flags (1), flags (0)); 816 return; 817 end flag$$init; 818 819 820 7 1 /* BEGIN INCLUDE FILE ...vtoce.incl.pl1 ... last modified September 1982 */ 7 2 /* Template for a VTOC entry. Length = 192 words. (3 * 64). */ 7 3 /* NOTE: vtoc_man clears pad fields before writing a vtoce. */ 7 4 7 5 dcl vtocep ptr; 7 6 7 7 dcl 1 vtoce based (vtocep) aligned, 7 8 7 9 7 10 (2 pad_free_vtoce_chain bit (36), /* Used to be pointer to next free VTOCE */ 7 11 7 12 2 uid bit (36), /* segment's uid - zero if vtoce is free */ 7 13 7 14 2 msl bit (9), /* maximum segment length in 1024 word units */ 7 15 2 csl bit (9), /* current segment length - in 1024 word units */ 7 16 2 records bit (9), /* number of records used by the seg in second storage */ 7 17 2 pad2 bit (9), 7 18 7 19 2 dtu bit (36), /* date and time segment was last used */ 7 20 7 21 2 dtm bit (36), /* date and time segment was last modified */ 7 22 7 23 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 7 24 2 deciduous bit (1), /* true if hc_sdw */ 7 25 2 nid bit (1), /* no incremental dump switch */ 7 26 2 dnzp bit (1), /* Dont null zero pages */ 7 27 2 gtpd bit (1), /* Global transparent paging device */ 7 28 2 per_process bit (1), /* Per process segment (deleted every bootload) */ 7 29 2 damaged bit (1), /* TRUE if contents damaged */ 7 30 2 fm_damaged bit (1), /* TRUE if filemap checksum bad */ 7 31 2 fm_checksum_valid bit (1), /* TRUE if the checksum has been computed */ 7 32 2 synchronized bit (1), /* TRUE if this is a data management synchronized segment */ 7 33 2 pad3 bit (8), 7 34 2 dirsw bit (1), /* directory switch */ 7 35 2 master_dir bit (1), /* master directory - a root for the logical volume */ 7 36 2 pad4 bit (16)) unaligned, /* not used */ 7 37 7 38 2 fm_checksum bit (36) aligned, /* Checksum of used portion of file map */ 7 39 7 40 (2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 7 41 7 42 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 7 43 7 44 2 received (0:1) fixed bin (18) unsigned, /* total amount of storage this dir has received */ 7 45 7 46 2 trp (0:1) fixed bin (71), /* time record product - (0) for non dir pages */ 7 47 7 48 2 trp_time (0:1) bit (36), /* time time_record_product was last calculated */ 7 49 7 50 7 51 7 52 7 53 7 54 2 fm (0:255) bit (18), /* file map - 256 entries - 18 bits per entry */ 7 55 7 56 2 pad6 (10) bit (36), /* not used */ 7 57 7 58 2 ncd bit (1), /* no complete dump switch */ 7 59 2 pad7 bit (17), 7 60 2 pad8 bit (18), 7 61 7 62 2 dtd bit (36), /* date-time-dumped */ 7 63 7 64 2 volid (3) bit (36), /* volume ids of last incremental, consolidated, and complete dumps */ 7 65 7 66 2 master_dir_uid bit (36), /* superior master directory uid */ 7 67 7 68 7 69 7 70 7 71 2 uid_path (0:15) bit (36), /* uid pathname of all parents starting after the root */ 7 72 7 73 2 primary_name char (32), /* primary name of the segment */ 7 74 7 75 2 time_created bit (36), /* time the segment was created */ 7 76 7 77 2 par_pvid bit (36), /* physical volume id of the parent */ 7 78 7 79 2 par_vtocx fixed bin (17), /* vtoc entry index of the parent */ 7 80 2 branch_rp bit (18)) unaligned, /* rel pointer of the branch of this segment */ 7 81 7 82 2 cn_salv_time bit (36), /* time branch - vtoce connection checked */ 7 83 7 84 2 access_class bit (72), /* access class in branch */ 7 85 2 perm_flags aligned, 7 86 3 per_bootload bit (1) unal, /* ON => deleted each bootload */ 7 87 3 pad9 bit (35) unal, 7 88 2 owner bit (36); /* pvid of this volume */ 7 89 7 90 dcl vtoce_parts (3) bit (36 * 64) aligned based (vtocep); 7 91 7 92 dcl 1 seg_vtoce based (vtocep) aligned, /* Overlay for vtoce of segments, which don't have quota */ 7 93 2 pad1 bit (7*36), 7 94 2 usage fixed bin (35), /* page fault count: overlays quota */ 7 95 2 pad2 bit (184*36); 7 96 7 97 /* END INCLUDE FILE vtoce.incl.pl1 */ 821 822 8 1 /* BEGIN INCLUDE FILE ... disk_table.incl.pl1 ... Created Oct 75 for NSS */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 8 6* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 8 7* Add support for subvolumes. 8 8* END HISTORY COMMENTS */ 8 9 8 10 8 11 /* Modified July 1977 by T. Casey to add pdirs_ok switch in lve */ 8 12 /* Modified April 1981 by J. Bongiovanni to add shared_spindle_flip */ 8 13 /* Modified 831122 by E. A. Ranzenbach to add vacate_pdirs bit to lve. */ 8 14 8 15 /* The disk table lives in ring 1. Its entries parallel the PVT */ 8 16 8 17 dcl dtp ptr, 8 18 dtep ptr, 8 19 lvep ptr; 8 20 8 21 8 22 8 23 dcl 1 dt based (dtp) aligned, 8 24 8 25 2 n_entries fixed bin (17), /* number of disk table entries */ 8 26 2 max_n_entries fixed bin (17), /* max number of disk table entries */ 8 27 2 n_in_use fixed bin (17), /* number of disk table entries in use */ 8 28 2 rpvx fixed bin, /* index (pvtx, too) of the RPV */ 8 29 2 version fixed bin init (1), 8 30 2 n_lv_entries fixed bin, /* Number of LV entries */ 8 31 2 pad (2) bit (36), 8 32 2 array (0 refer (dt.max_n_entries)) like dte, 8 33 2 lv_array (0 refer (dt.max_n_entries)) like lve; 8 34 8 35 dcl 1 dte based (dtep) aligned, 8 36 2 drive_name char (8), /* device name */ 8 37 (2 device_type fixed bin (8), /* device type */ 8 38 2 used bit (1), /* TRUE if this entry is used for paging */ 8 39 2 known bit (1), /* TRUE if label has been read and checked */ 8 40 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 8 41 2 permanent bit (1), /* TRUE if cannot be demounted */ 8 42 2 deleted bit (1), /* TRUE if deleted by "deld" */ 8 43 2 rpv bit (1), /* TRUE if the root physical volume */ 8 44 2 demounted bit (1), /* TRUE if was here or was assumed here */ 8 45 2 need_salvage bit (1), /* TRUE if this vol was volsalv'd automatic */ 8 46 2 hc_accepted bit (1), /* TRUE if vol accepted by ring 0 init */ 8 47 2 shared_spindle_flip bit (1), /* used by ring-4 for shared spindle allocation */ 8 48 2 is_sub_vol bit (1), 8 49 2 pad bit (3), 8 50 2 lvx fixed bin (11), /* index in lv_array of lve */ 8 51 2 pre_accepted bit (1)) unaligned, /* TRUE if was used in previous bootload */ 8 52 2 sv_num fixed bin unal, /* this sv number */ 8 53 2 num_of_sv fixed bin unal, /* number of sv for this pv */ 8 54 2 sv_name char (2) aligned, 8 55 2 pvid bit (36), /* physical volume ID */ 8 56 2 pvname char (32); /* Physical volume name. */ 8 57 8 58 dcl 1 lve based (lvep) aligned, 8 59 2 lvid bit (36), /* logical volume ID */ 8 60 (2 used bit (1), /* TRUE if entry used */ 8 61 2 hv_mounted bit (1), /* TRUE if hvol is really OK */ 8 62 2 public bit (1), /* TRUE for public vol */ 8 63 2 mounting bit (1), /* TRUE if mhv is in progress */ 8 64 2 demounting bit (1), /* TRUE if dhv is in progress */ 8 65 2 good_candidate bit (1) unal, /* used for auto dhv */ 8 66 2 demounted_only bit (1) unal, /* lve here only to warm demounted pve's */ 8 67 2 pdirs_ok bit (1) unal, /* TRUE if process directory segments can be on this lv */ 8 68 2 prev_bootload bit (1) unal, /* TRUE if can auto-accept pvs */ 8 69 2 vacate_pdirs bit (1) unal, /* if TRUE we will demand move all perprocess segs */ 8 70 2 pad bit (26)) unal, 8 71 2 lvname char (32), /* Logical volume name */ 8 72 2 min_access_class bit (72), /* Security stuff */ 8 73 2 max_access_class bit (72); /* .. */ 8 74 8 75 /* END INCLUDE FILE ...disk_table.incl.pl1 */ 823 9 1 /* BEGIN INCLUDE FILE null_addresses.incl.pl1 */ 9 2 /* Added segmove values, Benson Margulies, 84-01 */ 9 3 9 4 dcl (pc_move_page_table_1_null_addr init ("3770070"b3), 9 5 pc_move_page_table_2_null_addr init ("3770100"b3), 9 6 get_aste_null_addr init ("3770110"b3), 9 7 make_sdw_null_addr init ("3770120"b3), 9 8 put_aste_null_addr init ("3770130"b3), 9 9 page_bad_pd_null_addr init ("3770150"b3), 9 10 list_deposit_null_addr init ("3770160"b3), 9 11 get_file_map_null_addr init ("3770170"b3), 9 12 fill_page_table_null_addr init ("3770200"b3), 9 13 init_sst_null_addr init ("3770210"b3), 9 14 get_file_map_vt_null_addr init ("3770220"b3), 9 15 unprotected_null_addr init ("3770230"b3), 9 16 page_bad_null_addr init ("3770240"b3), 9 17 page_problem_null_addr init ("3770250"b3), 9 18 page_parity_null_addr init ("3770260"b3), 9 19 page_devparity_null_addr init ("3770270"b3), 9 20 segmove_old_addr_null_addr init ("3770300"b3), 9 21 segmove_new_addr_null_addr init ("3770310"b3), 9 22 get_file_map_dumper_non_null_addr init ("3777720"b3), 9 23 append_null_addr init ("3777770"b3)) bit (22) aligned static options (constant); 9 24 dcl create_vtoce_four_null_addrs fixed bin (71) int static init (-1);/* 777777 777777 777777 777777 */ 9 25 9 26 dcl (create_vtoce_null_addr init ("777777"b3), 9 27 update_vtoce_null_addr init ("777776"b3), 9 28 truncate_vtoce_fill_null_addr init ("777775"b3), 9 29 truncate_vtoce_null_addr init ("777002"b3), 9 30 pv_salv_null_addr init ("777004"b3), 9 31 pv_scav_null_addr init ("777006"b3), 9 32 volume_reloader_null_addr init ("777774"b3), 9 33 volume_retriever_null_addr init ("777773"b3), 9 34 salv_truncate_null_addr init ("777005"b3)) bit (18) aligned static options (constant); 9 35 9 36 /* END INCLUDE FILE null_addresses.incl.pl1 */ 824 10 1 /* Begin include system_clock_value_.incl.pl1 BIM 83-12-22. */ 10 2 /* Format of clock doubleword */ 10 3 /* format: style3,indcomtxt */ 10 4 10 5 declare clock_value_ptr pointer; 10 6 declare 1 clock_value aligned based (clock_value_ptr), 10 7 2 sign bit unaligned, 10 8 2 unused_range bit (19) unaligned, 10 9 2 fs_time bit (36) unaligned, /* FB 36 unsigned dont work */ 10 10 2 micro_time bit (16) unaligned; 10 11 10 12 /* End include file system_clock_value_.incl.pl1 */ 825 826 end display_vtoce; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/18/86 1234.9 display_vtoce.pl1 >spec>install>1098>display_vtoce.pl1 513 1 09/14/76 0759.8 sdw.incl.pl1 >ldd>include>sdw.incl.pl1 515 2 05/24/82 1005.0 dir_header.incl.pl1 >ldd>include>dir_header.incl.pl1 516 3 11/02/76 1414.6 dir_ht.incl.pl1 >ldd>include>dir_ht.incl.pl1 518 4 04/29/76 1100.6 dir_entry.incl.pl1 >ldd>include>dir_entry.incl.pl1 520 5 04/29/76 1049.2 dir_link.incl.pl1 >ldd>include>dir_link.incl.pl1 522 6 11/02/76 1414.7 dir_name.incl.pl1 >ldd>include>dir_name.incl.pl1 821 7 10/04/83 1105.1 vtoce.incl.pl1 >ldd>include>vtoce.incl.pl1 823 8 07/18/86 1218.4 disk_table.incl.pl1 >spec>install>1098>disk_table.incl.pl1 824 9 07/11/84 0937.3 null_addresses.incl.pl1 >ldd>include>null_addresses.incl.pl1 825 10 04/09/84 1125.2 system_clock_value_.incl.pl1 >ldd>include>system_clock_value_.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. LINK constant bit(18) initial unaligned dcl 483 ref 609 NULLS 000000 constant varying char(60) initial array dcl 744 ref 740 740 742 Nargs 000100 automatic fixed bin(17,0) dcl 69 set ref 119* 125 134 access_class parameter bit(72) dcl 673 in procedure "get_access_class" set ref 670 686* 689* access_class 274 based bit(72) level 2 in structure "vtoce" dcl 7-7 in procedure "display_vtoce" set ref 289* addr builtin function dcl 483 in procedure "get_vtocx" ref 578 578 578 578 594 594 addr builtin function dcl 65 in procedure "display_vtoce" ref 206 296 296 360 360 362 362 364 364 421 459 addwordno builtin function dcl 65 ref 362 362 364 364 adir 000100 automatic char(168) unaligned dcl 483 set ref 532* 540 548* 555 555* arg based char unaligned dcl 62 set ref 136 136 138 138 143 143 145 145 147 147 149 149 151 151 153 153 155 157* 167 argl 000101 automatic fixed bin(17,0) dcl 70 set ref 135* 136 136 138 138 143 143 145 145 147 147 149 149 151 151 153 153 155 157 157 167 argp 000102 automatic pointer dcl 71 set ref 135* 136 136 138 138 143 143 145 145 147 147 149 149 151 151 153 153 155 157 167 args 000117 automatic char(168) array unaligned dcl 80 set ref 167* 172 183* 186* 196* 199* array 10 based structure array level 2 dcl 8-23 set ref 421 456 456 459 baseno builtin function dcl 483 ref 575 bin builtin function dcl 65 ref 739 740 740 800 bound 1(01) 000252 automatic bit(14) level 2 packed unaligned dcl 483 set ref 580 582 byte builtin function dcl 65 ref 803 ch parameter char unaligned dcl 639 ref 637 641 642 class 001742 automatic char(336) unaligned dcl 673 set ref 686* 690* 692 695 701 703 703 707 707 class_len 002212 automatic fixed bin(17,0) dcl 673 set ref 695* 696 696* 700 cleanup 000000 stack reference condition dcl 109 in procedure "display_vtoce" ref 405 441 cleanup 000414 stack reference condition dcl 483 in procedure "get_vtocx" ref 558 clock_ 000100 automatic structure level 1 dcl 374 set ref 378* 380 clock_value based structure level 1 dcl 10-6 cn_salv_time 273 based bit(36) level 2 dcl 7-7 ref 305 305 305 code parameter fixed bin(35,0) dcl 673 in procedure "get_access_class" set ref 670 684* 686* 687 code 000104 automatic fixed bin(35,0) dcl 72 in procedure "display_vtoce" set ref 119* 120 122* 164* 173* 175 178 183* 184 187 191* 192 196* 197 207* 208 210* 289* 290 296* 297 299* 300* 301 303* 406* 407 409* 413* 414 416* 425* 426* 784* 785 com_err_ 000010 constant entry external dcl 40 ref 122 157 199 210 409 416 426 445 452 465 529 536 563 571 589 620 626 com_err_$suppress_name 000012 constant entry external dcl 41 ref 129 299 303 convert_aim_attributes_ 000110 constant entry external dcl 681 ref 689 convert_authorization_$to_string_short 000106 constant entry external dcl 679 ref 686 copy builtin function dcl 65 ref 803 cp parameter pointer dcl 659 set ref 652 662 663* create_vtoce_null_addr constant bit(18) initial dcl 9-26 ref 333 csl 2(09) based bit(9) level 2 packed unaligned dcl 7-7 ref 238 238 cu_$arg_count 000014 constant entry external dcl 42 ref 119 cu_$arg_ptr 000016 constant entry external dcl 43 ref 135 cv_bin_$oct 000112 constant entry external dcl 735 ref 740 cv_oct_check_ 000020 constant entry external dcl 44 ref 183 196 damaged 5(06) based bit(1) level 2 packed unaligned dcl 7-7 set ref 284* date_time_$format 000022 constant entry external dcl 45 ref 397 deciduous 5(01) based bit(1) level 2 packed unaligned dcl 7-7 set ref 277* decimal builtin function dcl 65 ref 251 251 258 258 dir based structure level 1 dcl 2-11 ref 593 593 dirlen 000412 automatic fixed bin(17,0) dcl 483 set ref 582* 600 dirsegno 000410 automatic fixed bin(17,0) dcl 483 set ref 575* 578 578 dirsw 5(18) based bit(1) level 2 packed unaligned dcl 7-7 set ref 232* 240 divide builtin function dcl 65 ref 251 251 258 258 dnzp 5(03) based bit(1) level 2 packed unaligned dcl 7-7 set ref 283* dp 000430 automatic pointer dcl 2-9 set ref 567* 576* 593* 593 593 594 595 595 596 598 607 625 dt based structure level 1 dcl 8-23 in procedure "display_vtoce" dt parameter bit(36) unaligned dcl 373 in procedure "fs_date_time" ref 370 379 dtd 233 based bit(36) level 2 packed unaligned dcl 7-7 set ref 267 267* 267* dte based structure level 1 dcl 8-35 dtep 001720 automatic pointer dcl 8-17 set ref 421* 422 422 422 430 459* 460 460 460 dtm 4 based bit(36) level 2 packed unaligned dcl 7-7 set ref 273 273* 273* dtp 001716 automatic pointer dcl 8-17 set ref 412* 413* 420 421 448* 449* 456 456 459 dtu 3 based bit(36) level 2 packed unaligned dcl 7-7 set ref 270 270* 270* dump_segment_ 000024 constant entry external dcl 47 ref 360 362 364 ec parameter fixed bin(35,0) dcl 483 in procedure "get_vtocx" set ref 472 525* 526* 527 532* 534 536* 560* 561 563* 568* 571* 617* 618 620* ec parameter fixed bin(35,0) dcl 438 in procedure "get_pvname" set ref 435 442* 443 445* 449* 450 452* 463* 465* encoded_volid parameter bit(36) unaligned dcl 713 ref 711 720 ent 000224 automatic char(32) unaligned dcl 483 set ref 532* 540 553 555 594 594 594* 594* 604 entry based structure level 1 dcl 4-8 set ref 608 608 entry_rp 2 based bit(18) level 2 packed unaligned dcl 6-7 ref 607 ep 000434 automatic pointer dcl 4-6 set ref 607* 608* 608 608 609 611 616 617 620 epname 000336 automatic char(168) unaligned dcl 483 set ref 553* 555* 626* error_table_$bad_conversion 000054 external static fixed bin(35,0) dcl 98 set ref 199* error_table_$badopt 000056 external static fixed bin(35,0) dcl 100 set ref 157* error_table_$noentry 000064 external static fixed bin(35,0) dcl 483 set ref 626* error_table_$pvid_not_found 000052 external static fixed bin(35,0) dcl 96 ref 425 463 error_table_$wrong_no_of_args 000060 external static fixed bin(35,0) dcl 101 ref 164 expand_pathname_ 000100 constant entry external dcl 483 ref 532 548 failct 000411 automatic fixed bin(17,0) dcl 483 set ref 577* 585* 585 587 file_map_sw 000111 automatic bit(1) dcl 76 set ref 116* 147* 149* 314 first 002225 automatic bit(1) unaligned dcl 673 set ref 699* 703 704* 707 fixed builtin function dcl 65 in procedure "display_vtoce" ref 238 238 238 238 238 238 fixed builtin function dcl 483 in procedure "get_vtocx" ref 575 582 600 flag_bin 002254 automatic fixed bin(1,0) dcl 798 set ref 800* 801 803 803 805 807 807 809 809 flag_bit parameter bit(1) unaligned dcl 795 ref 792 800 flag_name parameter char unaligned dcl 796 ref 792 801 807 809 flags 000721 automatic varying char(1000) array dcl 772 set ref 787* 788* 803* 803 807* 807 815* 815* fm 20 based bit(18) array level 2 packed unaligned dcl 7-7 set ref 320 321 321 329 331 333 335 337 339 341 343 345 347 349 349* 351* fm_checksum_valid 5(08) based bit(1) level 2 packed unaligned dcl 7-7 set ref 287* fm_damaged 5(07) based bit(1) level 2 packed unaligned dcl 7-7 set ref 286* fme parameter bit(18) unaligned dcl 728 ref 725 737 740 740 free 000106 automatic bit(1) unaligned dcl 74 set ref 114* 218* 236 fs_time 0(20) 000100 automatic bit(36) level 2 packed unaligned dcl 374 set ref 379* full_clock parameter fixed bin(71,0) dcl 386 ref 383 388 fx 000105 automatic fixed bin(17,0) dcl 73 set ref 320* 321 321 329 331 332* 333 335 337 339 341 343 345 347 349 349 351* get_line_length_$switch 000114 constant entry external dcl 780 ref 784 get_temp_segment_ 000102 constant entry external dcl 483 ref 560 get_temp_segments_ 000026 constant entry external dcl 49 ref 406 442 goodstuff 001670 constant varying char(182) initial dcl 91 ref 222 hash_index_ 000070 constant entry external dcl 483 ref 594 hash_table based structure level 1 dcl 3-6 hash_table_rp 55(18) based bit(18) level 2 packed unaligned dcl 2-11 ref 595 hash_thread 3 based bit(18) level 2 packed unaligned dcl 6-7 ref 625 hbound builtin function dcl 65 ref 320 321 329 456 740 header_sw 000112 automatic bit(1) dcl 76 set ref 115* 136* 140* 151* 153* 236 hsi 000413 automatic fixed bin(17,0) dcl 483 set ref 594* 598 602 ht_index 2(18) based fixed bin(17,0) level 2 packed unaligned dcl 6-7 ref 602 htp 000432 automatic pointer dcl 3-4 set ref 595* 596* 598 htsize 55 based fixed bin(17,0) level 2 packed unaligned dcl 2-11 ref 594 596 i 000107 automatic fixed bin(17,0) dcl 75 set ref 134* 135* in_pvname parameter char unaligned dcl 403 set ref 400 422 426* in_pvtx parameter fixed bin(17,0) dcl 438 set ref 435 456 456 459 465* index builtin function dcl 65 ref 155 695 702 ioa_ 000030 constant entry external dcl 50 ref 232 238 242 244 246 251 258 265 266 267 269 270 272 273 275 290 297 301 305 319 326 333 335 337 339 341 343 345 347 349 351 358 359 361 363 692 703 707 721 815 ioa_$nnl 000032 constant entry external dcl 51 ref 332 ioa_$rsnnl 000034 constant entry external dcl 52 ref 228 iox_$user_output 000116 external static pointer dcl 782 in procedure "flag$$init" set ref 784* iox_$user_output 000062 external static pointer dcl 103 in procedure "display_vtoce" set ref 360* 362* 364* k 002213 automatic fixed bin(17,0) dcl 673 set ref 698* 700 701 703 703 705* 705 707 707 key 0(12) 002244 automatic bit(6) level 2 packed unaligned dcl 730 set ref 739 kk 002214 automatic fixed bin(17,0) dcl 673 set ref 702* 703 703 705 kx 002245 automatic fixed bin(17,0) dcl 734 set ref 739* 740 740 742 last_fme 000115 automatic bit(18) unaligned dcl 78 set ref 317* 321 331* lbound builtin function dcl 65 ref 456 740 length builtin function dcl 483 in procedure "get_vtocx" ref 642 length builtin function dcl 65 in procedure "display_vtoce" ref 702 801 809 line_length 001712 automatic fixed bin(17,0) dcl 775 set ref 784* 785* 801 line_used 001710 automatic fixed bin(17,0) array dcl 774 set ref 789* 801 805* 809* 809 link based structure level 1 dcl 5-6 local_vtoce 000421 automatic structure level 1 dcl 106 set ref 206 360 360 362 362 364 364 long_sw 000114 automatic bit(1) dcl 76 set ref 116* 136* 141* 294 lve based structure level 1 dcl 8-58 lvname 000323 automatic char(32) unaligned dcl 83 in procedure "display_vtoce" set ref 300* 301* lvname 000254 automatic char(32) unaligned dcl 483 in procedure "get_vtocx" set ref 617* 621* master_dir 5(19) based bit(1) level 2 packed unaligned dcl 7-7 set ref 280* max_n_entries 1 based fixed bin(17,0) level 2 dcl 8-23 ref 456 mdc_$find_volname 000040 constant entry external dcl 54 ref 300 617 mdc_$read_disk_table 000036 constant entry external dcl 53 ref 413 449 msl 2 based bit(9) level 2 packed unaligned dcl 7-7 ref 238 238 myname 001660 constant char(32) initial unaligned dcl 95 set ref 122* 129* 157* 199* 210* 299* 303* 405* 406* 409* 416* 417* 426* 427* 432* 441* 442* 445* 452* 453* 465* 467* 529* 536* 560* 563* 571* 589* 612* 620* 626* 627* n_entries based fixed bin(17,0) level 2 dcl 8-23 ref 420 name 002234 automatic char(2) level 2 in structure "volid" packed unaligned dcl 716 in procedure "VOLID" set ref 721* name 4 based char(32) level 2 in structure "names" dcl 6-7 in procedure "get_vtocx" ref 604 name_rp 2 based bit(18) array level 2 packed unaligned dcl 3-6 ref 598 names based structure level 1 dcl 6-7 ref 599 599 ncd 232 based bit(1) level 2 packed unaligned dcl 7-7 set ref 282* nid 5(02) based bit(1) level 2 packed unaligned dcl 7-7 set ref 281* non_ctl_args 000110 automatic fixed bin(17,0) dcl 75 set ref 118* 161* 161 162 167 170 np 000436 automatic pointer dcl 6-5 set ref 598* 598* 599* 600 602 604 607* 625 nqsw 5 based bit(1) level 2 packed unaligned dcl 7-7 set ref 279* null builtin function dcl 483 in procedure "get_vtocx" ref 524 569 627 630 null builtin function dcl 65 in procedure "display_vtoce" ref 85 null_address 002244 automatic structure level 1 packed unaligned dcl 730 set ref 737* number 0(18) 002234 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 716 set ref 721* octal_sw 000113 automatic bit(1) dcl 76 set ref 116* 143* 145* 356 out_of_bounds 000422 stack reference condition dcl 483 ref 584 par_pvid 271 based bit(36) level 2 packed unaligned dcl 7-7 set ref 300 303* par_vtocx 272 based fixed bin(17,0) level 2 packed unaligned dcl 7-7 set ref 301* 303* pathname 31 based char level 2 packed unaligned dcl 5-6 ref 611 pathname_size 30(18) based fixed bin(17,0) level 2 packed unaligned dcl 5-6 ref 611 pdir 000152 automatic char(168) unaligned dcl 483 set ref 548* 549 551 551* 568* pent 000234 automatic char(32) unaligned dcl 483 set ref 548* 549 551 553 568* per_process 5(05) based bit(1) level 2 packed unaligned dcl 7-7 set ref 278* phcs_$get_vtoce 000042 constant entry external dcl 56 ref 207 phcs_$initiate 000072 constant entry external dcl 483 ref 568 phcs_$ring_0_peek 000076 constant entry external dcl 483 ref 576 578 663 phcs_$terminate_noname 000074 constant entry external dcl 483 ref 613 630 pin parameter char unaligned dcl 483 set ref 472 532* 536* 611* pname 000243 automatic char(168) unaligned dcl 81 set ref 117* 172* 173* pname_bits 001724 automatic bit(9) array unaligned dcl 225 set ref 226* 228* ppname 000264 automatic char(168) unaligned dcl 483 set ref 549* 551* 571* 589* primary_name 260 based char(32) level 2 packed unaligned dcl 7-7 ref 222 222 222 226 ptr builtin function dcl 483 ref 595 598 607 625 662 pv_salv_null_addr constant bit(18) initial dcl 9-26 ref 341 pv_scav_null_addr constant bit(18) initial dcl 9-26 ref 343 pvid 30 based bit(36) level 2 packed unaligned dcl 4-8 set ref 617 620* pvname parameter char unaligned dcl 483 in procedure "get_vtocx" set ref 472 543* 617* 621* pvname 000315 automatic char(24) unaligned dcl 82 in procedure "display_vtoce" set ref 117* 173* 177 232* 300* 301* 430* 460* pvname 6 based char(32) level 2 in structure "dte" dcl 8-35 in procedure "display_vtoce" ref 422 430 460 pvtx 000333 automatic fixed bin(17,0) dcl 84 set ref 118* 183* 191* 207* 210* 232* 420* 421* q 000334 automatic pointer initial array dcl 85 in procedure "display_vtoce" set ref 85* 405* 406* 412 417* 427* 432* 441* 442* 448 453* 467* q 000244 automatic pointer dcl 483 in procedure "get_vtocx" set ref 524* 560* 567 612* 627 627* quota 7 based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 7-7 set ref 242 242 242* 242* received 11 based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 7-7 set ref 246 246 246* 246* records 2(18) based bit(9) level 2 packed unaligned dcl 7-7 ref 238 238 rel builtin function dcl 483 ref 598 600 662 release_temp_segment_ 000104 constant entry external dcl 483 ref 612 627 release_temp_segments_ 000044 constant entry external dcl 57 ref 405 417 427 432 441 453 467 requote_string_ 000046 constant entry external dcl 58 ref 222 reverse builtin function dcl 65 in procedure "display_vtoce" ref 702 reverse builtin function dcl 483 in procedure "get_vtocx" ref 641 rgp 000456 automatic pointer dcl 659 set ref 662* 663* ring0_get_$segptr 000066 constant entry external dcl 483 ref 526 rtrim builtin function dcl 65 ref 222 222 690 740 742 rzdp 000246 automatic pointer dcl 483 set ref 568* 569 575 576* 613* 630 630* 662 rzdsp 000250 automatic pointer dcl 483 set ref 524* 526* 578 578 salv_truncate_null_addr constant bit(18) initial dcl 9-26 ref 347 sdw based structure level 1 dcl 1-5 sdwa based structure array level 1 dcl 1-24 set ref 578 578 seg_vtoce based structure level 1 dcl 7-92 short_class 002215 automatic char(32) unaligned dcl 673 set ref 689* 690 size builtin function dcl 483 ref 593 593 599 599 608 608 skipping 000116 automatic bit(1) dcl 79 set ref 318* 321* 323 325* 329 sname 000336 automatic char(32) unaligned dcl 86 set ref 219* 222* 227* 228* 232* storage_system 2(11) based bit(1) level 2 packed unaligned dcl 8-35 ref 422 460 string builtin function dcl 65 set ref 380 737* sub_error_ 000104 stack reference condition dcl 376 ref 396 substr builtin function dcl 65 in procedure "display_vtoce" ref 349 701 703 703 707 707 substr builtin function dcl 483 in procedure "get_vtocx" ref 551 555 synchronized 5(09) based bit(1) level 2 packed unaligned dcl 7-7 set ref 285* sz parameter fixed bin(17,0) dcl 659 set ref 652 663* temp_string 002066 automatic char(336) unaligned dcl 673 set ref 701* 702 702 time 000102 automatic fixed bin(71,0) dcl 375 set ref 380* 388* 390 397* time_created 270 based bit(36) level 2 packed unaligned dcl 7-7 set ref 266* 266* trp 12 based fixed bin(71,0) array level 2 packed unaligned dcl 7-7 ref 249 251 251 256 258 258 trp_time 16 based bit(36) array level 2 packed unaligned dcl 7-7 set ref 251* 251* 258* 258* truncate_vtoce_fill_null_addr constant bit(18) initial dcl 9-26 ref 339 truncate_vtoce_null_addr constant bit(18) initial dcl 9-26 ref 337 tsdw 000252 automatic structure level 1 dcl 483 set ref 578 578 type parameter char unaligned dcl 714 in procedure "VOLID" set ref 711 721* type 1 based bit(18) level 2 in structure "entry" packed unaligned dcl 4-8 in procedure "get_vtocx" ref 609 uid 1 based bit(36) level 2 packed unaligned dcl 7-7 set ref 216 238* 296 uid_path 240 based bit(36) array level 2 packed unaligned dcl 7-7 set ref 296 296 299* unspec builtin function dcl 65 set ref 226* 226 380* 388* 388 720* update_vtoce_null_addr constant bit(18) initial dcl 9-26 ref 335 usage 7 based fixed bin(35,0) level 2 dcl 7-92 set ref 265* used 10 based fixed bin(18,0) array level 2 in structure "vtoce" packed unsigned unaligned dcl 7-7 in procedure "display_vtoce" set ref 244 244 244* 244* used 2(09) based bit(1) level 2 in structure "dte" packed unaligned dcl 8-35 in procedure "display_vtoce" ref 422 460 verify builtin function dcl 65 in procedure "display_vtoce" ref 222 verify builtin function dcl 483 in procedure "get_vtocx" ref 641 volid 002234 automatic structure level 1 packed unaligned dcl 716 in procedure "VOLID" set ref 720* volid 234 based bit(36) array level 2 in structure "vtoce" packed unaligned dcl 7-7 in procedure "display_vtoce" set ref 307 307* 309 309* 311 311* volume_reloader_null_addr constant bit(18) initial dcl 9-26 ref 345 vpn 000347 automatic char(168) unaligned dcl 88 set ref 296* 297* vpn_cv_uid_path_$ent 000050 constant entry external dcl 59 ref 296 vtoce based structure level 1 dcl 7-7 vtocep 001714 automatic pointer dcl 7-5 set ref 206* 207* 216 222 222 222 226 232 238 238 238 238 238 238 238 240 242 242 242 242 244 244 244 244 246 246 246 246 249 251 251 251 251 256 258 258 258 258 265 266 266 267 267 267 270 270 270 273 273 273 277 278 279 280 281 282 283 284 285 286 287 289 296 296 296 299 300 301 303 303 305 305 305 307 307 309 309 311 311 320 321 321 329 331 333 335 337 339 341 343 345 347 349 349 351 vtocx 000346 automatic fixed bin(17,0) dcl 87 in procedure "display_vtoce" set ref 118* 173* 196* 207* 210* 232* vtocx 31 based fixed bin(17,0) level 2 in structure "entry" packed unaligned dcl 4-8 in procedure "get_vtocx" ref 616 vtocxo parameter fixed bin(17,0) dcl 483 set ref 472 544* 616* x 000446 automatic fixed bin(17,0) dcl 640 set ref 641* 642 642* 642 644 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. append_null_addr internal static bit(22) initial dcl 9-4 clock_value_ptr automatic pointer dcl 10-5 create_vtoce_four_null_addrs internal static fixed bin(71,0) initial dcl 9-24 fill_page_table_null_addr internal static bit(22) initial dcl 9-4 get_aste_null_addr internal static bit(22) initial dcl 9-4 get_file_map_dumper_non_null_addr internal static bit(22) initial dcl 9-4 get_file_map_null_addr internal static bit(22) initial dcl 9-4 get_file_map_vt_null_addr internal static bit(22) initial dcl 9-4 init_sst_null_addr internal static bit(22) initial dcl 9-4 list_deposit_null_addr internal static bit(22) initial dcl 9-4 lvep automatic pointer dcl 8-17 make_sdw_null_addr internal static bit(22) initial dcl 9-4 page_bad_null_addr internal static bit(22) initial dcl 9-4 page_bad_pd_null_addr internal static bit(22) initial dcl 9-4 page_devparity_null_addr internal static bit(22) initial dcl 9-4 page_parity_null_addr internal static bit(22) initial dcl 9-4 page_problem_null_addr internal static bit(22) initial dcl 9-4 pc_move_page_table_1_null_addr internal static bit(22) initial dcl 9-4 pc_move_page_table_2_null_addr internal static bit(22) initial dcl 9-4 put_aste_null_addr internal static bit(22) initial dcl 9-4 sdwp automatic pointer dcl 1-3 segmove_new_addr_null_addr internal static bit(22) initial dcl 9-4 segmove_old_addr_null_addr internal static bit(22) initial dcl 9-4 unprotected_null_addr internal static bit(22) initial dcl 9-4 version_number_2 internal static fixed bin(17,0) initial dcl 2-84 volume_retriever_null_addr internal static bit(18) initial dcl 9-26 vtoce_parts based bit(2304) array dcl 7-90 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 006513 constant label dcl 390 ref 381 RETURN 010725 constant label dcl 627 ref 537 545 558 564 572 590 623 USAGE 003131 constant label dcl 125 set ref 165 VOLID 011337 constant entry internal dcl 711 ref 307 309 311 ZERO 006515 constant label dcl 390 ref 396 date_time 006501 constant entry internal dcl 383 display_vtoce 003043 constant entry external dcl 12 flag 011616 constant entry internal dcl 792 ref 277 278 279 280 281 282 283 284 285 286 287 flag$$display 011767 constant entry internal dcl 812 ref 288 flag$$init 011553 constant entry internal dcl 777 ref 276 fs_date_time 006452 constant entry internal dcl 370 ref 251 251 258 258 266 266 267 267 270 270 273 273 305 305 ftsdw 010273 constant label dcl 578 ref 580 get_access_class 011053 constant entry internal dcl 670 ref 289 get_pvname 007165 constant entry internal dcl 435 ref 191 get_pvtx 006610 constant entry internal dcl 400 ref 177 186 get_vtocx 007504 constant entry internal dcl 472 ref 173 got_ent 007613 constant label dcl 532 ref 614 got_pvtx 007136 constant label dcl 430 ref 422 m_a 011026 constant entry internal dcl 652 ref 593 596 599 608 no_pvtx 007423 constant label dcl 463 ref 456 page_control_null_address 011411 constant entry internal dcl 725 ref 349 refetch_dir 010345 constant label dcl 585 ref 584 600 602 trim 010772 constant entry internal dcl 637 ref 551 555 594 594 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12650 12770 12115 12660 Length 13514 12115 120 507 532 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_vtoce 1418 external procedure is an external procedure. begin block on line 224 begin block shares stack frame of external procedure display_vtoce. fs_date_time 168 internal procedure enables or reverts conditions. on unit on line 396 64 on unit get_pvtx 120 internal procedure enables or reverts conditions. on unit on line 405 80 on unit get_pvname 118 internal procedure enables or reverts conditions. on unit on line 441 80 on unit get_vtocx 386 internal procedure enables or reverts conditions. on unit on line 558 64 on unit on unit on line 584 64 on unit trim internal procedure shares stack frame of internal procedure get_vtocx. m_a internal procedure shares stack frame of internal procedure get_vtocx. get_access_class internal procedure shares stack frame of external procedure display_vtoce. VOLID internal procedure shares stack frame of external procedure display_vtoce. page_control_null_address internal procedure shares stack frame of external procedure display_vtoce. flag$$init internal procedure shares stack frame of external procedure display_vtoce. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_vtoce 000100 Nargs display_vtoce 000101 argl display_vtoce 000102 argp display_vtoce 000104 code display_vtoce 000105 fx display_vtoce 000106 free display_vtoce 000107 i display_vtoce 000110 non_ctl_args display_vtoce 000111 file_map_sw display_vtoce 000112 header_sw display_vtoce 000113 octal_sw display_vtoce 000114 long_sw display_vtoce 000115 last_fme display_vtoce 000116 skipping display_vtoce 000117 args display_vtoce 000243 pname display_vtoce 000315 pvname display_vtoce 000323 lvname display_vtoce 000333 pvtx display_vtoce 000334 q display_vtoce 000336 sname display_vtoce 000346 vtocx display_vtoce 000347 vpn display_vtoce 000421 local_vtoce display_vtoce 000721 flags display_vtoce 001710 line_used display_vtoce 001712 line_length display_vtoce 001714 vtocep display_vtoce 001716 dtp display_vtoce 001720 dtep display_vtoce 001724 pname_bits begin block on line 224 001742 class get_access_class 002066 temp_string get_access_class 002212 class_len get_access_class 002213 k get_access_class 002214 kk get_access_class 002215 short_class get_access_class 002225 first get_access_class 002234 volid VOLID 002244 null_address page_control_null_address 002245 kx page_control_null_address 002254 flag_bin flag$$init fs_date_time 000100 clock_ fs_date_time 000102 time fs_date_time get_vtocx 000100 adir get_vtocx 000152 pdir get_vtocx 000224 ent get_vtocx 000234 pent get_vtocx 000244 q get_vtocx 000246 rzdp get_vtocx 000250 rzdsp get_vtocx 000252 tsdw get_vtocx 000254 lvname get_vtocx 000264 ppname get_vtocx 000336 epname get_vtocx 000410 dirsegno get_vtocx 000411 failct get_vtocx 000412 dirlen get_vtocx 000413 hsi get_vtocx 000430 dp get_vtocx 000432 htp get_vtocx 000434 ep get_vtocx 000436 np get_vtocx 000446 x trim 000456 rgp m_a THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this_desc call_int_this return tra_ext enable shorten_stack ext_entry int_entry int_entry_desc verify_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name convert_aim_attributes_ convert_authorization_$to_string_short cu_$arg_count cu_$arg_ptr cv_bin_$oct cv_oct_check_ date_time_$format dump_segment_ expand_pathname_ get_line_length_$switch get_temp_segment_ get_temp_segments_ hash_index_ ioa_ ioa_$nnl ioa_$rsnnl mdc_$find_volname mdc_$read_disk_table phcs_$get_vtoce phcs_$initiate phcs_$ring_0_peek phcs_$terminate_noname release_temp_segment_ release_temp_segments_ requote_string_ ring0_get_$segptr vpn_cv_uid_path_$ent THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$noentry error_table_$pvid_not_found error_table_$wrong_no_of_args iox_$user_output iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 003042 85 003050 114 003057 115 003060 116 003062 117 003065 118 003073 119 003076 120 003106 122 003110 123 003125 125 003126 129 003131 131 003156 134 003157 135 003165 136 003203 138 003221 140 003231 141 003233 142 003234 143 003235 145 003250 147 003262 149 003275 151 003307 153 003322 155 003334 157 003346 158 003400 161 003401 162 003402 164 003405 165 003410 167 003411 169 003416 170 003420 172 003423 173 003426 175 003452 177 003454 178 003467 180 003471 183 003472 184 003513 186 003515 187 003525 189 003527 191 003530 192 003540 196 003542 197 003563 199 003565 201 003615 206 003616 207 003620 208 003635 210 003637 211 003672 216 003673 218 003676 219 003700 220 003703 222 003704 224 003760 226 003761 227 003765 228 003770 232 004024 236 004066 238 004072 240 004140 242 004144 244 004177 246 004233 249 004267 251 004274 256 004340 258 004345 264 004411 265 004412 266 004433 267 004465 269 004522 270 004540 272 004575 273 004613 275 004650 276 004665 277 004666 278 004711 279 004735 280 004754 281 004777 282 005020 283 005037 284 005060 285 005101 286 005125 287 005150 288 005172 289 005173 290 005204 294 005222 296 005224 297 005257 299 005304 300 005336 301 005366 303 005422 305 005457 307 005513 309 005536 311 005562 314 005603 317 005605 318 005606 319 005607 320 005624 321 005631 323 005645 325 005647 326 005650 329 005663 331 005670 332 005677 333 005716 335 005745 337 005764 339 006003 341 006022 343 006041 345 006060 347 006077 349 006116 351 006153 353 006177 356 006201 358 006203 359 006220 360 006233 361 006277 362 006314 363 006363 364 006401 367 006450 370 006451 378 006457 379 006470 380 006475 381 006477 383 006500 388 006506 390 006513 396 006523 397 006542 400 006607 405 006623 406 006663 407 006705 409 006710 410 006737 412 006740 413 006742 414 006753 416 006756 417 007002 418 007025 420 007026 421 007036 422 007042 424 007055 425 007057 426 007062 427 007112 428 007135 430 007136 432 007141 433 007163 435 007164 441 007172 442 007232 443 007255 445 007260 446 007307 448 007310 449 007314 450 007325 452 007330 453 007354 454 007377 456 007400 459 007410 460 007413 463 007423 465 007426 467 007457 468 007502 472 007503 524 007524 525 007527 526 007531 527 007557 529 007562 530 007612 532 007613 534 007642 536 007645 537 007667 540 007670 543 007700 544 007705 545 007706 548 007707 549 007734 551 007754 553 010006 555 010027 558 010061 560 010101 561 010123 563 010126 564 010155 567 010156 568 010160 569 010222 571 010226 572 010250 575 010251 576 010255 577 010272 578 010273 580 010316 582 010322 584 010326 585 010345 587 010346 589 010351 590 010402 593 010403 594 010407 595 010440 596 010446 598 010453 599 010470 600 010474 602 010500 604 010506 607 010512 608 010517 609 010523 611 010530 612 010537 613 010561 614 010573 616 010574 617 010600 618 010630 620 010633 621 010664 623 010675 625 010676 626 010704 627 010725 630 010753 632 010771 637 010772 641 011003 642 011017 644 011024 652 011026 662 011030 663 011036 664 011052 670 011053 684 011055 686 011056 687 011100 689 011103 690 011114 691 011142 692 011143 695 011164 696 011174 698 011200 699 011202 700 011204 701 011211 702 011215 703 011231 704 011265 705 011267 706 011271 707 011272 708 011335 709 011336 711 011337 720 011350 721 011355 722 011410 725 011411 737 011413 739 011417 740 011423 742 011504 777 011553 784 011554 785 011567 787 011573 788 011600 789 011604 790 011615 792 011616 800 011627 801 011637 803 011644 805 011712 807 011716 809 011760 810 011766 812 011767 815 011770 816 012015 ----------------------------------------------------------- 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