COMPILATION LISTING OF SEGMENT azm_requests_2_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/12/88 1431.6 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(87-07-09,Leatherman), approve(87-07-09,MCR7746), 13* audit(87-07-16,Fawcett), install(87-07-28,MR12.1-1049): 14* Change references from "No translation selected" to "No dump selected" for 15* better understanding. 16* 2) change(87-08-14,Parisek), approve(87-08-14,MCR7861), 17* audit(88-07-08,Farley), install(88-07-12,MR12.2-1055): 18* Correct bug in setting PTW pointer when given page address is greater 19* than zero. 20* END HISTORY COMMENTS */ 21 22 23 azm_requests_2_: proc (); 24 25 return; /* not an entrypoint */ 26 27 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend,ifthendo,ifthen,^thendo */ 28 29 30 /* Assorted requests for analyze_multics. */ 31 32 33 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 34 /* */ 35 /* 0) Created: 06/25/83 by B. Braun from the original azm_misc_requests_ into smaller */ 36 /* modules. This contains azm requests associative_memory, verify_associative_memory, */ 37 /* scus, search, segment_name, segment_number, replace, value, set, clock, error_code, */ 38 /* quit, self_identify (.), absolute_address. */ 39 /* 1) Modified 12/8/83 by B. Braun to add "-a" syn for "-all" in value request and correct*/ 40 /* usage message. Correct "number foo" to return "Segment not found." */ 41 /* 2) Modified July 84 by B. Braun to add knowledge of unpaged_page_tables to absadr. */ 42 /* 3) Modified Sept 84 by B. Braun to add knowledge of int_unpaged_page_tables to absadr. */ 43 /* 4) Modified Nov 84 by B. Braun to change the number active request to return only the */ 44 /* segment number and not the offset. */ 45 /* 5) Modified 21 Nov 84 by B. Braun to correct "replace" request to use expand_pathname_ */ 46 /* 6) Modified 10 Jan 85 by BLB to correct the ioa_$rsnnl call in the name active request.*/ 47 /* */ 48 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 49 50 51 dcl ( 52 P_sci_ptr pointer, 53 P_azm_info_ptr pointer 54 ) parameter; 55 56 /* Automatic */ 57 58 dcl af_sw bit (1) aligned; 59 dcl am_from_prds bit (1); 60 dcl amptw_pageno fixed bin; 61 dcl amsdw_segno fixed bin; 62 dcl axp ptr init (null); 63 dcl argl fixed bin (21); 64 dcl argno fixed bin; 65 dcl argp pointer; 66 dcl axstring char (7) init (""); 67 dcl brief_sw bit (1) init ("0"b); 68 dcl check_args fixed bin; 69 dcl code fixed bin (35); 70 dcl configp ptr init (null); 71 dcl cur_erf bit (1) init ("0"b); 72 dcl del_cur_erf bit (1) init ("0"b); 73 dcl del_erf bit (1) init ("0"b); 74 dcl dir_name char (168); 75 dcl dir_sw bit (1) init ("0"b); 76 dcl do_ptws bit (1); 77 dcl do_sdws bit (1); 78 dcl dsegp ptr init (null); 79 dcl erfs_found bit (1) init ("0"b); 80 dcl expand_ptr_sw bit (1) init ("0"b); 81 dcl expand_sw bit (1) init ("0"b); /* "1"b = expand syserr binary data */ 82 dcl first fixed bin (18); 83 dcl first_erf bit (1) init ("0"b); 84 dcl first_value_set bit (1) init ("0"b); 85 dcl forward_search bit (1) init ("0"b); 86 dcl frame_entry bit (1) init ("0"b); 87 dcl 1 hard_ptr_space like hardcore_cur; 88 dcl hdr_printed bit (1) init ("0"b); 89 dcl ignore fixed bin; 90 dcl i fixed bin; /* for iterations */ 91 dcl last fixed bin init (0); 92 dcl last_erf bit (1) init ("0"b); 93 dcl list_erfs bit (1) init ("0"b); 94 dcl ll fixed bin init (0); 95 dcl ln fixed bin init (0); 96 dcl match_str char (256) var init (""); /* the syserr string to match on */ 97 dcl nargs fixed bin; 98 dcl namep ptr; 99 dcl next_erf bit (1) init ("0"b); 100 dcl offset fixed bin (18); 101 dcl only_full_ams bit (1); 102 dcl page fixed bin (24); 103 dcl prev_erf bit (1) init ("0"b); 104 dcl print_all_trans bit (1) init ("0"b); 105 dcl pts fixed bin (24); 106 dcl range fixed bin (18); 107 dcl range_value_set bit (1) init ("0"b); 108 dcl raw_syserr_data bit (1) init ("0"b); /* "1"b = print it in octal */ 109 dcl real_address fixed bin (35); 110 dcl ret_str char (168) var init (""); 111 dcl rv_lth fixed bin (21); 112 dcl rv_ptr ptr; 113 dcl sci_ptr pointer; /* assorted info pointers */ 114 dcl segln fixed bin (35) init (0); 115 dcl search_string char (12); 116 dcl segname char(32); 117 dcl segno fixed bin; 118 dcl segno_sw bit(1); 119 dcl slog_code fixed bin init (3); /* the syserr_code, default to =< 3 */ 120 dcl start_configp ptr init (null); 121 dcl struct_sw bit (1) init ("0"b); 122 dcl t_amu_info_ptr ptr; 123 dcl t_pr_name char (4); 124 dcl t_seg_name char (32); 125 dcl temp_ptr ptr; 126 dcl temp_str char (24) var init (""); 127 dcl tname char(256) var; 128 dcl vs char (99) varying; 129 dcl why_erf bit (1) init ("0"b); 130 dcl word fixed bin (24); 131 132 133 134 /* Based */ 135 136 dcl arg char (argl) based (argp); 137 dcl rs char (rv_lth) varying based (rv_ptr); 138 139 /* Constants */ 140 141 /* Builtins */ 142 143 dcl (addr, addrel, baseptr, char, 144 convert, divide, fixed, hbound, 145 ltrim, null, pointer, reverse, 146 rtrim, search, substr, index, 147 mod, ptr) builtin; 148 149 /* Conditions */ 150 151 152 153 /* External Entries */ 154 155 dcl amu_$current_deadproc entry(ptr); 156 dcl amu_$definition_get_prn entry (ptr, char (*), ptr, fixed bin (35)); 157 dcl amu_$definition_set_prn entry (ptr, char (*), fixed bin, fixed bin (18), fixed bin (35)); 158 dcl amu_$do_translation_hunt_ptr entry (ptr, ptr, ptr, fixed bin (35)); 159 dcl amu_$fdump_mgr_cur_erf entry (ptr); 160 dcl amu_$fdump_mpt_current_process entry (ptr); 161 dcl amu_$get_name_no_comp entry (ptr, ptr) returns (char (*)); 162 dcl amu_$get_name entry (ptr, ptr) returns (char (*)); 163 dcl amu_$get_va_args entry (ptr, ptr, ptr, fixed bin, ptr); 164 dcl amu_$get_va_args_given_start entry (ptr, ptr, ptr, fixed bin, fixed bin, ptr); 165 dcl amu_$hardcore_info_set_cur_ptrs entry (ptr, ptr); 166 dcl amu_$replace_trans entry (ptr, char (168), char (32), fixed bin, fixed bin (35)); 167 dcl amu_$resolve_virtual_addr entry (ptr, ptr, char(*), fixed bin, fixed bin(18), fixed bin (35)); 168 dcl amu_$search_seg entry (ptr, ptr, fixed bin(21), fixed bin, fixed bin (18), fixed bin (18), 169 char (12), fixed bin (35)); 170 dcl amu_$terminate_translation entry (pointer); 171 dcl azm_display_am_ entry (ptr, ptr, bit (1), bit (1), bit (1), bit (1), fixed bin, fixed bin, 172 fixed bin (35)); 173 dcl azm_dump_mem_$mem_config entry (ptr, fixed bin (35)); 174 dcl azm_find_mem_box_ entry (ptr, fixed bin (35), fixed bin, fixed bin (18), fixed bin (35)); 175 dcl azm_verify_dump_ams_ entry (ptr, bit (1), bit (1), fixed bin (35)); 176 dcl azm_verify_dump_ams_$af entry (ptr, bit (1), bit (1), fixed bin (35)) returns (bit (1)); 177 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 178 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 179 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 180 dcl ( 181 ioa_, 182 ioa_$rsnnl 183 ) entry options (variable); 184 dcl ssu_$abort_line entry options (variable); 185 dcl ssu_$abort_subsystem entry options (variable); 186 dcl ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin (35)); 187 dcl ssu_$arg_count entry (pointer, fixed bin, bit (1) aligned); 188 dcl ssu_$arg_ptr entry (pointer, fixed bin, pointer, fixed bin (21)); 189 dcl ssu_$get_abbrev_info entry (ptr, ptr, ptr, bit(1) aligned); 190 dcl ssu_$get_invocation_count entry (ptr, fixed bin, fixed bin); 191 dcl ssu_$get_subsystem_name entry (ptr) returns(char(32)); 192 dcl ssu_$get_subsystem_version entry (ptr) returns(char(32)); 193 dcl ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, ptr, fixed bin (21)); 194 195 /* error codes */ 196 197 dcl amu_et_$no_va_specified fixed bin (35) external static; 198 dcl error_table_$badopt fixed bin (35) external static; 199 dcl error_table_$wrong_no_of_args fixed bin (35) external static; 200 dcl error_table_$segknown fixed bin (35) external static; 201 dcl error_table_$noarg fixed bin (35) external static; 202 dcl error_table_$bad_arg fixed bin (35) external static; 203 dcl error_table_$inconsistent fixed bin (35) external static; 204 dcl error_table_$too_many_args fixed bin (35) external static; 205 206 /*****************************************************************************/ 207 208 azm_requests_2_$absolute_address: 209 entry (P_sci_ptr, P_azm_info_ptr); 210 211 dcl sdw_add fixed bin(26); 212 dcl relative_offset fixed bin(26); 213 dcl bd_sdw fixed bin(24); 214 215 call set_up; 216 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 217 218 if nargs = 0 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: absaddr virtual-address"); 219 220 if nargs > 2 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "^/Usage: absaddr virtual-address"); 221 222 /* process arguments */ 223 /* init va_args */ 224 225 va_args_ptr = addr(va_args); 226 va.segno, va.offset, va.offset_modifier, 227 va.va_position, va.ecode = 0; 228 va.va_switches = "0"b; 229 va.error_msg, va.va_string = ""; 230 va.resolved_va = null(); 231 232 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 233 call amu_$get_va_args(sci_ptr, amu_info_ptr, argp, nargs, va_args_ptr); 234 if va.ecode ^= 0 | va.error_msg ^="" then do; 235 call ssu_$abort_line (sci_ptr, va.ecode, "^a", va.error_msg); 236 end; 237 238 va.range_idx = 0; /* A range is not valid for mc request */ 239 240 do argno = 1 to nargs; /* looping to catch any invalid args */ 241 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 242 if ^va_arg(argno) then do; 243 if substr(arg,1,1) = "-" then code = error_table_$badopt; 244 else code = error_table_$bad_arg; 245 call ssu_$abort_line(sci_ptr, code, " ^a", arg); 246 end; 247 end; /* arg processing */ 248 249 segno = va.segno; 250 first = va.offset; 251 vs = ""; 252 hardcore_cur_ptr = addr (hard_ptr_space); 253 call amu_$hardcore_info_set_cur_ptrs (amu_info_ptr, hardcore_cur_ptr); 254 if hardcore_cur.sstp = null () then call ssu_$abort_line (sci_ptr, 0, "No sst in the fdump."); 255 256 sstp = hardcore_cur.sstp; 257 /* get a pointer to the SDW for the segment */ 258 call amu_$do_translation_hunt_ptr (amu_info_ptr, pointer (baseptr (hardcore_info.dseg), (2 * va.segno)), sdwp, code); 259 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot get pointer to SDW for ^o., va.segno"); 260 261 if index (amu_$get_name (amu_info_ptr, addrel (baseptr (va.segno), va.offset)), "OUT-OF-BOUNDS") ^= 0 then 262 go to ABSADR_OOSB; 263 if sdw.unpaged /* see if the segment is paged */ then 264 if sdw.df /* segment fault? */ then do; /* nope, got the address */ 265 real_address = fixed (sdw.add, 24) + first; 266 if af_sw then do; 267 call ioa_$rsnnl ("^8o", vs, ignore, real_address); 268 return; 269 end; 270 call azm_find_mem_box_ (amu_info_ptr, real_address, segno, first, code); 271 return; 272 end; 273 else do; /* segment not active */ 274 call ioa_$rsnnl ("Segment ^a (^o) is unpaged and faulted.", vs, ignore, 275 amu_$get_name (amu_info_ptr, addrel (baseptr (va.segno), va.offset)), va.segno); 276 277 if af_sw then do; 278 ABSADR_ABT_AF: 279 call ssu_$abort_line (sci_ptr, 0, "^a", vs); 280 end; 281 go to ABS_ADDR_RET; 282 end; 283 284 upt_ptr = hardcore_cur.uptp; 285 sdw_add = fixed(sdw.add,26); 286 bd_sdw = fixed (sdw.bound, 24) * 16; 287 pts = divide (bd_sdw, 1024, 18); 288 word = mod (first, 1024); /* get word within page */ 289 page = divide (first, 1024, 17, 0); /* get PTW index */ 290 /* get a pointer to page table */ 291 if upt_ptr = null() then do; 292 ptp = ptr (hardcore_cur.sstp, fixed (sdw.add, 24) - fixed (sst.ptwbase, 18)); 293 astep = addrel (ptp, -sst.astsize); /* get ptr to ASTE */ 294 pts = sst.pts (fixed (aste.ptsi, 3)); 295 if page >= pts then do; 296 ABSADR_OOSB: 297 call ioa_$rsnnl ("Offset ^o not found in segment ^o.", vs, ignore, first, segno); 298 if af_sw then go to ABSADR_ABT_AF; 299 go to ABS_ADDR_RET; 300 end; 301 else ptp = addrel (ptp, page); /* get ptr to PTW */ 302 end; 303 304 else if (sdw_add > upt.upt_absloc & sdw_add < upt.upt_last_loc) then do; 305 relative_offset = sdw_add - upt.upt_absloc; 306 ptp = addrel(upt_ptr, relative_offset); 307 end; 308 309 else if (sdw_add > upt.iupt_absloc & sdw_add < upt.iupt_last_loc) then do; 310 relative_offset = sdw_add - upt.iupt_absloc; 311 ptp = addrel(upt_ptr, relative_offset); 312 end; 313 314 else do; 315 relative_offset = sdw_add - upt.sst_absloc; 316 ptp = addrel(sstp, relative_offset); 317 end; 318 319 if page > 0 then ptp = addrel (ptp, page); /* get ptr to PTW */ 320 321 if ptw.df /* is page in memory? */ then do; /* yes, it's there */ 322 real_address = (fixed (ptw.add, 18) * 64) + word; 323 if af_sw then 324 call ioa_$rsnnl ("^8o", rs, ignore, real_address); 325 else do; 326 call azm_find_mem_box_ (amu_info_ptr, real_address, segno, first, code); 327 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^/Locating memory for ^o, real address ^8o.", 328 pointer (baseptr (segno), first), real_address); 329 end; 330 end; 331 332 else do; 333 call ioa_$rsnnl ("Page #^o of ^a (seg #^o) is not in main memory.", vs, ignore, page, 334 amu_$get_name (amu_info_ptr, addrel (baseptr (segno), first)), segno); 335 if af_sw then go to ABSADR_ABT_AF; 336 end; 337 338 ABS_ADDR_RET: 339 340 if ^af_sw then call ioa_ ("^a", vs); 341 return; 342 343 /*****************************************************************************/ 344 345 azm_requests_2_$add_request_table: 346 entry (P_sci_ptr, P_azm_info_ptr); 347 348 call set_up; 349 350 if nargs = 0 then call ssu_$abort_line(sci_ptr, error_table_$noarg, "^/Usage: arqt PATHNAME"); 351 if nargs ^= 1 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "Only one pathname allowed."); 352 353 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 354 355 call expand_pathname_ (arg, dir_name, t_seg_name, code); 356 357 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Expanding pathname."); 358 call hcs_$initiate (dir_name, t_seg_name, "", 0, 0, temp_ptr, code); 359 if code ^= 0 then 360 if code ^= error_table_$segknown then 361 call ssu_$abort_line (sci_ptr, code, "Initiating ""^a"".", rtrim (dir_name) || ">" || rtrim (t_seg_name)); 362 363 call ssu_$add_request_table (sci_ptr, temp_ptr, 9999, code); 364 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Adding request table."); 365 366 return; 367 368 369 /*****************************************************************************/ 370 371 azm_requests_2_$associative_memory: 372 entry (P_sci_ptr, P_azm_info_ptr); 373 374 call set_up; 375 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 376 377 code = 0; 378 am_from_prds = "0"b; 379 do_sdws, do_ptws = "1"b; /* default to both */ 380 amsdw_segno, amptw_pageno = -1; /* default to all */ 381 only_full_ams = "1"b; 382 383 do argno = 1 to nargs; 384 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 385 if arg = "-dump" then am_from_prds = "0"b; 386 else if arg = "-prds" then am_from_prds = "1"b; 387 else if arg = "-all" | arg = "-a" then only_full_ams = "0"b; 388 else if arg = "-ptw" then do; 389 do_ptws = "1"b; 390 do_sdws = "0"b; 391 end; 392 393 else if arg = "-sdw" then do; 394 do_sdws = "1"b; 395 do_ptws = "0"b; 396 end; 397 398 else if arg = "-segno" then do; 399 call get_next_arg("SEGNO", argp, argl); 400 amsdw_segno = cv_oct_check_ (arg, code); 401 if code ^= 0 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 402 "-segno requires an OCTAL value ""^a"".", arg); 403 end; 404 405 else if arg = "-pageno" then do; 406 call get_next_arg("PAGENO", argp, argl); 407 amptw_pageno = cv_oct_check_ (arg, code); 408 if code ^= 0 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 409 "-pageno requires an OCTAL value ""^a"".", arg); 410 end; 411 412 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "Usage: am {-ctl_args}"); 413 end; 414 415 if ^do_ptws & amptw_pageno ^= -1 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 416 "^/Cannot select a pageno without displaying PTWAM."); 417 418 if amptw_pageno ^= -1 & amsdw_segno = -1 then do_sdws = "0"b; 419 420 call azm_display_am_ (sci_ptr, amu_info_ptr, am_from_prds, do_sdws, do_ptws, only_full_ams, amsdw_segno, amptw_pageno, 421 code); 422 423 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, ""); 424 425 return; 426 427 /*****************************************************************************/ 428 429 azm_requests_2_$clock: 430 entry (P_sci_ptr, P_azm_info_ptr); 431 432 sci_ptr = P_sci_ptr; 433 call ssu_$abort_line (sci_ptr, 0, "This request has not been implemented yet."); 434 435 return; 436 437 /*****************************************************************************/ 438 439 azm_requests_2_$delete_request_table: 440 entry (P_sci_ptr, P_azm_info_ptr); 441 442 /* this entrypoint is here only until ssu_ has its own standard delete_request_table request. 08/09/83 B. Braun */ 443 444 sci_ptr = P_sci_ptr; 445 call ssu_$abort_line (sci_ptr, 0, "This request has not been implemented yet."); 446 447 return; 448 449 /*****************************************************************************/ 450 451 azm_requests_2_$error_code: 452 entry (P_sci_ptr, P_azm_info_ptr); 453 454 sci_ptr = P_sci_ptr; 455 call ssu_$abort_line (sci_ptr, 0, "This request has not been implemented yet."); 456 457 return; 458 459 /*****************************************************************************/ 460 461 azm_requests_2_$list_request_table: 462 entry (P_sci_ptr, P_azm_info_ptr); 463 464 /* this entrypoint is here only until ssu_ has its own standard list_request_table request. 08/09/83 B. Braun */ 465 466 sci_ptr = P_sci_ptr; 467 call ssu_$abort_line (sci_ptr, 0, "This request has not been implemented yet."); 468 469 return; 470 471 /*****************************************************************************/ 472 473 azm_requests_2_$name: 474 entry (P_sci_ptr, P_azm_info_ptr); 475 476 segno_sw = "0"b; 477 goto SEGMENT_COMMON; 478 479 /*****************************************************************************/ 480 481 azm_requests_2_$number: 482 entry (P_sci_ptr, P_azm_info_ptr); 483 484 segno_sw = "1"b; 485 486 SEGMENT_COMMON: 487 488 call set_up; 489 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 490 code = 0; 491 492 if nargs = 0 then code = error_table_$noarg; 493 else if nargs > 2 then code = error_table_$too_many_args; 494 if code ^= 0 then 495 call ssu_$abort_line (sci_ptr, code, "^/Usage: ^[segno ^;name ^] | ", segno_sw); 496 497 /* init va_args */ 498 499 va_args_ptr = addr(va_args); 500 va.range = 1; 501 va.segno, va.offset, va.offset_modifier, 502 va.va_position, va.ecode = 0; 503 va.va_switches = "0"b; 504 va.error_msg, va.va_string = ""; 505 va.resolved_va = null(); 506 507 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 508 call amu_$get_va_args(sci_ptr, amu_info_ptr, argp, nargs, va_args_ptr); 509 if va.ecode = amu_et_$no_va_specified then call ssu_$abort_line (sci_ptr, 0, 510 "Segment ^[number^;name^] is not known^[ ""^a""^;^s^].", segno_sw, (va.va_string ^= ""), va.va_string); 511 if va.ecode ^= 0 | va.error_msg ^="" then do; 512 call ssu_$abort_line (sci_ptr, va.ecode, "^[^a^s^;^s^a^]", va.error_msg = "", va.va_string, va.error_msg); 513 end; 514 515 do argno = 1 to nargs; /* check for illegal args */ 516 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 517 if ^va_arg(argno) then do; /* must be an error */ 518 if substr(arg,1,1) = "-" then code = error_table_$badopt; 519 else code = error_table_$bad_arg; 520 call ssu_$abort_line(sci_ptr, code, " ^a", arg); 521 end; 522 end; /* processing loop */ 523 524 if segno_sw then do; 525 if ^af_sw then call ioa_ ("^a = Segno ^o|^o.", va.va_string, va.segno, va.offset); 526 else call ioa_$rsnnl ("^o", rs, ignore, va.segno); /* dont return offset */ 527 end; 528 529 else do; /* called by name request */ 530 namep = addrel (baseptr (va.segno), va.offset); 531 if ^af_sw then call ioa_ ("^p = ^a", namep, amu_$get_name (amu_info_ptr, namep)); 532 else do; /* active request case */ 533 tname = amu_$get_name_no_comp (amu_info_ptr, baseptr (va.segno)); 534 i = index(tname, ">"); 535 if i > 0 then tname = reverse(substr(reverse(tname), 1, i-1)); 536 call ioa_$rsnnl ("^a", rs, ignore, rtrim(tname)); 537 end; 538 end; 539 540 return; 541 542 /*****************************************************************************/ 543 544 azm_requests_2_$quit: 545 entry (P_sci_ptr, P_azm_info_ptr); 546 547 /* Leave the subsystem, and clean up. All cleaning up is actually done by the 548* command, so this procedure does hardly anything at all. 549**/ 550 551 call set_up; 552 553 /* start with the last in the chain amu_info_chain should be the last created */ 554 555 if amu_info_ptr ^= null then do; 556 t_amu_info_ptr = amu_info_ptr; 557 558 /* now find the last amu_info in chain */ 559 560 do while (t_amu_info_ptr -> amu_info.chain.next ^= null); 561 t_amu_info_ptr = t_amu_info_ptr -> amu_info.chain.next; 562 end; 563 amu_info_ptr = t_amu_info_ptr; 564 do while (amu_info_ptr ^= null); /* amu_$terminate_translation should reset the amu_info_chain */ 565 call amu_$terminate_translation (amu_info_ptr); /* and set amu_info_ptr to that value */ 566 end; 567 end; 568 azm_info.aip = amu_info_ptr; 569 call ssu_$abort_subsystem (sci_ptr, 0); 570 571 return; /* just in case */ 572 573 /*****************************************************************************/ 574 575 azm_requests_2_$replace: 576 entry (P_sci_ptr, P_azm_info_ptr); 577 578 call set_up(); 579 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 580 581 if nargs ^= 2 then 582 call ssu_$abort_line (sci_ptr, error_table_$wrong_no_of_args,"^/Usage: rp segno/name PATH."); 583 584 dir_name = " "; 585 segname =""; 586 t_seg_name = " "; 587 code = 0; 588 argno = 2; /* process PATH first */ 589 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 590 call expand_pathname_ (arg, dir_name, t_seg_name, code); 591 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Expanding pathname. ^a", arg); 592 593 argno = 1; 594 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 595 segno = cv_oct_check_ (arg, code); 596 if code ^= 0 then do; /* Assume user specified seg name not number */ 597 segname = arg; 598 /* translate segname to a segno */ 599 call amu_$resolve_virtual_addr (sci_ptr, amu_info_ptr, segname, segno, offset, code); 600 if code ^= 0 then call ssu_$abort_line(sci_ptr, code, " ^a", segname); 601 end; 602 603 if index(t_seg_name, "=") > 0 then do; 604 if segname = "" then t_seg_name = convert(t_seg_name, segno); 605 else t_seg_name = segname; 606 end; 607 608 call amu_$replace_trans (amu_info_ptr, dir_name, t_seg_name, segno, code); 609 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^/dir: ^a ^/entry: ^a", dir_name, t_seg_name); 610 611 return; 612 613 /*****************************************************************************/ 614 615 azm_requests_2_$scus: 616 entry (P_sci_ptr, P_azm_info_ptr); 617 618 call set_up; 619 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 620 621 code = 0; 622 if nargs > 0 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "^/Usage: scus"); 623 624 call azm_dump_mem_$mem_config (amu_info_ptr, code); 625 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, ""); 626 627 return; 628 629 /*****************************************************************************/ 630 631 azm_requests_2_$search: 632 entry (P_sci_ptr, P_azm_info_ptr); 633 634 call set_up; 635 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 636 637 if nargs <= 1 then 638 call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: search {range} "); 639 else if nargs > 4 then 640 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "^/Usage: search {range} "); 641 642 /* init va_args */ 643 644 va_args_ptr = addr(va_args); 645 va.range = 0; /* this sets the default to the whole segment */ 646 va.segno, va.offset, va.offset_modifier, 647 va.va_position, va.ecode = 0; 648 va.va_switches = "0"b; 649 va.error_msg, va.va_string = ""; 650 va.resolved_va = null(); 651 652 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 653 if nargs = 2 then check_args = 1; /* NO range specified, don't check for it */ 654 else check_args = nargs-1; /* Don't pass the search_string, it confuses get_va_args */ 655 656 call amu_$get_va_args(sci_ptr, amu_info_ptr, argp, check_args, va_args_ptr); 657 if va.ecode ^= 0 | va.error_msg ^="" then do; 658 call ssu_$abort_line (sci_ptr, va.ecode, "^a", va.error_msg); 659 end; 660 661 argno = 1; 662 code = 0; 663 search_string = ""; 664 665 do argno = argno to nargs; 666 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 667 if ^va_arg(argno) then do; /* assume its the search string */ 668 if argl ^= 12 then call ssu_$abort_line (sci_ptr, 0, "SEARCH_STRING must be 12 characters."); 669 search_string = arg; 670 end; 671 end; /* processing loop */ 672 673 code = search (search_string, "0123457"); 674 if code = 0 then 675 call ssu_$abort_line (sci_ptr, 0, "SEARCH_STRING must contain an octal value to search for ""^a"".", search_string); 676 677 code = search (search_string, "89"); 678 if code ^= 0 then call ssu_$abort_line (ssu_$abort_line, 0, 679 "SEARCH_STRING cannot have decimal number ""^a"".", substr (search_string, code, 1)); 680 681 code = search (search_string, "!#$%&'()=~^|\`{[{[_+;*:]}<,>.?/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); 682 if code ^= 0 then call ssu_$abort_line (sci_ptr, 0, "Invalid mask ""^a"".", substr (search_string, code, 1)); 683 684 segno = va.segno; 685 first = va.offset; 686 range = va.range; 687 call amu_$search_seg(amu_info_ptr, rv_ptr, rv_lth, segno, first, range, search_string, code); 688 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "^a", va.va_string); 689 return; 690 691 /*****************************************************************************/ 692 693 azm_requests_2_$self_identify: 694 entry (P_sci_ptr, P_azm_info_ptr); 695 696 dcl id_str char(80) varying; 697 dcl abbrev_enabled bit(1) aligned; 698 dcl subsys_level fixed bin; 699 700 call set_up; 701 702 id_str = rtrim (ssu_$get_subsystem_name (sci_ptr)); 703 id_str = id_str || " "; 704 705 id_str = id_str || rtrim(ssu_$get_subsystem_version(sci_ptr)); 706 707 call ssu_$get_abbrev_info (sci_ptr, (null ()), (null()), abbrev_enabled); 708 if abbrev_enabled then 709 id_str = id_str || " (abbrev)"; 710 711 call ssu_$get_invocation_count (sci_ptr, subsys_level, (0)); 712 if subsys_level ^= 1 then do; 713 id_str = id_str || " (level "; 714 id_str = id_str || ltrim (char (subsys_level)); 715 id_str = id_str || ")"; 716 end; 717 718 if ^trans_selected () then id_str = id_str || " No dump selected."; 719 call ioa_ ("^a", id_str); 720 721 if amu_info_ptr ^= null () then do; 722 if amu_info.type = FDUMP_PROCESS_TYPE then do; 723 call amu_$fdump_mgr_cur_erf (amu_info_ptr); 724 call amu_$fdump_mpt_current_process (amu_info_ptr); 725 end; 726 else if amu_info.type = SAVED_PROC_TYPE then call amu_$current_deadproc (amu_info_ptr); 727 end; 728 729 return; 730 731 /*****************************************************************************/ 732 733 azm_requests_2_$set: 734 entry (P_sci_ptr, P_azm_info_ptr); 735 736 call set_up; 737 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 738 739 if nargs <= 1 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: set PTR_N virtual-addr"); 740 741 /* first get the pointer name */ 742 743 argno = 1; 744 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 745 t_pr_name = arg; 746 747 /* next get the virtual address */ 748 749 750 /* init va_args */ 751 752 va_args_ptr = addr(va_args); 753 va.range = 1; 754 va.segno, va.offset, va.offset_modifier, 755 va.va_position, va.ecode = 0; 756 va.va_switches = "0"b; 757 va.error_msg, va.va_string = ""; 758 va.resolved_va = null(); 759 760 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 761 call amu_$get_va_args_given_start (sci_ptr, amu_info_ptr, argp, 2, nargs, va_args_ptr); 762 if va.ecode ^= 0 | va.error_msg ^="" then do; 763 call ssu_$abort_line (sci_ptr, va.ecode, "^a", va.error_msg); 764 end; 765 766 va.range_idx = 0; /* ranges not allowed for this request */ 767 768 do argno = 2 to nargs; /* check for illegal args */ 769 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 770 if ^va_arg(argno) then do; /* must be an error */ 771 if substr(arg,1,1) = "-" then code = error_table_$badopt; 772 else code = error_table_$bad_arg; 773 call ssu_$abort_line(sci_ptr, code, " ^a", arg); 774 end; 775 end; /* processing loop */ 776 777 segno = va.segno; 778 first = va.offset; 779 call amu_$definition_set_prn (amu_info_ptr, t_pr_name, segno, first, code); 780 781 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Setting prN. ^a", t_pr_name); 782 return; 783 784 /*****************************************************************************/ 785 786 azm_requests_2_$value: 787 entry (P_sci_ptr, P_azm_info_ptr); 788 789 call set_up; 790 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected."); 791 792 if nargs = 0 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: value TEMP_PTR_NAME | -all."); 793 794 do argno = 1 to nargs; 795 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 796 if arg = "-all" | arg = "-a" then do; 797 do i = 0 to hbound (t_ptrs, 1); 798 call ioa_ ("^a = ^p", t_ptrs.name (i), t_ptrs.val (i)); 799 end; 800 return; 801 end; 802 803 t_pr_name = arg; 804 call amu_$definition_get_prn (amu_info_ptr, t_pr_name, temp_ptr, code); 805 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, ""); 806 else call ioa_ ("^a = ^p", arg, temp_ptr); 807 end; 808 809 return; 810 811 812 /*****************************************************************************/ 813 814 azm_requests_2_$verify_am: 815 entry (P_sci_ptr, P_azm_info_ptr); 816 817 call set_up; 818 if ^trans_selected () then call ssu_$abort_line (sci_ptr, 0, "No dump selected"); 819 820 do_sdws, do_ptws = "0"b; 821 822 if nargs = 0 then do; 823 do_sdws, do_ptws = "1"b; 824 go to verify_ams; 825 end; 826 827 if nargs > 1 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "^/Usage: vfam {-sdw | -ptw}"); 828 829 argno = 1; 830 call ssu_$arg_ptr (sci_ptr, argno, argp, argl); 831 if arg = "-sdw" then do_sdws = "1"b; 832 else if arg = "-ptw" then do_ptws = "1"b; 833 else call ssu_$abort_line (sci_ptr, error_table_$bad_arg, """^a"".", arg); 834 835 verify_ams: 836 if ^af_sw then 837 call azm_verify_dump_ams_ (amu_info_ptr, do_sdws, do_ptws, code); 838 else do; 839 if azm_verify_dump_ams_$af (amu_info_ptr, do_sdws, do_ptws, code) then 840 rs = "true"; 841 else rs = "false"; 842 end; 843 844 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, ""); 845 return; 846 847 get_next_arg: proc(Arg_expected, ap1, al1); 848 849 /* This guy gets the next argument from the argument string, complaining if it's not there */ 850 851 dcl Arg_expected char(*); 852 dcl (ap1 ptr, 853 al1 fixed bin(21)); 854 855 if (argno + 1) > nargs then 856 call ssu_$abort_line(sci_ptr, error_table_$noarg, "A ^a expected after ^a.", Arg_expected, arg); 857 858 argno = argno + 1; 859 call ssu_$arg_ptr (sci_ptr, argno, ap1, al1); 860 861 end get_next_arg; 862 863 set_up: 864 proc; 865 866 sci_ptr = P_sci_ptr; 867 azm_info_ptr = P_azm_info_ptr; 868 amu_info_ptr = azm_info.aip; 869 rv_ptr = null(); 870 rv_lth = 0; 871 axp, configp, dsegp, start_configp = null; 872 axstring, match_str, ret_str, temp_str = ""; 873 brief_sw, cur_erf, del_cur_erf, del_erf, dir_sw, erfs_found, 874 expand_ptr_sw, expand_sw, first_erf, first_value_set, 875 forward_search, frame_entry, hdr_printed, last_erf, list_erfs, 876 next_erf, prev_erf, print_all_trans, range_value_set, 877 raw_syserr_data, struct_sw, why_erf = "0"b; 878 last, ll, ln, segln = 0; 879 slog_code = 3; 880 call ssu_$return_arg (sci_ptr, nargs, af_sw, rv_ptr, rv_lth); 881 if ^af_sw then call ssu_$arg_count (sci_ptr, nargs, af_sw); 882 883 end set_up; 884 885 trans_selected: 886 proc () returns (bit (1)); 887 888 if amu_info_ptr = null () then return ("0"b); 889 return ("1"b); 890 end trans_selected; 891 892 va_arg: proc(a_pos) returns(bit(1)); 893 894 dcl a_pos fixed bin; 895 dcl i fixed bin; 896 dcl arg_positions (3) aligned based (Ppos); 897 dcl Ppos ptr; 898 899 Ppos = addr(va.va_position); 900 do i = 1 to hbound(arg_positions,1); 901 if a_pos = arg_positions(i) then return("1"b); 902 end; 903 904 return("0"b); 905 end va_arg; 906 1 1 /* Begin amu_definitions.incl.pl1 */ 1 2 /* This is a place to keep the definitions for a translation */ 1 3 1 4 dcl 1 definitions_info based (amu_info.definitions_info_ptr), 1 5 2 hash_buckets (127) pointer unaligned, 1 6 2 t_ptrs (0:9), 1 7 3 name char (4), 1 8 3 val ptr unal, 1 9 2 pad fixed bin; 1 10 1 11 dcl t_ptr_indx fixed bin; 1 12 dcl init_ptr_names (0:9) char (4) init ("ap", "ab", "bp", "bb", "lp", "lb", "sp", "sb", "prfr", "prmc"); 1 13 1 14 1 15 /* End amu_definitions_info.incl.pl1 */ 907 908 2 1 /* BEGIN INCLUDE FILE amu_hardcore_info.incl.pl1 */ 2 2 2 3 /* This structure contains information about the hardcore supervisor address 2 4* space for an address translation. */ 2 5 2 6 dcl 1 hardcore_info aligned based (amu_info.hardcore_info_ptr), 2 7 2 8 2 pointers, /* assorted pointers to various useful items */ 2 9 3 slt aligned, /* SLT */ 2 10 4 fptr pointer unaligned, /* address in foreign address space */ 2 11 4 lptr pointer unaligned, /* location in local address space */ 2 12 3 sltnt aligned like hardcore_info.slt, /* SLT names segment */ 2 13 3 definitions aligned like hardcore_info.slt, /* hardcore definitions_ segment */ 2 14 2 15 3 sst aligned like hardcore_info.slt, /* SST */ 2 16 3 tc_data aligned like hardcore_info.slt, /* TC_DATA */ 2 17 3 sstnt aligned like hardcore_info.slt, /* SSTNT (if any -- foreign_ptr = null if not) */ 2 18 3 upt aligned like hardcore_info.slt, /* unpaged_page_tables (if any -- foreign_ptr = null if not) */ 2 19 2 20 2 segno, /* segment numbers of various per-process/per-processor segs */ 2 21 3 prds fixed bin (15), /* segno of PRDS */ 2 22 3 dseg fixed bin (15), /* DSEG */ 2 23 3 pds fixed bin (15), /* PDS */ 2 24 3 kst fixed bin (15), /* KST */ 2 25 3 stack_0 fixed bin (15), /* segno of stack_0 -- first one in stack group */ 2 26 3 unpaged_page_tables fixed bin(15), /* segno of unpaged_page_tables if it exists */ 2 27 2 28 2 apt, /* information about the APT */ 2 29 3 foreign_ptr pointer unaligned, /* foreign and local pointers to tcm.apt */ 2 30 3 local_ptr pointer unaligned, 2 31 3 count fixed bin, /* number of APTEs */ 2 32 3 size fixed bin, /* size of a single APTE */ 2 33 2 34 2 hcs_count fixed bin, /* highest hardcore segno */ 2 35 2 36 2 pad1 fixed bin; 2 37 2 38 dcl hardcore_cur_ptr ptr; 2 39 2 40 dcl 1 hardcore_cur based (hardcore_cur_ptr), 2 41 2 sltp ptr, 2 42 2 sltntp ptr, 2 43 2 defp ptr, 2 44 2 sstp ptr, 2 45 2 tc_datap ptr, 2 46 2 sstntp ptr, 2 47 2 uptp ptr; 2 48 2 49 2 50 2 51 2 52 /* END INCLUDE FILE amu_hardcore_info.incl.pl1 */ 909 910 3 1 /* BEGIN INCLUDE FILE amu_info.incl.pl1 */ 3 2 3 3 dcl 1 amu_info aligned based (amu_info_ptr), 3 4 2 version char (8) aligned, /* AMU_INFO_VERSION */ 3 5 2 flags aligned, 3 6 3 early_dump bit(1) unal, 3 7 3 pad bit(35) unal, 3 8 2 type fixed bin unal, /* One of the types below */ 3 9 2 time_created fixed bin (71) aligned, /* time created -- for debugging purposes */ 3 10 2 chain, /* a chain of all the amu_info's which exist */ 3 11 3 prev pointer unaligned, 3 12 3 next pointer unaligned, 3 13 3 14 2 area_ptr pointer, /* pointer to area used for allocating things */ 3 15 3 16 2 translation_table_ptr pointer, /* pointer to address map -- always present */ 3 17 /* SEE: amu_translation.incl.pl1 */ 3 18 2 fdump_info_ptr pointer, 3 19 /* pointer to FDUMP info, present if looking at an FDUMP */ 3 20 /* SEE: amu_fdump_info.incl.pl1 */ 3 21 /* old_uid_table pointer if looking at a SAVED PROC. */ 3 22 /* See: amu_old_uid_table */ 3 23 3 24 3 25 2 hardcore_info_ptr pointer, /* pointer to hardcore information -- always present */ 3 26 /* SEE: amu_hardcore_info.incl.pl1 */ 3 27 2 copy_chain pointer, /* pointer to info about segment copies */ 3 28 /* SEE: amu_copy_info.incl.pl1 */ 3 29 2 process_info_ptr pointer, /* pointer to process info for this translation */ 3 30 /* SEE: amu_process_info.incl.pl1 */ 3 31 2 process_idx fixed bin, /* index of process in translation-specifc process table */ 3 32 3 33 2 proc_idx_hold fixed bin, /* a place to keep the index when a changing to another proc */ 3 34 3 35 2 error_info, /* various info about how amu_error_ is to behave */ 3 36 3 error_flags aligned, 3 37 4 handler_exists bit (1) unaligned, /* set to indicate existence of an amu_error handler */ 3 38 4 in_subsystem bit (1) unaligned, /* This amu_info belongs to an ssu_ maintained subsystem */ 3 39 4 pad bit (34) unaligned, 3 40 3 sci_ptr pointer, /* sci_ptr for subsystem, if in_subsystem = "1"b */ 3 41 2 definitions_info_ptr ptr; 3 42 3 43 dcl amu_area area based (amu_info.area_ptr); 3 44 3 45 dcl amu_info_ptr pointer; 3 46 3 47 dcl (FDUMP_TYPE init (1037), /* the various legitimate types of amu_info's */ 3 48 FDUMP_PROCESS_TYPE init (1038), 3 49 ONLINE_TYPE init (1039), 3 50 ONLINE_PROCESS_TYPE init (1040), 3 51 NETWORK_FDUMP_TYPE init (1041), 3 52 NETWORK_ONLINE_TYPE init (1042), 3 53 SAVED_PROC_TYPE init (1043), 3 54 INDIRECT_TYPE init (1044)) fixed bin internal static options (constant); 3 55 3 56 dcl AMU_INFO_VERSION_1 char (8) internal static options (constant) init ("amu_v1"); 3 57 dcl AMU_INFO_VERSION char (8) internal static options (constant) init ("amu_v1"); 3 58 dcl AMU_INFO_VERSION_2 char (8) internal static options (constant) init ("amu_v2"); 3 59 3 60 dcl PDIR_SUFFIX char(4) init("pdir") int static options(constant); 3 61 3 62 /* END INCLUDE FILE amu_info.incl.pl1 */ 911 912 4 1 /* BEGIN INCLUDE FILE ...aste.incl.pl1 ... */ 4 2 4 3 /* Template for an AST entry. Length = 12 words. */ 4 4 4 5 /* Words 0 to 7, and 11 are read by PC; they are read and modified by SC. 4 6* Words 8, 9 and 10 are modified by PC; they should never be modified without locking the PC lock */ 4 7 /* Modified January 1985 by Keith Loepere for multi_class. */ 4 8 4 9 dcl astep ptr; 4 10 4 11 dcl 1 aste based (astep) aligned, 4 12 4 13 (2 fp bit (18), /* forward used list rel pointer */ 4 14 2 bp bit (18), /* backward used list rel pointer */ 4 15 4 16 2 infl bit (18), /* ptr to NEXT in list of ASTE's of my brothers */ 4 17 2 infp bit (18), /* ptr to FIRST in list of ASTE's of my children */ 4 18 4 19 2 strp bit (18), /* rel pointer to process trailer */ 4 20 2 par_astep bit (18), /* rel pointer to parent aste */ 4 21 4 22 2 uid bit (36), /* segment unique id */ 4 23 4 24 2 msl bit (9), /* maximum segment length in 1024 word units */ 4 25 2 pvtx fixed bin (8), /* physical volume table index */ 4 26 2 vtocx fixed bin (17), /* vtoc entry index */ 4 27 4 28 2 usedf bit (1), /* ast entry is being used if non-zero */ 4 29 2 init bit (1), /* used bit - insure 1 lap */ 4 30 2 gtus bit (1), /* global transparent usage switch */ 4 31 2 gtms bit (1), /* global transparent modified switch */ 4 32 2 hc bit (1), /* hard core segment */ 4 33 2 hc_sdw bit (1), /* aste with sdw for hardcore seg if non-zero */ 4 34 2 any_access_on bit (1), /* any sdw allows access, unless write_access_on */ 4 35 2 write_access_on bit (1), /* any sdw allows write access */ 4 36 2 inhibit_cache bit (1), /* flag not to reset above bits */ 4 37 2 explicit_deact_ok bit (1), /* set if user can deactivate seg */ 4 38 2 deact_error bit (1), /* set if error occurred while deactivating */ 4 39 2 hc_part bit (1), /* set if pages are in a hardcore partition */ 4 40 2 fm_damaged bit (1), /* set if filemap checksum was ever bad */ 4 41 2 multi_class bit (1), /* set if page_control should watch state changes to this segment */ 4 42 2 pad1 bit (2), /* OO */ 4 43 2 dius bit (1), /* dumper in use switch */ 4 44 2 nid bit (1), /* if on prevents addtion to incremental dump map */ 4 45 2 dmpr_pad bit (1), 4 46 2 ehs bit (1), /* entry hold switch */ 4 47 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 4 48 2 dirsw bit (1), /* directory switch */ 4 49 2 master_dir bit (1), /* master dir - a root for the log volume */ 4 50 2 volmap_seg bit (1), /* volmap_seg for some volume */ 4 51 2 tqsw (0:1) bit (1), /* terminal quota switch - (0) for non dir pages */ 4 52 2 pad_ic bit (10), /* Used to be aste.ic */ 4 53 4 54 2 dtu bit (36), /* date and time segment last used */ 4 55 4 56 2 dtm bit (36), /* date and time segment last modified */ 4 57 4 58 4 59 2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 4 60 4 61 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 4 62 4 63 2 csl bit (9), /* current segment length in 1024 words units */ 4 64 2 fmchanged bit (1), /* turned on by page if file map changed */ 4 65 2 fms bit (1), /* file modified switch */ 4 66 2 npfs bit (1), /* no page fault switch */ 4 67 2 gtpd bit (1), /* global transparent paging device switch */ 4 68 2 dnzp bit (1), /* don't null out if zero page switch */ 4 69 2 per_process bit (1), /* use master quota for this entry */ 4 70 2 ddnp bit (1), /* don't deposit nulled pages */ 4 71 2 pad2 bit (2), 4 72 2 records bit (9), /* number of records used by the seg in sec storage */ 4 73 2 np bit (9), /* number of pages in core */ 4 74 4 75 4 76 2 ht_fp bit (18), /* hash table forward rel pointer */ 4 77 2 fmchanged1 bit (1), /* value of "fmchanged" saved by pc$get_file_map */ 4 78 2 damaged bit (1), /* PC declared segment unusable */ 4 79 2 pack_ovfl bit (1), /* page fault on seg would cause pack overflow */ 4 80 2 synchronized bit (1), /* Data Management synchronized segment */ 4 81 2 pad3 bit (6), /* OOOOOOOOO */ 4 82 2 ptsi bit (2), /* page table size index */ 4 83 2 marker bit (6)) unaligned; /* marker to indicate last word of ASTE */ 4 84 4 85 4 86 dcl asta (0 : 8000) bit (36*12 /* sst-> sst.astsize */) based aligned; 4 87 4 88 4 89 dcl 1 aste_part aligned based (astep), 4 90 4 91 2 one bit (36) unaligned, /* fp and bp */ 4 92 2 two bit (36*11 - 8) unaligned, /* part that has to be zeroed when ASTE is freed */ 4 93 2 three bit (8) unaligned; /* ptsi and marker */ 4 94 4 95 4 96 dcl 1 seg_aste based (astep) aligned, /* Overlay because quota is only for dirs */ 4 97 2 pad1 bit (8*36), 4 98 2 usage fixed bin (35), /* page fault count: overlays quota */ 4 99 2 pad2 bit (3*36); 4 100 4 101 /* END INCLUDE FILE ... aste.incl.pl1 */ 913 914 5 1 /* BEGIN INCLUDE FILE azm_info.incl.pl1 */ 5 2 5 3 dcl 1 azm_info aligned based (azm_info_ptr), 5 4 2 version char(8), 5 5 2 area_ptr ptr, /* area pointer for azm to use when needed */ 5 6 2 aip pointer, /* pointer for all amu_ calls */ 5 7 2 flags aligned, 5 8 3 in_erf bit (1) unaligned, /* examining an FDUMP */ 5 9 3 in_process bit (1) unaligned, /* some specific process selected in FDUMP */ 5 10 3 online bit (1) unaligned, /* examining online system, my process */ 5 11 3 saved_proc bit (1) unaligned, /* examining "deadproc" */ 5 12 3 pad bit (33) unaligned, 5 13 5 14 2 erf_name char (168), /* name of ERF or deadproc path */ 5 15 2 pad fixed bin; 5 16 5 17 dcl azm_info_ptr pointer; 5 18 5 19 dcl AZM_INFO_VERSION_1 char (8) internal static options (constant) init ("azm_v1"); 5 20 dcl AZM_INFO_VERSION_2 char (8) internal static options (constant) init ("azm_v2"); 5 21 5 22 /* END INCLUDE FILE azm_info.incl.pl1 */ 915 916 6 1 /* BEGIN INCLUDE FILE ... sdw.incl.pl1 ... last modified 12 May 1976 */ 6 2 6 3 dcl sdwp ptr; 6 4 6 5 dcl 1 sdw based (sdwp) aligned, /* Segment Descriptor Word */ 6 6 6 7 (2 add bit (24), /* main memory address of page table */ 6 8 2 (r1, r2, r3) bit (3), /* ring brackets for the segment */ 6 9 2 df bit (1), /* directed fault bit (0 => fault) */ 6 10 2 df_no bit (2), /* directed fault number */ 6 11 6 12 2 pad1 bit (1), 6 13 2 bound bit (14), /* boundary field (in 16 word blocks) */ 6 14 2 access, /* access bits */ 6 15 3 read bit (1), /* read permission bit */ 6 16 3 execute bit (1), /* execute permission bit */ 6 17 3 write bit (1), /* write permission bit */ 6 18 3 privileged bit (1), /* privileged bit */ 6 19 2 unpaged bit (1), /* segment is unpaged if this is 1 */ 6 20 2 entry_bound_sw bit (1), /* if this is 0 the entry bound is checked by hardware */ 6 21 2 cache bit (1), /* cache enable bit */ 6 22 2 entry_bound bit (14)) unaligned; /* entry bound */ 6 23 6 24 dcl 1 sdwa (0: 1) based (sdwp) aligned like sdw; /* SDW array (descriptor segment) */ 6 25 6 26 /* END INCLUDE FILE sdw.incl.pl1 */ 917 918 7 1 /* BEGIN INCLUDE FILE ptw.incl.pl1 --- 09/13/74 for nss */ 7 2 7 3 dcl ptp ptr; /* pointer to either page table or page table word */ 7 4 7 5 dcl 1 ptw based (ptp) aligned, /* page table word */ 7 6 7 7 (2 add bit (18), /* address of page, type of which is defined by add_type */ 7 8 2 add_type bit (4), /* 0000=null, 1000=core, 0100=disk, 0010=pd, 0001=swap */ 7 9 2 first bit (1), /* the page has not yet been written out */ 7 10 2 processed bit (1), /* temporary used during post-purging and error signalling */ 7 11 2 pad1 bit (1), 7 12 2 unusable1 bit (1), /* can't be used because hardware resets this bit */ 7 13 2 phu bit (1), /* page has been used bit */ 7 14 2 phm1 bit (1), /* Cumulative OR of hardware phm's */ 7 15 2 nypd bit (1), /* must be moved to paging device */ 7 16 2 phm bit (1), /* page has been modified bit */ 7 17 2 phu1 bit (1), /* page has been used in the quantum */ 7 18 2 wired bit (1), /* page is to remain in core */ 7 19 2 os bit (1), /* page is out-of-service (I/O in progress) */ 7 20 2 df bit (1), /* directed fault if this is 0 (page not in core) */ 7 21 2 df_no bit (2)) unaligned; /* directed fault number for page faults */ 7 22 7 23 dcl 1 ptwa (0:255) based (ptp) aligned like ptw; /* page table */ 7 24 7 25 dcl ptwa_bits (0:255) based (ptp) bit (36) aligned; /* page table array as raw bits */ 7 26 7 27 dcl 1 mptw based (ptp) aligned, /* page table word while page is not in core */ 7 28 2 devadd bit (22) unaligned, /* device address where page resides */ 7 29 2 pad bit (14) unaligned; 7 30 7 31 dcl 1 mptwa (0 : 1) based (ptp) aligned, /* page table while pages are not in core */ 7 32 2 devadd bit (22) unaligned, /* device address where page resides */ 7 33 2 pad bit (14) unaligned; 7 34 7 35 dcl 1 atptw based (ptp) aligned, /* PL/I has problems on overlay-def based */ 7 36 2 add bit (18) unal, 7 37 2 (core, disk, pd, reserved) bit (1) unal, /* address types */ 7 38 2 pad bit (14) unal; 7 39 7 40 dcl 1 atptwa (0:255) based (ptp) aligned like atptw; 7 41 7 42 /* END INCLUDE FILE ptw.incl.pl1 */ 919 920 8 1 /* BEGIN INCLUDE FILE ... sst.incl.pl1 ... January 1971 */ 8 2 /* Note: This include file has an ALM counterpart made with cif. Keep it up to date */ 8 3 /* Deleted paging device info and added pc segmove info, Benson Margulies 84-01-03 */ 8 4 /* Added covert channel meters, Keith Loepere 85-01-08. */ 8 5 8 6 dcl sst_seg$ external; 8 7 dcl sstp ptr; 8 8 8 9 dcl 1 sst based (sstp) aligned, 8 10 2 space (8) fixed bin, /* empty space to watch for bugs */ 8 11 8 12 /* SST HEADER */ 8 13 8 14 2 pre_page_time fixed bin (71), /* total time spent pre-paging */ 8 15 2 post_purge_time fixed bin (71), /* total time spent post-purging */ 8 16 2 post_in_core fixed bin, /* total pages in core (and in list) at purge time */ 8 17 2 thrashing fixed bin, /* meter of thrashing being done on system */ 8 18 2 npfs_misses fixed bin, /* meter of times npfs was on when pre-paging */ 8 19 2 salv fixed bin, /* flag which is ^=0 if and only if salvaging */ 8 20 8 21 2 ptl bit (36), /* global page table loop lock */ 8 22 2 astl bit (36), /* global ast allocation block lock */ 8 23 2 astl_event bit (36), /* event used when waiting for AST lock */ 8 24 2 astl_notify_requested bit (1) aligned, /* flag to notify AST lock */ 8 25 2 nused fixed bin, /* number of pages on used list */ 8 26 2 ptwbase fixed bin (24), /* absolute address of page table array */ 8 27 2 tfreep ptr, /* pointer to first trailer on free list */ 8 28 8 29 2 astap ptr, /* aste array pointer */ 8 30 2 ptl_wait_ct fixed bin, /* pxss: number is >= # of processes waiting to ptl */ 8 31 2 astsize fixed bin, /* size of an AST entry */ 8 32 2 cmesize fixed bin, /* size of a CME entry */ 8 33 2 root_astep ptr, /* pointer to the root AST entry */ 8 34 8 35 2 pts (0: 3) fixed bin, /* array of page table sizes */ 8 36 2 level (0:3), /* per-list information about ASTE's */ 8 37 3 (ausedp, no_aste) bit (18) unaligned, /* used list and count of number of entries */ 8 38 8 39 2 (atempp, atempp1) bit (18) unal, /* temp seg list pointer */ 8 40 2 dm_enabled bit (1) aligned, /* ON => journal seg exists */ 8 41 2 (ainitp, ainitp1) bit (18) unal, /* init seg list pointer */ 8 42 2 strsize fixed bin, /* Trailer size in words. */ 8 43 8 44 /* CORE MAP HEADER */ 8 45 8 46 2 cmp ptr, /* pointer to start of core map */ 8 47 2 usedp bit (18), /* pointer to first used core block */ 8 48 2 wtct fixed bin, /* count of pages being written */ 8 49 8 50 2 startp bit (18), /* pointer to solid page for lap counting (fsdct) */ 8 51 2 removep bit (18), /* pointer to list of pages being removed from use */ 8 52 /* MISC */ 8 53 8 54 2 double_write fixed bin, /* trigger for store through scheme */ 8 55 /* 0 = no double writes, 8 56* 1 = all non-pd pages get written, 8 57* 2 = all directories get written */ 8 58 2 temp_w_event bit (36) aligned, /* wait event for temp wiring lock */ 8 59 2 root_pvtx fixed bin, /* pvtx or rpv */ 8 60 2 nolock bit (1) aligned, /* if on, don't lock ptl on interrupts */ 8 61 8 62 2 fc_skips_pinned fixed bin (35), /* number of skips over pinned page in find_core */ 8 63 2 cl_skips_pinned fixed bin (35), /* number of skips over pinned page in claim_mod_core */ 8 64 2 ast_ht_ptr ptr, /* AST hast table pointer */ 8 65 2 ast_ht_n_buckets fixed bin, /* number of buckets in AST hash table */ 8 66 2 ast_ht_uid_mask bit (36) aligned, /* mask to strip out low-order bits of uid */ 8 67 2 meter_ast_locking fixed bin, /* non-zero enables AST lock meters */ 8 68 2 checksum_filemap fixed bin, /* non-zero enables filemap checksumming */ 8 69 8 70 2 page_read_errors fixed bin, /* read errors posted to page control */ 8 71 2 page_write_errors fixed bin, /* write errors posted to page control */ 8 72 8 73 2 cycle_pv_allocation fixed bin, /* flag to cycle VTOCE allocation among PVs */ 8 74 8 75 2 n_trailers fixed bin, /* Number of trailer entries in str_seg */ 8 76 2 synch_activations fixed bin (35), /* Activation attempts for synchronized segs */ 8 77 2 synch_skips fixed bin (35), /* get_aste skips because not synchronized */ 8 78 8 79 2 lock_waits fixed bin, /* Number of times we had to wait for a lock */ 8 80 2 total_locks_set fixed bin, /* Total number of block locks set */ 8 81 2 pdir_page_faults fixed bin, /* total page faults off >pdd */ 8 82 2 level_1_page_faults fixed bin, /* total page faults in sys libes */ 8 83 2 dir_page_faults fixed bin, /* Total page faults on directories */ 8 84 2 ring_0_page_faults fixed bin, /* page faults in ring 0 */ 8 85 2 rqover fixed bin (35), /* errcode for record quota overflow */ 8 86 2 pc_io_waits fixed bin, /* Number of times pc had to wait on io */ 8 87 8 88 8 89 /* The following (until pdmap) used to be the 'cnt' in cnt.incl.pl1 */ 8 90 8 91 2 steps fixed bin, /* number of steps taken around used list */ 8 92 2 needc fixed bin, /* number of times core page needed */ 8 93 2 ceiling fixed bin, /* number of times ceiling hit */ 8 94 2 ctwait fixed bin, /* number of times write counter was full */ 8 95 2 wired fixed bin, /* number of pages wired by pc */ 8 96 2 laps fixed bin, /* number of times around used list */ 8 97 2 skipw fixed bin, /* number of pages skiped because they were wired */ 8 98 2 skipu fixed bin, /* because of being used */ 8 99 8 100 2 skipm fixed bin, /* because of being modified */ 8 101 2 skipos fixed bin, /* because out of service */ 8 102 2 aused fixed bin, /* number of AST entries on used list */ 8 103 2 damaged_ct fixed bin, /* count of segments that system damaged */ 8 104 2 deact_count fixed bin, /* count of deactivations */ 8 105 2 demand_deact_attempts fixed bin, /* user requested deactivations */ 8 106 2 demand_deactivations fixed bin, /* user instigated deactivations */ 8 107 8 108 2 reads (8) fixed bin, /* number of reads for each did */ 8 109 2 writes (8) fixed bin, /* number of writes for each did */ 8 110 8 111 2 short_pf_count fixed bin, /* count of page faults on out of service pages */ 8 112 2 loop_locks fixed bin, /* count of times locked PTL */ 8 113 2 loop_lock_time fixed bin (71), /* time spent looping on PTL */ 8 114 2 cpu_sf_time fixed bin (71), /* cpu time spent in seg_fault */ 8 115 2 total_sf_pf fixed bin, /* total page faults while in seg_fault */ 8 116 2 total_sf fixed bin, /* total number of seg_faults */ 8 117 2 pre_page_size fixed bin, /* total pre-pagings expected */ 8 118 2 post_list_size fixed bin, 8 119 2 post_purgings fixed bin, /* total number of post-purgings */ 8 120 2 post_purge_calls fixed bin, /* total number of calls to post-purge */ 8 121 2 pre_page_calls fixed bin, /* total number of calls tp pre-page */ 8 122 2 pre_page_list_size fixed bin, 8 123 2 pre_page_misses fixed bin, /* total number of misses in pre-page list */ 8 124 2 pre_pagings fixed bin, /* total number of pre-pagings */ 8 125 8 126 /* TEMPORARY WIRED PROCEDURE INFO */ 8 127 8 128 2 wire_proc_data (8) fixed bin (71), /* data for wire_proc */ 8 129 8 130 /* MAIN MEMORY USAGE INFORMATION */ 8 131 8 132 2 abs_wired_count fixed bin, /* count of abs-wired pages */ 8 133 2 system_type fixed bin, /* ADP_SYSTEM or L68_SYSTEM */ 8 134 2 wired_copies fixed bin, /* number of times a wired page was copied */ 8 135 2 recopies fixed bin, /* number of times recopied because modified */ 8 136 2 first_core_block fixed bin, /* core map index for first block of core */ 8 137 2 last_core_block fixed bin, /* core map index for last block of core */ 8 138 2 fw_retries fixed bin (35), /* force_write retries due to ASTE move */ 8 139 2 pvhtp ptr unaligned, /* ptr to PV hold table for debugging */ 8 140 8 141 /* AST METERS */ 8 142 8 143 2 askipsize (0: 3) fixed bin, /* array of skips because wrong AST size */ 8 144 2 aneedsize (0: 3) fixed bin, /* array of times needed each size */ 8 145 8 146 2 stepsa fixed bin, /* count of steps taken looking for an AST entry */ 8 147 2 askipsehs fixed bin, /* count of skips because EHS was ON */ 8 148 2 asearches fixed bin, /* count of full searches made */ 8 149 2 askipslevel fixed bin, /* count of skips because pages were in core */ 8 150 2 askipsinit fixed bin, /* count of times turned OFF init switch */ 8 151 2 acost fixed bin, /* cumulative cost of deactivations */ 8 152 2 askipslock fixed bin, /* count of skips because couldn't lock parent */ 8 153 2 askipdius fixed bin, /* count of skips because DIUS was on */ 8 154 8 155 2 alaps fixed bin, /* lap counter for AST list */ 8 156 2 updates fixed bin, /* calls to updateb */ 8 157 2 setfaults_all fixed bin, /* setfaults done to the entire SDW */ 8 158 2 setfaults_acc fixed bin, /* setfaults done to the access field */ 8 159 2 total_bf fixed bin, /* count of bound faults */ 8 160 2 total_bf_pf fixed bin, /* page faults during bound faults */ 8 161 2 cpu_bf_time fixed bin (71), /* cpu time spent in bound fault */ 8 162 8 163 2 asteps (0: 3) fixed bin, /* per-size AST step counters */ 8 164 8 165 2 ast_locked_at_time fixed bin (71), /* clock reading when ast last locked */ 8 166 2 ast_locked_total_time fixed bin (71), /* total real time the ast lock was locked */ 8 167 2 ast_lock_wait_time fixed bin (71), /* total real time of all waiting on ast lock */ 8 168 2 ast_locking_count fixed bin (35), /* number of times ast was locked */ 8 169 2 cleanup_count fixed bin, /* calls to pc$cleanup */ 8 170 2 cleanup_real_time fixed bin (71), /* total real time in pc$cleanup */ 8 171 8 172 /* PRE-PAGE METERS */ 8 173 8 174 2 tree_count (0: 63) fixed bin, /* counters for pre-page decisions */ 8 175 8 176 2 pp_meters (0: 63) fixed bin, /* counters for measuring pre-page success */ 8 177 8 178 8 179 2 wusedp bit (18) aligned, /* Relative cmep to next cme for writing */ 8 180 2 write_hunts fixed bin, /* Times claim_mod_core invoked */ 8 181 2 claim_skip_cme fixed bin, /* Times unacceptable cme found by c_m_c */ 8 182 2 claim_skip_free fixed bin, /* Times free cme passed by c_m_c */ 8 183 2 claim_notmod fixed bin, /* Times c_m_c passed pure page */ 8 184 2 claim_passed_used fixed bin, /* Times used page seen */ 8 185 2 claim_skip_ptw fixed bin, /* Times c_m_c saw unacceptable ptw */ 8 186 2 claim_writes fixed bin, /* Writes queued by c_m_c */ 8 187 2 claim_steps fixed bin, /* Steps passed in core claiming */ 8 188 2 pre_seeks_failed fixed bin, /* counter of times quick find_core_ failed */ 8 189 2 resurrections fixed bin, /* nulled addresses reinstated */ 8 190 2 volmap_seg_page_faults fixed bin (35), /* Pseudo-page faults on volmap_seg */ 8 191 2 oopv fixed bin, /* out-of-physical-volume page faults */ 8 192 2 dblw_resurrections fixed bin, /* addresses resurrected by double-writing */ 8 193 2 sgm_time fixed bin (71), /* Time (VCPU) in seg mover */ 8 194 2 sgm_pf fixed bin, /* Page faults in seg moving */ 8 195 2 bad_sgms fixed bin, /* Seg moves that failed */ 8 196 2 sgm_sgft fixed bin, /* Seg faults in seg moves */ 8 197 2 good_sgms fixed bin, /* Seg moves that completed */ 8 198 2 claim_runs fixed bin, /* Times claim_mod_core had to run */ 8 199 2 activations fixed bin, /* total count of activations */ 8 200 2 dir_activations fixed bin, /* count of directory activations */ 8 201 2 hedge_updatevs fixed bin, /* call-in updatevs */ 8 202 2 hedge_writes fixed bin, /* call in core flush writes */ 8 203 2 evict_recover_data, /* see evict_page.alm */ 8 204 3 evict_ptp bit (18) unal, /* ptp of page being moved */ 8 205 3 evict_phmbit bit (18) unal, /* N/Z if page was mod */ 8 206 8 207 /* Data for metering force_write facility 08/19/78 */ 8 208 8 209 2 force_swrites fixed bin, /* Calls on segments to force write */ 8 210 2 force_pwrites fixed bin, /* Mod pages so written */ 8 211 2 fw_none fixed bin, /* Force write wrote none */ 8 212 2 force_updatevs fixed bin, /* Updatev's so forced */ 8 213 8 214 2 pf_unlock_ptl_time fixed bin (71), /* Time unlocking ptln page faults */ 8 215 2 pf_unlock_ptl_meterings fixed bin, 8 216 8 217 2 makeknown_activations fixed bin (35), /* activations at makeknown time */ 8 218 2 backup_activations fixed bin (35), /* activations for backup */ 8 219 2 metering_flags aligned, /* small chunks of misc. information */ 8 220 3 activate_activated bit (1) unal, /* ON => last call to activate entry actually activated something */ 8 221 3 pad bit (35) unal, 8 222 2 seg_fault_calls fixed bin (35), /* number calls to seg_fault for explicit activation */ 8 223 8 224 /* METERS FOR STACK TRUNCATION */ 8 225 8 226 2 (stk_truncate_should_didnt, /* counts */ 8 227 stk_truncate_should_did, 8 228 stk_truncate_shouldnt_didnt, 8 229 stk_truncate_shouldnt_did) fixed bin (35), 8 230 2 stk_pages_truncated fixed bin (35), 8 231 2 stk_pages_truncated_in_core fixed bin (35), 8 232 8 233 /* SUPPORT FOR PC SEGMOVES */ 8 234 8 235 2 segmove_lock aligned, 8 236 3 pid bit (36) aligned, 8 237 3 event bit (36) aligned, 8 238 3 notify bit (1) aligned, 8 239 2 segmove_io_limit fixed bin, /* max read aheads */ 8 240 2 segmove_found_synch fixed bin (35), /* cme.synch_held */ 8 241 2 segmove_synch_disappeared fixed bin (35), /* page$check_synch fixed */ 8 242 2 segmove_n_reads fixed bin (35), /* total IO's queued. */ 8 243 2 segmove_max_tries fixed bin (35), /* max times through the read loop */ 8 244 8 245 2 segmove_astep ptr unal, /* if non-null, addresses to be rescued from old_addr_astep */ 8 246 2 segmove_pvtx fixed bin, /* if segmove_astep nonnull, valid */ 8 247 2 segmove_vtocx fixed bin, /* ditto */ 8 248 2 segmove_old_addr_astep ptr unaligned, /* ditto */ 8 249 2 segmove_new_addr_astep ptr unaligned, /* if non-null, the addresses must be deposited. */ 8 250 8 251 2 mod_during_write fixed bin, /* times a page was modified while it was being written */ 8 252 2 zero_pages fixed bin, /* count of pages truncated because all zero */ 8 253 2 trace_sw aligned, /* tracing control flags */ 8 254 3 pad_trace bit (32) unaligned, 8 255 3 pc_trace_pf bit (1) unaligned, /* tracing for page faults, done, etc. */ 8 256 3 tty_trace bit (1) unaligned, 8 257 3 pc_trace bit (1) unaligned, /* flag used by page control primitives */ 8 258 3 sc_trace bit (1) unaligned, /* flag used by segment control primitives */ 8 259 2 new_pages fixed bin, /* newly created pages */ 8 260 2 ast_track bit (1) aligned, /* "1"b => keep SST name table */ 8 261 2 dirlock_writebehind fixed bin, /* =1 to flush modified dir pages in lock$unlock */ 8 262 2 write_limit fixed bin, /* Max # of outstanding writes by page control */ 8 263 2 crash_test_segmove bit (1) aligned, /* crash in mid-segmove */ 8 264 2 delayed_seg_state_chg fixed bin (35), /* count of times a process was delayed in affecting a seg state */ 8 265 2 audit_seg_state_chg fixed bin (35), /* count of times a process was audited for excessive seg state changes */ 8 266 2 seg_state_chg_delay fixed bin (52), /* total times processes were delayed for covert channels */ 8 267 2 seg_state_change_limit fixed bin, /* number of events over which we determine covert channel bandwidth */ 8 268 2 max_seg_state_change_bw fixed bin, /* maximum bps for covert channel before we delay */ 8 269 2 audit_seg_state_change_bw fixed bin, /* maximum bps for covert channel before we audit */ 8 270 2 seg_state_chg_operation bit (36) aligned, /* access_operation_ value for excessive_seg_state_chg */ 8 271 2 pad4 (126) bit (36) aligned; /* padding to 512 words (1000)8 */ 8 272 8 273 /* END INCLUDE FILE sst.incl.pl1 */ 921 922 9 1 /* START OF: azm_va_args.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 /* This is a structure for argument processing of virtual addresses (VAs) and its related arguments. 9 4* These related arguments can be a an offset modifier EXP which can be a positive or negative 9 5* octal number and a RANGE can be specified. Both EXP and RANGE are optional arguments. The VA 9 6* must always be specified. These three args are non-positional on the request line but there 9 7* is an implicit order among the three. The first non-control argument on the request line must be 9 8* a VA. The second non-control argument on the request line can be a EXP or a RANGE. If it is a 9 9* RANGE then an EXP cannot be specified. In other words, a EXP must follow a VA. 9 10**/ 9 11 9 12 /* Created: 22 MAY 84 by BLB */ 9 13 9 14 dcl 1 va_args aligned, 9 15 /* fully resolved segment number of the virtual address */ 9 16 2 segno fixed bin (18) aligned, 9 17 /* fully resolved offset of the virtual address */ 9 18 2 offset fixed bin(18) unaligned, 9 19 /* offset modifier (+N, -N) of the virtual address */ 9 20 2 offset_modifier fixed bin(18), 9 21 /* The range of the addr area specified */ 9 22 2 range fixed bin(18) unaligned, 9 23 2 va_switches unaligned, 9 24 3 valid_va bit (1) unaligned, /* on if valid virtual address */ 9 25 3 valid_modifier bit (1) unaligned, /* on if valid offset modifier */ 9 26 3 valid_range bit (1) unaligned, /* on if valid range */ 9 27 3 modifier_before_indirect bit(1) unaligned, /* on if the offset modifier is specified */ 9 28 /* before indirection eg. A|B+10,* */ 9 29 3 va_pad bit (32) unaligned, /* must be zero */ 9 30 2 va_position aligned, /* index into the argument list for: */ 9 31 3 va_idx fixed bin, /* virtual address */ 9 32 3 mod_idx fixed bin, /* the offset modifier index */ 9 33 3 range_idx fixed bin, /* the range argument index */ 9 34 2 resolved_va ptr, /* The resolved virtual address */ 9 35 2 ecode fixed bin(35), /* error code */ 9 36 2 error_msg char(80) var, /* error message */ 9 37 2 va_string char(256) var; /* The complete virtual address after parsing thru the args. */ 9 38 9 39 dcl 1 va based (va_args_ptr) like va_args; 9 40 dcl va_args_ptr ptr; 9 41 9 42 /* END OF: azm_va_args.incl.pl1 * * * * * * * * * * * * * * * * */ 923 924 10 1 /* BEGIN include file unpaged_page_tables.incl.pl1 */ 10 2 10 3 /* This include file describes the segments unpaged_page_tables and 10 4*int_unpaged_page_tables. These segments contain the page tables for 10 5*segments that are paged and wired, those segments previously called 10 6*unpaged. 10 7* 10 8*Written September 15, 1983 by Keith Loepere. */ 10 9 10 10 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 10 11 10 12 dcl upt_ptr ptr; 10 13 dcl 1 upt aligned based (upt_ptr), 10 14 2 sst_absloc fixed bin (26), /* for dump analyzers */ 10 15 2 sst_last_loc fixed bin (26), 10 16 2 upt_absloc fixed bin (26), 10 17 2 upt_last_loc fixed bin (26), 10 18 2 iupt_absloc fixed bin (26), 10 19 2 iupt_last_loc fixed bin (26), 10 20 10 21 2 current_length fixed bin, /* number of words currently used */ 10 22 2 max_length fixed bin, /* max number of words in memory allocated */ 10 23 2 first_entry like upt_entry; 10 24 10 25 dcl upt_entry_ptr ptr; 10 26 dcl 1 upt_entry aligned based (upt_entry_ptr), 10 27 2 size fixed bin, /* number of page table words allocated */ 10 28 2 segno fixed bin, /* of hardcore segment */ 10 29 2 ptws (0 refer (upt_entry.size)) bit (36) aligned; 10 30 10 31 /* END include file unpaged_page_tables.incl.pl1 */ 925 926 927 end azm_requests_2_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/12/88 1431.6 azm_requests_2_.pl1 >spec>install>1055>azm_requests_2_.pl1 907 1 09/22/83 1102.5 amu_definitions.incl.pl1 >ldd>include>amu_definitions.incl.pl1 909 2 11/20/84 0854.8 amu_hardcore_info.incl.pl1 >ldd>include>amu_hardcore_info.incl.pl1 911 3 11/20/84 0856.1 amu_info.incl.pl1 >ldd>include>amu_info.incl.pl1 913 4 01/30/85 1523.9 aste.incl.pl1 >ldd>include>aste.incl.pl1 915 5 11/20/84 0854.8 azm_info.incl.pl1 >ldd>include>azm_info.incl.pl1 917 6 09/14/76 0759.8 sdw.incl.pl1 >ldd>include>sdw.incl.pl1 919 7 05/03/78 1422.1 ptw.incl.pl1 >ldd>include>ptw.incl.pl1 921 8 01/30/85 1523.9 sst.incl.pl1 >ldd>include>sst.incl.pl1 923 9 11/20/84 0854.8 azm_va_args.incl.pl1 >ldd>include>azm_va_args.incl.pl1 925 10 07/11/84 0937.3 unpaged_page_tables.incl.pl1 >ldd>include>unpaged_page_tables.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Arg_expected parameter char packed unaligned dcl 851 set ref 847 855* FDUMP_PROCESS_TYPE constant fixed bin(17,0) initial dcl 3-47 ref 722 P_azm_info_ptr parameter pointer dcl 51 ref 208 345 371 429 439 451 461 473 481 544 575 615 631 693 733 786 814 867 P_sci_ptr parameter pointer dcl 51 ref 208 345 371 429 432 439 444 451 454 461 466 473 481 544 575 615 631 693 733 786 814 866 Ppos 001142 automatic pointer dcl 897 set ref 899* 900 901 SAVED_PROC_TYPE constant fixed bin(17,0) initial dcl 3-47 ref 726 a_pos parameter fixed bin(17,0) dcl 894 ref 892 901 abbrev_enabled 000700 automatic bit(1) dcl 697 set ref 707* 708 add based bit(24) level 2 in structure "sdw" packed packed unaligned dcl 6-5 in procedure "azm_requests_2_" ref 265 285 292 add based bit(18) level 2 in structure "ptw" packed packed unaligned dcl 7-5 in procedure "azm_requests_2_" ref 322 addr builtin function dcl 143 ref 225 252 499 644 752 899 addrel builtin function dcl 143 ref 261 261 274 274 293 301 306 311 316 319 333 333 530 af_sw 000100 automatic bit(1) dcl 58 set ref 266 277 298 323 335 338 525 531 835 880* 881 881* aip 4 based pointer level 2 dcl 5-3 set ref 568* 868 al1 parameter fixed bin(21,0) dcl 852 set ref 847 859* am_from_prds 000101 automatic bit(1) packed unaligned dcl 59 set ref 378* 385* 386* 420* amptw_pageno 000102 automatic fixed bin(17,0) dcl 60 set ref 380* 407* 415 418 420* amsdw_segno 000103 automatic fixed bin(17,0) dcl 61 set ref 380* 400* 418 420* amu_$current_deadproc 000010 constant entry external dcl 155 ref 726 amu_$definition_get_prn 000012 constant entry external dcl 156 ref 804 amu_$definition_set_prn 000014 constant entry external dcl 157 ref 779 amu_$do_translation_hunt_ptr 000016 constant entry external dcl 158 ref 258 amu_$fdump_mgr_cur_erf 000020 constant entry external dcl 159 ref 723 amu_$fdump_mpt_current_process 000022 constant entry external dcl 160 ref 724 amu_$get_name 000026 constant entry external dcl 162 ref 261 274 333 531 amu_$get_name_no_comp 000024 constant entry external dcl 161 ref 533 amu_$get_va_args 000030 constant entry external dcl 163 ref 233 508 656 amu_$get_va_args_given_start 000032 constant entry external dcl 164 ref 761 amu_$hardcore_info_set_cur_ptrs 000034 constant entry external dcl 165 ref 253 amu_$replace_trans 000036 constant entry external dcl 166 ref 608 amu_$resolve_virtual_addr 000040 constant entry external dcl 167 ref 599 amu_$search_seg 000042 constant entry external dcl 168 ref 687 amu_$terminate_translation 000044 constant entry external dcl 170 ref 565 amu_et_$no_va_specified 000116 external static fixed bin(35,0) dcl 197 ref 509 amu_info based structure level 1 dcl 3-3 amu_info_ptr 000716 automatic pointer dcl 3-45 set ref 233* 253* 258* 258 258 261* 270* 274* 326* 333* 420* 508* 531* 533* 555 556 563* 564 565* 568 599* 608* 624* 656* 687* 721 722 723* 724* 726 726* 761* 779* 797 798 798 804* 835* 839* 868* 888 ap1 parameter pointer dcl 852 set ref 847 859* arg based char packed unaligned dcl 136 set ref 243 245* 355* 385 386 387 387 388 393 398 400* 401* 405 407* 408* 518 520* 590* 591* 595* 597 669 745 771 773* 796 796 803 806* 831 832 833* 855* arg_positions based fixed bin(17,0) array dcl 896 ref 900 901 argl 000106 automatic fixed bin(21,0) dcl 63 set ref 232* 241* 243 245 245 353* 355 355 384* 385 386 387 387 388 393 398 399* 400 400 401 401 405 406* 407 407 408 408 507* 516* 518 520 520 589* 590 590 591 591 594* 595 595 597 652* 666* 668 669 744* 745 760* 769* 771 773 773 795* 796 796 803 806 806 830* 831 832 833 833 855 855 argno 000107 automatic fixed bin(17,0) dcl 64 set ref 240* 241* 242* 383* 384* 515* 516* 517* 588* 589* 593* 594* 661* 665* 665* 666* 667* 743* 744* 768* 769* 770* 794* 795* 829* 830* 855 858* 858 859* argp 000110 automatic pointer dcl 65 set ref 232* 233* 241* 243 245 353* 355 384* 385 386 387 387 388 393 398 399* 400 401 405 406* 407 408 507* 508* 516* 518 520 589* 590 591 594* 595 597 652* 656* 666* 669 744* 745 760* 761* 769* 771 773 795* 796 796 803 806 830* 831 832 833 855 aste based structure level 1 dcl 4-11 astep 000720 automatic pointer dcl 4-9 set ref 293* 294 astsize 33 based fixed bin(17,0) level 2 dcl 8-9 ref 293 atptw based structure level 1 dcl 7-35 axp 000104 automatic pointer initial dcl 62 set ref 62* 871* axstring 000112 automatic char(7) initial packed unaligned dcl 66 set ref 66* 872* azm_display_am_ 000046 constant entry external dcl 171 ref 420 azm_dump_mem_$mem_config 000050 constant entry external dcl 173 ref 624 azm_find_mem_box_ 000052 constant entry external dcl 174 ref 270 326 azm_info based structure level 1 dcl 5-3 azm_info_ptr 000722 automatic pointer dcl 5-17 set ref 568 867* 868 azm_verify_dump_ams_ 000054 constant entry external dcl 175 ref 835 azm_verify_dump_ams_$af 000056 constant entry external dcl 176 ref 839 baseptr builtin function dcl 143 ref 258 258 261 261 274 274 327 327 333 333 530 533 533 bd_sdw 000652 automatic fixed bin(24,0) dcl 213 set ref 286* 287 bound 1(01) based bit(14) level 2 packed packed unaligned dcl 6-5 ref 286 brief_sw 000114 automatic bit(1) initial packed unaligned dcl 67 set ref 67* 873* chain 6 based structure level 2 dcl 3-3 char builtin function dcl 143 ref 714 check_args 000115 automatic fixed bin(17,0) dcl 68 set ref 653* 654* 656* code 000116 automatic fixed bin(35,0) dcl 69 set ref 243* 244* 245* 258* 259 259* 270* 326* 327 327* 355* 357 357* 358* 359 359 359* 363* 364 364* 377* 400* 401 407* 408 420* 423 423* 490* 492* 493* 494 494* 518* 519* 520* 587* 590* 591 591* 595* 596 599* 600 600* 608* 609 609* 621* 624* 625 625* 662* 673* 674 677* 678 678 678 681* 682 682 682 687* 688 688* 771* 772* 773* 779* 781 781* 804* 805 805* 835* 839* 844 844* configp 000120 automatic pointer initial dcl 70 set ref 70* 871* convert builtin function dcl 143 ref 604 cur_erf 000122 automatic bit(1) initial packed unaligned dcl 71 set ref 71* 873* cv_oct_check_ 000060 constant entry external dcl 177 ref 400 407 595 definitions_info based structure level 1 unaligned dcl 1-4 definitions_info_ptr 32 based pointer level 2 dcl 3-3 ref 797 798 798 del_cur_erf 000123 automatic bit(1) initial packed unaligned dcl 72 set ref 72* 873* del_erf 000124 automatic bit(1) initial packed unaligned dcl 73 set ref 73* 873* df 0(33) based bit(1) level 2 in structure "sdw" packed packed unaligned dcl 6-5 in procedure "azm_requests_2_" ref 263 df 0(33) based bit(1) level 2 in structure "ptw" packed packed unaligned dcl 7-5 in procedure "azm_requests_2_" ref 321 dir_name 000125 automatic char(168) packed unaligned dcl 74 set ref 355* 358* 359 584* 590* 608* 609* dir_sw 000177 automatic bit(1) initial packed unaligned dcl 75 set ref 75* 873* divide builtin function dcl 143 ref 287 289 do_ptws 000200 automatic bit(1) packed unaligned dcl 76 set ref 379* 389* 395* 415 420* 820* 823* 832* 835* 839* do_sdws 000201 automatic bit(1) packed unaligned dcl 77 set ref 379* 390* 394* 418* 420* 820* 823* 831* 835* 839* dseg 17 based fixed bin(15,0) level 3 dcl 2-6 ref 258 258 dsegp 000202 automatic pointer initial dcl 78 set ref 78* 871* ecode 12 based fixed bin(35,0) level 2 dcl 9-39 set ref 226* 234 235* 501* 509 511 512* 646* 657 658* 754* 762 763* erfs_found 000204 automatic bit(1) initial packed unaligned dcl 79 set ref 79* 873* error_msg 13 based varying char(80) level 2 dcl 9-39 set ref 229* 234 235* 504* 511 512 512* 649* 657 658* 757* 762 763* error_table_$bad_arg 000130 external static fixed bin(35,0) dcl 202 set ref 244 401* 408* 519 772 833* error_table_$badopt 000120 external static fixed bin(35,0) dcl 198 set ref 243 412* 518 771 error_table_$inconsistent 000132 external static fixed bin(35,0) dcl 203 set ref 415* error_table_$noarg 000126 external static fixed bin(35,0) dcl 201 set ref 218* 350* 492 637* 739* 792* 855* error_table_$segknown 000124 external static fixed bin(35,0) dcl 200 ref 359 error_table_$too_many_args 000134 external static fixed bin(35,0) dcl 204 set ref 220* 351* 493 622* 639* 827* error_table_$wrong_no_of_args 000122 external static fixed bin(35,0) dcl 199 set ref 581* expand_pathname_ 000062 constant entry external dcl 178 ref 355 590 expand_ptr_sw 000205 automatic bit(1) initial packed unaligned dcl 80 set ref 80* 873* expand_sw 000206 automatic bit(1) initial packed unaligned dcl 81 set ref 81* 873* first 000207 automatic fixed bin(18,0) dcl 82 set ref 250* 265 270* 288 289 296* 326* 327 327 333 333 685* 687* 778* 779* first_erf 000210 automatic bit(1) initial packed unaligned dcl 83 set ref 83* 873* first_value_set 000211 automatic bit(1) initial packed unaligned dcl 84 set ref 84* 873* fixed builtin function dcl 143 ref 265 285 286 292 292 294 322 forward_search 000212 automatic bit(1) initial packed unaligned dcl 85 set ref 85* 873* frame_entry 000213 automatic bit(1) initial packed unaligned dcl 86 set ref 86* 873* hard_ptr_space 000214 automatic structure level 1 unaligned dcl 87 set ref 252 hardcore_cur based structure level 1 unaligned dcl 2-40 hardcore_cur_ptr 000714 automatic pointer dcl 2-38 set ref 252* 253* 254 256 284 292 hardcore_info based structure level 1 dcl 2-6 hardcore_info_ptr 16 based pointer level 2 dcl 3-3 ref 258 258 hbound builtin function dcl 143 ref 797 900 hcs_$initiate 000064 constant entry external dcl 179 ref 358 hdr_printed 000232 automatic bit(1) initial packed unaligned dcl 88 set ref 88* 873* i 001140 automatic fixed bin(17,0) dcl 895 in procedure "va_arg" set ref 900* 901* i 000234 automatic fixed bin(17,0) dcl 90 in procedure "azm_requests_2_" set ref 534* 535 535 797* 798 798* id_str 000653 automatic varying char(80) dcl 696 set ref 702* 703* 703 705* 705 708* 708 713* 713 714* 714 715* 715 718* 718 719* ignore 000233 automatic fixed bin(17,0) dcl 89 set ref 267* 274* 296* 323* 333* 526* 536* index builtin function dcl 143 ref 261 534 603 init_ptr_names 000702 automatic char(4) initial array packed unaligned dcl 1-12 set ref 1-12* 1-12* 1-12* 1-12* 1-12* 1-12* 1-12* 1-12* 1-12* 1-12* ioa_ 000066 constant entry external dcl 180 ref 338 525 531 719 798 806 ioa_$rsnnl 000070 constant entry external dcl 180 ref 267 274 296 323 333 526 536 iupt_absloc 4 based fixed bin(26,0) level 2 dcl 10-13 ref 309 310 iupt_last_loc 5 based fixed bin(26,0) level 2 dcl 10-13 ref 309 last 000235 automatic fixed bin(17,0) initial dcl 91 set ref 91* 878* last_erf 000236 automatic bit(1) initial packed unaligned dcl 92 set ref 92* 873* list_erfs 000237 automatic bit(1) initial packed unaligned dcl 93 set ref 93* 873* ll 000240 automatic fixed bin(17,0) initial dcl 94 set ref 94* 878* ln 000241 automatic fixed bin(17,0) initial dcl 95 set ref 95* 878* ltrim builtin function dcl 143 ref 714 match_str 000242 automatic varying char(256) initial dcl 96 set ref 96* 872* mod builtin function dcl 143 ref 288 name 177 based char(4) array level 3 packed packed unaligned dcl 1-4 set ref 798* namep 000344 automatic pointer dcl 98 set ref 530* 531* 531* nargs 000343 automatic fixed bin(17,0) dcl 97 set ref 218 220 233* 240 350 351 383 492 493 508* 515 581 622 637 639 653 654 665 739 761* 768 792 794 822 827 855 880* 881* next 7 based pointer level 3 packed packed unaligned dcl 3-3 ref 560 561 next_erf 000346 automatic bit(1) initial packed unaligned dcl 99 set ref 99* 873* null builtin function dcl 143 ref 62 70 78 120 230 254 291 505 555 560 564 650 707 707 721 758 869 871 888 offset 000347 automatic fixed bin(18,0) dcl 100 in procedure "azm_requests_2_" set ref 599* offset 1 based fixed bin(18,0) level 2 in structure "va" packed packed unaligned dcl 9-39 in procedure "azm_requests_2_" set ref 226* 250 261 261 274 274 501* 525* 530 646* 685 754* 778 offset_modifier 2 based fixed bin(18,0) level 2 dcl 9-39 set ref 226* 501* 646* 754* only_full_ams 000350 automatic bit(1) packed unaligned dcl 101 set ref 381* 387* 420* page 000351 automatic fixed bin(24,0) dcl 102 set ref 289* 295 301 319 319 333* pointer builtin function dcl 143 ref 258 258 327 327 pointers based structure level 2 dcl 2-6 prev_erf 000352 automatic bit(1) initial packed unaligned dcl 103 set ref 103* 873* print_all_trans 000353 automatic bit(1) initial packed unaligned dcl 104 set ref 104* 873* ptp 000726 automatic pointer dcl 7-3 set ref 292* 293 301* 301 306* 311* 316* 319* 319 321 322 ptr builtin function dcl 143 ref 292 pts 40 based fixed bin(17,0) array level 2 in structure "sst" dcl 8-9 in procedure "azm_requests_2_" ref 294 pts 000354 automatic fixed bin(24,0) dcl 105 in procedure "azm_requests_2_" set ref 287* 294* 295 ptsi 13(28) based bit(2) level 2 packed packed unaligned dcl 4-11 ref 294 ptw based structure level 1 dcl 7-5 ptwbase 25 based fixed bin(24,0) level 2 dcl 8-9 ref 292 range 000355 automatic fixed bin(18,0) dcl 106 in procedure "azm_requests_2_" set ref 686* 687* range 3 based fixed bin(18,0) level 2 in structure "va" packed packed unaligned dcl 9-39 in procedure "azm_requests_2_" set ref 500* 645* 686 753* range_idx 7 based fixed bin(17,0) level 3 dcl 9-39 set ref 238* 766* range_value_set 000356 automatic bit(1) initial packed unaligned dcl 107 set ref 107* 873* raw_syserr_data 000357 automatic bit(1) initial packed unaligned dcl 108 set ref 108* 873* real_address 000360 automatic fixed bin(35,0) dcl 109 set ref 265* 267* 270* 322* 323* 326* 327* relative_offset 000651 automatic fixed bin(26,0) dcl 212 set ref 305* 306 310* 311 315* 316 resolved_va 10 based pointer level 2 dcl 9-39 set ref 230* 505* 650* 758* ret_str 000361 automatic varying char(168) initial dcl 110 set ref 110* 872* reverse builtin function dcl 143 ref 535 535 rs based varying char dcl 137 set ref 323* 526* 536* 839* 841* rtrim builtin function dcl 143 ref 359 359 536 536 702 705 rv_lth 000434 automatic fixed bin(21,0) dcl 111 set ref 323 526 536 687* 839 841 870* 880* rv_ptr 000436 automatic pointer dcl 112 set ref 323 526 536 687* 839 841 869* 880* sci_ptr 000440 automatic pointer dcl 113 set ref 216* 218* 220* 232* 233* 235* 241* 245* 254* 259* 278* 327* 350* 351* 353* 357* 359* 363* 364* 375* 384* 401* 408* 412* 415* 420* 423* 432* 433* 444* 445* 454* 455* 466* 467* 489* 494* 507* 508* 509* 512* 516* 520* 569* 579* 581* 589* 591* 594* 599* 600* 609* 619* 622* 625* 635* 637* 639* 652* 656* 658* 666* 668* 674* 682* 688* 702* 705* 707* 711* 737* 739* 744* 760* 761* 763* 769* 773* 781* 790* 792* 795* 805* 818* 827* 830* 833* 844* 855* 859* 866* 880* 881* sdw based structure level 1 dcl 6-5 sdw_add 000650 automatic fixed bin(26,0) dcl 211 set ref 285* 304 304 305 309 309 310 315 sdwp 000724 automatic pointer dcl 6-3 set ref 258* 263 263 265 285 286 292 search builtin function dcl 143 ref 673 677 681 search_string 000443 automatic char(12) packed unaligned dcl 115 set ref 663* 669* 673 674* 677 678 678 681 682 682 687* segln 000442 automatic fixed bin(35,0) initial dcl 114 set ref 114* 878* segname 000446 automatic char(32) packed unaligned dcl 116 set ref 585* 597* 599* 600* 604 605 segno based fixed bin(18,0) level 2 in structure "va" dcl 9-39 in procedure "azm_requests_2_" set ref 226* 249 258 258 261 261 274 274 274* 501* 525* 526* 530 533 533 646* 684 754* 777 segno 000456 automatic fixed bin(17,0) dcl 117 in procedure "azm_requests_2_" set ref 249* 270* 296* 326* 327 327 333 333 333* 595* 599* 604 608* 684* 687* 777* 779* segno 16 based structure level 2 in structure "hardcore_info" dcl 2-6 in procedure "azm_requests_2_" segno_sw 000457 automatic bit(1) packed unaligned dcl 118 set ref 476* 484* 494* 509* 524 slog_code 000460 automatic fixed bin(17,0) initial dcl 119 set ref 119* 879* slt based structure level 3 dcl 2-6 sst based structure level 1 dcl 8-9 sst_absloc based fixed bin(26,0) level 2 dcl 10-13 ref 315 sstp 000730 automatic pointer dcl 8-7 in procedure "azm_requests_2_" set ref 256* 292 293 294 316 sstp 6 based pointer level 2 in structure "hardcore_cur" dcl 2-40 in procedure "azm_requests_2_" ref 254 256 292 ssu_$abort_line 000072 constant entry external dcl 184 ref 216 218 220 235 245 254 259 278 327 350 351 357 359 364 375 401 408 412 415 423 433 445 455 467 489 494 509 512 520 579 581 591 600 609 619 622 625 635 637 639 658 668 674 678 678 678 682 688 737 739 763 773 781 790 792 805 818 827 833 844 855 ssu_$abort_subsystem 000074 constant entry external dcl 185 ref 569 ssu_$add_request_table 000076 constant entry external dcl 186 ref 363 ssu_$arg_count 000100 constant entry external dcl 187 ref 881 ssu_$arg_ptr 000102 constant entry external dcl 188 ref 232 241 353 384 507 516 589 594 652 666 744 760 769 795 830 859 ssu_$get_abbrev_info 000104 constant entry external dcl 189 ref 707 ssu_$get_invocation_count 000106 constant entry external dcl 190 ref 711 ssu_$get_subsystem_name 000110 constant entry external dcl 191 ref 702 ssu_$get_subsystem_version 000112 constant entry external dcl 192 ref 705 ssu_$return_arg 000114 constant entry external dcl 193 ref 880 start_configp 000462 automatic pointer initial dcl 120 set ref 120* 871* struct_sw 000464 automatic bit(1) initial packed unaligned dcl 121 set ref 121* 873* substr builtin function dcl 143 ref 243 518 535 678 678 682 682 771 subsys_level 000701 automatic fixed bin(17,0) dcl 698 set ref 711* 712 714 t_amu_info_ptr 000466 automatic pointer dcl 122 set ref 556* 560 561* 561 563 t_pr_name 000470 automatic char(4) packed unaligned dcl 123 set ref 745* 779* 781* 803* 804* t_ptrs 177 based structure array level 2 packed packed unaligned dcl 1-4 set ref 797 t_seg_name 000471 automatic char(32) packed unaligned dcl 124 set ref 355* 358* 359 586* 590* 603 604* 604 605* 608* 609* temp_ptr 000502 automatic pointer dcl 125 set ref 358* 363* 804* 806* temp_str 000504 automatic varying char(24) initial dcl 126 set ref 126* 872* tname 000513 automatic varying char(256) dcl 127 set ref 533* 534 535* 535 536 536 type 3 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-3 ref 722 726 unpaged 1(19) based bit(1) level 2 packed packed unaligned dcl 6-5 ref 263 upt based structure level 1 dcl 10-13 upt_absloc 2 based fixed bin(26,0) level 2 dcl 10-13 ref 304 305 upt_entry based structure level 1 dcl 10-26 upt_last_loc 3 based fixed bin(26,0) level 2 dcl 10-13 ref 304 upt_ptr 001076 automatic pointer dcl 10-12 set ref 284* 291 304 304 305 306 309 309 310 311 315 uptp 14 based pointer level 2 dcl 2-40 ref 284 va based structure level 1 unaligned dcl 9-39 va_args 000732 automatic structure level 1 dcl 9-14 set ref 225 499 644 752 va_args_ptr 001074 automatic pointer dcl 9-40 set ref 225* 226 226 226 226 226 228 229 229 230 233* 234 234 235 235 238 249 250 258 258 261 261 261 261 274 274 274 274 274 499* 500 501 501 501 501 501 503 504 504 505 508* 509 509 509 511 511 512 512 512 512 525 525 525 526 530 530 533 533 644* 645 646 646 646 646 646 648 649 649 650 656* 657 657 658 658 684 685 686 688 752* 753 754 754 754 754 754 756 757 757 758 761* 762 762 763 763 766 777 778 899 va_position 5 based structure level 2 dcl 9-39 set ref 226* 501* 646* 754* 899 va_string 40 based varying char(256) level 2 dcl 9-39 set ref 229* 504* 509 509* 512* 525* 649* 688* 757* va_switches 3(19) based structure level 2 packed packed unaligned dcl 9-39 set ref 228* 503* 648* 756* val 200 based pointer array level 3 packed packed unaligned dcl 1-4 set ref 798* vs 000614 automatic varying char(99) dcl 128 set ref 251* 267* 274* 278* 296* 333* 338* why_erf 000646 automatic bit(1) initial packed unaligned dcl 129 set ref 129* 873* word 000647 automatic fixed bin(24,0) dcl 130 set ref 288* 322 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AMU_INFO_VERSION internal static char(8) initial packed unaligned dcl 3-57 AMU_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 3-56 AMU_INFO_VERSION_2 internal static char(8) initial packed unaligned dcl 3-58 AZM_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 5-19 AZM_INFO_VERSION_2 internal static char(8) initial packed unaligned dcl 5-20 FDUMP_TYPE internal static fixed bin(17,0) initial dcl 3-47 INDIRECT_TYPE internal static fixed bin(17,0) initial dcl 3-47 NETWORK_FDUMP_TYPE internal static fixed bin(17,0) initial dcl 3-47 NETWORK_ONLINE_TYPE internal static fixed bin(17,0) initial dcl 3-47 ONLINE_PROCESS_TYPE internal static fixed bin(17,0) initial dcl 3-47 ONLINE_TYPE internal static fixed bin(17,0) initial dcl 3-47 PDIR_SUFFIX internal static char(4) initial packed unaligned dcl 3-60 amu_area based area(1024) dcl 3-43 asta based bit(432) array dcl 4-86 aste_part based structure level 1 dcl 4-89 atptwa based structure array level 1 dcl 7-40 mptw based structure level 1 dcl 7-27 mptwa based structure array level 1 dcl 7-31 ptwa based structure array level 1 dcl 7-23 ptwa_bits based bit(36) array dcl 7-25 sdwa based structure array level 1 dcl 6-24 seg_aste based structure level 1 dcl 4-96 sst_seg$ external static fixed bin(17,0) dcl 8-6 t_ptr_indx automatic fixed bin(17,0) dcl 1-11 upt_entry_ptr automatic pointer dcl 10-25 NAMES DECLARED BY EXPLICIT CONTEXT. ABSADR_ABT_AF 001756 constant label dcl 278 ref 298 335 ABSADR_OOSB 002065 constant label dcl 296 ref 261 ABS_ADDR_RET 002416 constant label dcl 338 ref 281 299 SEGMENT_COMMON 004021 constant label dcl 486 ref 477 azm_requests_2_ 001010 constant entry external dcl 23 azm_requests_2_$absolute_address 001023 constant entry external dcl 208 azm_requests_2_$add_request_table 002443 constant entry external dcl 345 azm_requests_2_$associative_memory 003053 constant entry external dcl 371 azm_requests_2_$clock 003567 constant entry external dcl 429 azm_requests_2_$delete_request_table 003631 constant entry external dcl 439 azm_requests_2_$error_code 003673 constant entry external dcl 451 azm_requests_2_$list_request_table 003735 constant entry external dcl 461 azm_requests_2_$name 003777 constant entry external dcl 473 azm_requests_2_$number 004011 constant entry external dcl 481 azm_requests_2_$quit 005013 constant entry external dcl 544 azm_requests_2_$replace 005100 constant entry external dcl 575 azm_requests_2_$scus 005564 constant entry external dcl 615 azm_requests_2_$search 005721 constant entry external dcl 631 azm_requests_2_$self_identify 006574 constant entry external dcl 693 azm_requests_2_$set 007134 constant entry external dcl 733 azm_requests_2_$value 007613 constant entry external dcl 786 azm_requests_2_$verify_am 010111 constant entry external dcl 814 get_next_arg 010416 constant entry internal dcl 847 ref 399 406 set_up 010514 constant entry internal dcl 863 ref 215 348 374 486 551 578 618 634 700 736 789 817 trans_selected 010635 constant entry internal dcl 885 ref 216 375 489 579 619 635 718 737 790 818 va_arg 010655 constant entry internal dcl 892 ref 242 517 667 770 verify_ams 010304 constant label dcl 835 ref 824 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12772 13130 11623 13002 Length 13746 11623 136 601 1147 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME azm_requests_2_ 808 external procedure is an external procedure. get_next_arg internal procedure shares stack frame of external procedure azm_requests_2_. set_up internal procedure shares stack frame of external procedure azm_requests_2_. trans_selected internal procedure shares stack frame of external procedure azm_requests_2_. va_arg internal procedure shares stack frame of external procedure azm_requests_2_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME azm_requests_2_ 000100 af_sw azm_requests_2_ 000101 am_from_prds azm_requests_2_ 000102 amptw_pageno azm_requests_2_ 000103 amsdw_segno azm_requests_2_ 000104 axp azm_requests_2_ 000106 argl azm_requests_2_ 000107 argno azm_requests_2_ 000110 argp azm_requests_2_ 000112 axstring azm_requests_2_ 000114 brief_sw azm_requests_2_ 000115 check_args azm_requests_2_ 000116 code azm_requests_2_ 000120 configp azm_requests_2_ 000122 cur_erf azm_requests_2_ 000123 del_cur_erf azm_requests_2_ 000124 del_erf azm_requests_2_ 000125 dir_name azm_requests_2_ 000177 dir_sw azm_requests_2_ 000200 do_ptws azm_requests_2_ 000201 do_sdws azm_requests_2_ 000202 dsegp azm_requests_2_ 000204 erfs_found azm_requests_2_ 000205 expand_ptr_sw azm_requests_2_ 000206 expand_sw azm_requests_2_ 000207 first azm_requests_2_ 000210 first_erf azm_requests_2_ 000211 first_value_set azm_requests_2_ 000212 forward_search azm_requests_2_ 000213 frame_entry azm_requests_2_ 000214 hard_ptr_space azm_requests_2_ 000232 hdr_printed azm_requests_2_ 000233 ignore azm_requests_2_ 000234 i azm_requests_2_ 000235 last azm_requests_2_ 000236 last_erf azm_requests_2_ 000237 list_erfs azm_requests_2_ 000240 ll azm_requests_2_ 000241 ln azm_requests_2_ 000242 match_str azm_requests_2_ 000343 nargs azm_requests_2_ 000344 namep azm_requests_2_ 000346 next_erf azm_requests_2_ 000347 offset azm_requests_2_ 000350 only_full_ams azm_requests_2_ 000351 page azm_requests_2_ 000352 prev_erf azm_requests_2_ 000353 print_all_trans azm_requests_2_ 000354 pts azm_requests_2_ 000355 range azm_requests_2_ 000356 range_value_set azm_requests_2_ 000357 raw_syserr_data azm_requests_2_ 000360 real_address azm_requests_2_ 000361 ret_str azm_requests_2_ 000434 rv_lth azm_requests_2_ 000436 rv_ptr azm_requests_2_ 000440 sci_ptr azm_requests_2_ 000442 segln azm_requests_2_ 000443 search_string azm_requests_2_ 000446 segname azm_requests_2_ 000456 segno azm_requests_2_ 000457 segno_sw azm_requests_2_ 000460 slog_code azm_requests_2_ 000462 start_configp azm_requests_2_ 000464 struct_sw azm_requests_2_ 000466 t_amu_info_ptr azm_requests_2_ 000470 t_pr_name azm_requests_2_ 000471 t_seg_name azm_requests_2_ 000502 temp_ptr azm_requests_2_ 000504 temp_str azm_requests_2_ 000513 tname azm_requests_2_ 000614 vs azm_requests_2_ 000646 why_erf azm_requests_2_ 000647 word azm_requests_2_ 000650 sdw_add azm_requests_2_ 000651 relative_offset azm_requests_2_ 000652 bd_sdw azm_requests_2_ 000653 id_str azm_requests_2_ 000700 abbrev_enabled azm_requests_2_ 000701 subsys_level azm_requests_2_ 000702 init_ptr_names azm_requests_2_ 000714 hardcore_cur_ptr azm_requests_2_ 000716 amu_info_ptr azm_requests_2_ 000720 astep azm_requests_2_ 000722 azm_info_ptr azm_requests_2_ 000724 sdwp azm_requests_2_ 000726 ptp azm_requests_2_ 000730 sstp azm_requests_2_ 000732 va_args azm_requests_2_ 001074 va_args_ptr azm_requests_2_ 001076 upt_ptr azm_requests_2_ 001140 i va_arg 001142 Ppos va_arg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac mdfx1 shorten_stack ext_entry reverse_cs set_chars_eis index_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. amu_$current_deadproc amu_$definition_get_prn amu_$definition_set_prn amu_$do_translation_hunt_ptr amu_$fdump_mgr_cur_erf amu_$fdump_mpt_current_process amu_$get_name amu_$get_name_no_comp amu_$get_va_args amu_$get_va_args_given_start amu_$hardcore_info_set_cur_ptrs amu_$replace_trans amu_$resolve_virtual_addr amu_$search_seg amu_$terminate_translation azm_display_am_ azm_dump_mem_$mem_config azm_find_mem_box_ azm_verify_dump_ams_ azm_verify_dump_ams_$af cv_oct_check_ expand_pathname_ hcs_$initiate ioa_ ioa_$rsnnl ssu_$abort_line ssu_$abort_subsystem ssu_$add_request_table ssu_$arg_count ssu_$arg_ptr ssu_$get_abbrev_info ssu_$get_invocation_count ssu_$get_subsystem_name ssu_$get_subsystem_version ssu_$return_arg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. amu_et_$no_va_specified error_table_$bad_arg error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$segknown error_table_$too_many_args error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 62 000663 66 000665 67 000667 70 000670 71 000672 72 000673 73 000674 75 000675 78 000676 79 000677 80 000700 81 000701 83 000702 84 000703 85 000704 86 000705 88 000706 91 000707 92 000710 93 000711 94 000712 95 000713 96 000714 99 000715 103 000716 104 000717 107 000720 108 000721 110 000722 114 000723 119 000724 120 000726 121 000730 126 000731 129 000732 1 12 000733 23 001007 25 001016 208 001017 215 001031 216 001032 218 001067 220 001115 225 001144 226 001146 228 001156 229 001171 230 001173 232 001175 233 001214 234 001233 235 001243 238 001272 240 001274 241 001303 242 001320 243 001325 244 001336 245 001341 247 001372 249 001374 250 001376 251 001402 252 001403 253 001405 254 001416 256 001450 258 001453 259 001503 261 001531 263 001575 265 001605 266 001611 267 001614 268 001643 270 001644 271 001663 274 001664 277 001752 278 001756 281 002006 284 002007 285 002012 286 002017 287 002024 288 002026 289 002032 291 002035 292 002041 293 002053 294 002056 295 002063 296 002065 298 002120 299 002123 301 002124 302 002130 304 002131 305 002136 306 002140 307 002143 309 002144 310 002150 311 002152 312 002155 315 002156 316 002160 319 002163 321 002170 322 002173 323 002200 326 002237 327 002256 330 002322 333 002323 335 002412 338 002416 341 002440 345 002441 348 002451 350 002452 351 002500 353 002527 355 002546 357 002576 358 002627 359 002672 363 003002 364 003022 366 003050 371 003051 374 003061 375 003062 377 003117 378 003120 379 003121 380 003124 381 003127 383 003130 384 003137 385 003154 386 003165 387 003174 388 003207 389 003213 390 003215 391 003217 393 003220 394 003224 395 003226 396 003230 398 003231 399 003235 400 003242 401 003267 403 003324 405 003325 406 003331 407 003336 408 003363 410 003420 412 003421 413 003445 415 003447 418 003503 420 003512 423 003541 425 003564 429 003565 432 003575 433 003601 435 003626 439 003627 444 003637 445 003643 447 003670 451 003671 454 003701 455 003705 457 003732 461 003733 466 003743 467 003747 469 003774 473 003775 476 004005 477 004006 481 004007 484 004017 486 004021 489 004022 490 004057 492 004060 493 004066 494 004073 499 004125 500 004127 501 004133 503 004143 504 004156 505 004160 507 004162 508 004201 509 004220 511 004273 512 004303 515 004354 516 004363 517 004400 518 004405 519 004416 520 004421 522 004452 524 004454 525 004457 526 004514 527 004547 530 004550 531 004561 532 004631 533 004632 534 004672 535 004705 536 004732 537 005007 540 005010 544 005011 551 005021 555 005022 556 005026 560 005030 561 005034 562 005036 563 005037 564 005040 565 005044 566 005053 568 005054 569 005057 571 005075 575 005076 578 005106 579 005107 581 005144 584 005173 585 005176 586 005201 587 005204 588 005205 589 005207 590 005224 591 005254 593 005311 594 005313 595 005330 596 005355 597 005357 599 005364 600 005420 603 005451 604 005462 605 005501 608 005504 609 005523 611 005561 615 005562 618 005572 619 005573 621 005630 622 005631 624 005662 625 005673 627 005716 631 005717 634 005727 635 005730 637 005765 639 006015 644 006043 645 006045 646 006051 648 006061 649 006074 650 006076 652 006100 653 006117 654 006125 656 006127 657 006146 658 006156 661 006205 662 006207 663 006210 665 006213 666 006223 667 006240 668 006245 669 006275 671 006302 673 006304 674 006316 677 006350 678 006362 681 006425 682 006437 684 006501 685 006503 686 006507 687 006512 688 006537 689 006571 693 006572 700 006602 702 006603 703 006634 705 006643 707 006700 708 006720 711 006735 712 006751 713 006754 714 006766 715 007022 718 007031 719 007050 721 007067 722 007073 723 007101 724 007110 725 007117 726 007120 729 007131 733 007132 736 007142 737 007143 739 007200 743 007227 744 007231 745 007246 752 007253 753 007255 754 007261 756 007271 757 007304 758 007306 760 007310 761 007327 762 007352 763 007362 766 007411 768 007413 769 007423 770 007440 771 007445 772 007456 773 007461 775 007512 777 007514 778 007516 779 007522 781 007553 782 007610 786 007611 789 007621 790 007622 792 007657 794 007705 795 007715 796 007732 797 007744 798 007751 799 010000 800 010002 803 010003 804 010006 805 010032 806 010056 807 010104 809 010106 814 010107 817 010117 818 010120 820 010153 822 010156 823 010160 824 010164 827 010165 829 010213 830 010215 831 010232 832 010243 833 010252 835 010304 839 010325 841 010361 844 010372 845 010415 847 010416 855 010427 858 010474 859 010475 861 010513 863 010514 866 010515 867 010521 868 010524 869 010526 870 010530 871 010531 872 010536 873 010543 878 010571 879 010575 880 010577 881 010616 883 010634 885 010635 888 010637 889 010650 892 010655 899 010657 900 010662 901 010667 902 010702 904 010704 ----------------------------------------------------------- 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