COMPILATION LISTING OF SEGMENT write_notify_test Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/06/87 1315.8 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-05-18,Lippard), approve(87-02-09,MCR7616), 12* audit(87-06-03,Farley), install(87-08-06,MR12.1-1064): 13* Modified to use hcs_$set_procs_required instead of 14* phcs_$set_procs_required. 15* END HISTORY COMMENTS */ 16 17 18 /* format: style4 */ 19 write_notify_test: proc; 20 21 /* Originally coded by R. Fakoury 08/83 */ 22 /* Modified Feb 1984 by Paul Farley to: 23* * add error handling 24* * if called as active_function, return "true" if error occurs 25* * allow tracing of writes and reads 26* * each process will get its own data segment in the pdir 27* * limit testing to a pair of CPUs, one of which must be a DPS8 28* * Modified April 1984 by Paul Farley to: 29* * use current working dir for data segs 30* * use seperate data seg for each seperate invokation 31* * use scs$controller_data from ring_0 to define what SCU bad address 32* * is from. 33* * use dseg and sst_seg to find where page is located before reading and 34* * use this to meter SCU usage. 35* * Modified May 1984 by Paul Farley to: 36* * remove tracing code 37* * accept more than a pair of CPUs and do the pairing internally 38* * limit to 1 l68, but many 8/70's which will be internally paired 39* * Modified MAY 1984 by R. A. Fawcett to: 40* * Use the scs$processor_data instead of the config_deck 41* * Run only on DPS8M cpus if more than one selected. 42* * Meter page addresses 43* * add the -brief and -long arguments 44* * add "some" diagnostics 45* * require hphcs_ access 46* * add the -word_increment argument and change default to 52 47* * change the starting offset in the page at half the loop_count argument 48* * eleminate the use of history regesters 49* * 50* * Modified OCT 1984 R. A. Fawcett to make active_function work 51* * 52* * Modified November 1984 by M. Pandolf to include hc_lock. 53**/ 54 55 /* Labels */ 56 57 dcl NEXT_READ_LABEL label; 58 59 /* Conditions */ 60 dcl (cleanup, linkage_error) condition; 61 62 /* Static */ 63 64 dcl error_count fixed bin int static; 65 dcl start_of_sst fixed bin (24) aligned int static init (0); 66 67 68 /* Automatic */ 69 70 dcl orig_cpus bit (8) aligned; /* returned value of CPUs required */ 71 dcl default_flag bit (1) init ("0"b); /* ON => process has default CPUs required */ 72 dcl total_mem fixed bin; 73 dcl major_loop_error fixed bin; 74 dcl sub_loop_error fixed bin; 75 dcl word_inc fixed bin init (52); 76 dcl foo_len fixed bin (21); 77 dcl dseg_ptr ptr init (null); 78 dcl (argp, retP) ptr; 79 dcl (argl, retL) fixed bin (21); 80 dcl AF_sw bit (1) init ("0"b); 81 dcl (long_sw, same_bad) bit (1) init ("0"b); 82 dcl (arg_no, cpu, i, j, loop, times, n_args, rd, total_l68, total_dps8, 83 wrt, cpus_to_test, deact_loop_cnt, pair_idx, 84 cpu_st_ind) fixed bin init (0); 85 dcl maj_loop_max fixed bin init (10); 86 dcl sub_loop_max fixed bin init (12); 87 dcl maj_max_err_count fixed bin; 88 dcl sub_max_err_count fixed bin; 89 dcl bit_bucket bit (36); 90 dcl code fixed bin (35) init (0); 91 dcl (HAD_ERROR, phcs_ok, meter_sw, testing_sw, need_page_meter, need_revert_cpu) bit (1) init ("0"b); 92 dcl check_cpu_string char (8) varying aligned init (""); 93 dcl (dps8_cpu, l68_cpu, test_cpu_string) char (8) init (""); 94 95 dcl pattern bit (36) aligned; 96 dcl (data_page, meter_idx) fixed bin; 97 dcl mem_meters (0:8) fixed bin (71) aligned; 98 dcl 1 data_sdw aligned like sdw; 99 dcl 1 data_ptw aligned like ptw; 100 dcl 1 last_ptw aligned like ptw; 101 dcl 1 mem_data (0:7) aligned like scs$controller_data; 102 dcl 1 processor_data (0:7) aligned like scs$processor_data; 103 dcl DPS8M fixed bin (2) unsigned init (1) static options (constant); 104 dcl who_ami char (18) init ("write_notify_test") static options (constant); 105 dcl 1 pair_sets (4), 106 2 pair char (2), 107 2 set (2), 108 3 cpu_bits bit (8) aligned, 109 3 is_dps8 bit (1) aligned; 110 dcl number_of_pairs fixed bin; 111 dcl inc_start fixed bin (17) init (0); 112 dcl inc_time fixed bin (17); 113 dcl high_wc fixed bin; 114 dcl acc_var entry variable; 115 116 dcl wct_offset fixed bin; 117 dcl pages_used (0:total_mem) fixed bin (35) based (pages_ptr); 118 dcl pages_ptr ptr; 119 dcl error_data_ptr ptr init (null); 120 dcl (address_lines, page_add_lines) bit (36); 121 dcl (bad_cpu, bad_scu) fixed bin; 122 dcl pat_idx fixed bin (17) init (1); 123 dcl BAD_MEM (0:4) char (1) init (" ", " ", " ", " ", " "); 124 dcl BAD_CPU (0:8) char (1) init (" ", " ", " ", " ", " ", " ", " ", " ", " "); 125 dcl 1 my_apte aligned like apte; /* APTE for this process */ 126 dcl r0_aptep ptr; /* ptr to APTE for this process */ 127 dcl 1 my_wce like wct_entry; 128 dcl real_time_wc bit (1); 129 /* Based */ 130 131 dcl ret char (retL) based (retP) var; 132 dcl arg char (argl) based (argp); 133 dcl 1 error_data (error_count) based (error_data_ptr), 134 2 CPU1 char (1), 135 2 CPU2 char (1), 136 2 ERRCPU char (1), 137 2 MEM char (1), 138 2 ADD fixed bin (35); 139 140 141 dcl data_seg (0:1023) bit (36) based (dseg_ptr) aligned; 142 143 dcl 1 akst aligned like kst_attributes; 144 145 /* Constants */ 146 147 dcl CPU_TAGS char (16) int static options (constant) init ("ABCDEFGHabcdefgh"); 148 dcl (hbound, null, addr, baseno, clock, fixed, bin, divide, 149 index, mod, substr, unspec, verify, size, 150 rel, search, translate) builtin; 151 dcl tags (0:7) char (1) static options (constant) init 152 ("a", "b", "c", "d", "e", "f", "g", "h"); 153 154 dcl 1 PATTERN (2) static options (constant), 155 2 data bit (36) aligned init ("252525252525"b3, "525252525252"b3), 156 2 next_idx fixed bin (17) init (2, 1); 157 158 159 /* External entries */ 160 161 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 162 dcl complain entry variable options (variable); 163 dcl (com_err_, active_fnc_err_) entry () options (variable); 164 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 165 dcl cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 166 dcl delete_$ptr entry (ptr, bit (36) aligned, char (*), fixed bin (35)); 167 dcl get_pdir_ entry () returns (char (168)); 168 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 169 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 170 dcl hcs_$set_procs_required entry (bit (8) aligned, fixed bin (35)); 171 dcl hphcs_$set_process_work_class entry (bit (36) aligned, fixed bin, fixed bin, fixed bin (35)); 172 dcl ioa_ entry () options (variable); 173 dcl ioa_$ioa_switch entry () options (variable); 174 dcl ioa_$nnl entry () options (variable); 175 dcl ioa_$rsnnl entry () options (variable); 176 dcl iox_$error_output ptr ext static; 177 dcl phcs_$deactivate entry (ptr, fixed bin (35)); 178 dcl phcs_$set_kst_attributes entry (fixed bin (35), ptr, fixed bin (35)); 179 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 180 dcl ring_zero_peek_ entry (ptr, ptr, fixed bin (19), fixed bin (35)); 181 dcl ring_zero_peek_$by_name entry (char (*), fixed bin (18), ptr, fixed bin (19), fixed bin (35)); 182 dcl ring_zero_peek_$by_definition entry (char (*), char (*), fixed bin (18), ptr, fixed bin (19), fixed bin (35)); 183 dcl unique_chars_ entry (bit (*)) returns (char (15)); 184 /* External static */ 185 186 dcl error_table_$not_act_fnc fixed bin (35) ext static; 187 dcl error_table_$namedup fixed bin (35) ext static; 188 dcl error_table_$segknown fixed bin (35) ext static; 189 190 191 192 193 error_data_ptr, pages_ptr, tcmp, dseg_ptr = null (); 194 call cu_$af_return_arg (n_args, retP, retL, code); 195 if code = 0 then do; 196 AF_sw = "1"b; 197 complain = active_fnc_err_; 198 end; 199 else if code = error_table_$not_act_fnc then do; 200 AF_sw = "0"b; 201 complain = com_err_; 202 end; 203 else do; 204 call com_err_ (code, who_ami); 205 return; 206 end; 207 208 209 on cleanup begin; 210 goto RETURN; 211 end; 212 213 214 /* check the access for the process must have phcs_ and hphcs_ */ 215 /* hphcs_ is to restrict command usage and if ever put in ring_0 */ 216 /* then no user interface will need changed */ 217 218 on linkage_error begin; 219 call complain (0, who_ami, 220 "User does not have access for ^[hphcs_^;phcs_^].", 221 phcs_ok); 222 goto NO_ACC_RET; 223 end; 224 225 acc_var = phcs_$set_kst_attributes; 226 phcs_ok = "1"b; 227 acc_var = hphcs_$set_process_work_class; 228 revert linkage_error; 229 230 /* find APTE */ 231 call ring_zero_peek_$by_definition ("pds", "apt_ptr", 0, addr (r0_aptep), 2, code); 232 if code ^= 0 233 then return; 234 235 /* copy APTE */ 236 call ring_zero_peek_ (r0_aptep, addr (my_apte), size (apte), code); 237 if code ^= 0 238 then return; 239 240 /* find out what cpu(s) we are set for and remember */ 241 default_flag = my_apte.flags.default_procs_required; 242 orig_cpus = my_apte.procs_required; 243 244 /* see if we are in a realtime workclass */ 245 if ^AF_sw then call find_real_time_class; 246 247 /* get data from scs for processors and memories */ 248 call ring_zero_peek_$by_definition ("scs", "processor_data", 0, 249 addr (processor_data), size (processor_data), code); 250 if code ^= 0 then do; 251 call complain 252 (code, who_ami, "getting scs$processor_data."); 253 return; 254 end; 255 call ring_zero_peek_$by_definition ("scs", "controller_data", 0, 256 addr (mem_data), size (mem_data), code); 257 if code ^= 0 then do; 258 call complain (code, who_ami, "getting scs$controller_data."); 259 return; 260 end; 261 262 263 /* calculate the maj_loop number 1% of total mem pages */ 264 total_mem = 0; 265 do i = 0 to 3; 266 if mem_data (i).info.online = "1"b then 267 total_mem = mem_data (i).size + total_mem; 268 end; 269 maj_loop_max = divide ((total_mem * 1), 100, 17); 270 if maj_loop_max = 0 then maj_loop_max = 5; 271 272 273 /* parse the args */ 274 do arg_no = 1 to n_args; 275 call cu_$arg_ptr (arg_no, argp, argl, code); 276 if substr (arg, 1, 1) ^= "-" then do; 277 if verify (arg, CPU_TAGS) ^= 0 then do; 278 call complain (0, who_ami, "Invalid CPU Tag(s) ^a", arg); 279 goto NO_ACC_RET; 280 end; 281 check_cpu_string = translate (arg, "abcdefgh", "ABCDEFGH"); 282 283 /* loop through processor_data */ 284 do i = 0 to hbound (processor_data, 1); 285 cpu_st_ind = search (check_cpu_string, tags (i)); 286 if cpu_st_ind ^= 0 then do; 287 if processor_data (i).online = "1"b then do; 288 if processor_data (i).cpu_type = DPS8M 289 then do; 290 total_dps8 = total_dps8 + 1; 291 substr (dps8_cpu, (total_dps8), 1) = 292 tags (i); 293 end; 294 else do; 295 if total_l68 = 0 then do; 296 /* only need one */ 297 total_l68 = 1; 298 substr (l68_cpu, (total_l68), 1) = 299 tags (i); 300 end; 301 end; 302 end; 303 else do; 304 call complain (0, who_ami, 305 "CPU ^a is currently OFF", tags (i)); 306 end; 307 end; 308 end; 309 if total_dps8 = 0 then do; 310 call complain (0, who_ami, "At least one CPU must be a DPS8."); 311 goto NO_ACC_RET; 312 end; 313 end; 314 315 else if arg = "-long" | arg = "-lg" then do; 316 if AF_sw then goto bad_af_arg; 317 long_sw = "1"b; 318 end; 319 else if arg = "-deactivate_count" | arg = "-dc" then do; 320 arg_no = arg_no + 1; 321 call cu_$arg_ptr (arg_no, argp, argl, code); 322 if code ^= 0 then do; 323 call complain (code, who_ami, "Getting major loop count."); 324 goto NO_ACC_RET; 325 end; 326 maj_loop_max = cv_dec_check_ (arg, code); 327 if maj_loop_max <= 0 | code ^= 0 then do; 328 call complain (0, who_ami, "Invalid major loop count."); 329 goto NO_ACC_RET; 330 end; 331 end; 332 333 else if arg = "-loop_count" | arg = "-lc" then do; 334 arg_no = arg_no + 1; 335 call cu_$arg_ptr (arg_no, argp, argl, code); 336 if code ^= 0 then do; 337 call complain (code, who_ami, "Getting sub loop count."); 338 goto NO_ACC_RET; 339 end; 340 sub_loop_max = cv_dec_check_ (arg, code); 341 if sub_loop_max <= 0 | code ^= 0 then do; 342 call complain (0, who_ami, "Invalid sub loop count."); 343 goto NO_ACC_RET; 344 end; 345 end; 346 347 else if arg = "-brief" | arg = "-bf" then long_sw = "0"b; 348 349 else if arg = "-word_increment" | arg = "-wi" then do; 350 arg_no = arg_no + 1; 351 call cu_$arg_ptr (arg_no, argp, argl, code); 352 if code ^= 0 then do; 353 call complain (code, who_ami, 354 "Getting word_increment."); 355 goto NO_ACC_RET; 356 end; 357 word_inc = cv_dec_check_ (arg, code); 358 if code = 0 then do; 359 if word_inc <= 0 | word_inc > 1023 then do; 360 bad_word_inc: 361 call complain (0, who_ami, 362 "Invalid word_increment."); 363 goto NO_ACC_RET; 364 end; 365 end; 366 else goto bad_word_inc; 367 end; 368 else if arg = "-meter" then do; 369 if AF_sw then goto bad_af_arg; 370 meter_sw = "1"b; 371 end; 372 else do; 373 call complain (0, who_ami, "Invalid argument ""^a"".", arg); 374 goto NO_ACC_RET; 375 bad_af_arg: 376 call complain (0, who_ami, "^a invalid for active function", arg); 377 goto NO_ACC_RET; 378 end; 379 end; 380 381 382 if total_dps8 = 0 then do; /* caller wants auto cpu selection */ 383 do i = 0 to hbound (processor_data, 1); 384 if processor_data (i).online = "1"b then do; 385 if processor_data (i).cpu_type = DPS8M then do; 386 total_dps8 = total_dps8 + 1; 387 substr (dps8_cpu, (total_dps8), 1) = tags (i); 388 end; 389 else do; 390 if total_l68 = 0 then do; 391 /* only need one */ 392 total_l68 = 1; 393 substr (l68_cpu, (total_l68), 1) = tags (i); 394 end; 395 end; 396 end; 397 end; 398 end; 399 if total_dps8 = 0 then do; 400 call complain (0, who_ami, "There is no dps8 on-line"); 401 goto NO_ACC_RET; 402 end; 403 else if total_dps8 > 1 then do; 404 test_cpu_string = dps8_cpu; 405 cpus_to_test = total_dps8; 406 total_l68 = 0; 407 end; 408 else if total_dps8 = 1 then do; 409 if total_l68 ^= 0 then do; 410 test_cpu_string = substr (dps8_cpu, 1, 1) || 411 substr (l68_cpu, 1, 1); 412 l68_cpu = substr (l68_cpu, 1, 1); 413 cpus_to_test = 2; 414 end; 415 else do; 416 cpus_to_test = total_dps8; 417 test_cpu_string = dps8_cpu; 418 end; 419 end; 420 421 if cpus_to_test = 1 then do; 422 call complain (0, who_ami, "Must have at least two CPUs defined to run this test."); 423 goto NO_ACC_RET; 424 end; 425 426 427 /* create the data segment in the process dir */ 428 make_ds: call hcs_$make_seg ((get_pdir_ ()), 429 "wnt_data_seg." || (unique_chars_ ("0"b)), "", 430 10, dseg_ptr, code); 431 if code = error_table_$namedup | code = error_table_$segknown 432 then code = 0; 433 if code ^= 0 then do; 434 call complain (code, who_ami); 435 goto NO_ACC_RET; 436 end; 437 438 439 /* find ptw base */ 440 if start_of_sst = 0 then do; 441 allocate sst set (sstp); 442 call ring_zero_peek_$by_name ("sst_seg", 443 0, sstp, size (sst), code); 444 if code ^= 0 then do; 445 call complain (code, who_ami, "getting sst header."); 446 return; 447 end; 448 start_of_sst = bin (sst.ptwbase, 24); 449 free sst; 450 end; 451 452 /* get a segment for page metering */ 453 call get_temp_segment_ (who_ami, pages_ptr, code); 454 455 /* init the meter data */ 456 call reset_meters; 457 458 459 /* get a segment for the error data of analizing maybe */ 460 call get_temp_segment_ (who_ami, error_data_ptr, code); 461 462 /* set up KST so we can deactivate the data_seg */ 463 unspec (akst) = "0"b; 464 akst.set.explicit_deactivate_ok, 465 akst.value.explicit_deactivate_ok = "1"b; 466 call phcs_$set_kst_attributes (fixed (baseno (dseg_ptr), 17), 467 addr (akst), code); /* now set permissions */ 468 if code ^= 0 then do; 469 call complain (code, who_ami, "set kst attributes."); 470 return; 471 end; 472 error_count = 0; 473 474 475 /* Tell the user what cpus we have decided to use if not called as an active function */ 476 if ^AF_sw then do; 477 call ioa_$nnl ("^3xUsing ^d DPS8M CPU^[S^] (^a)", total_dps8, 478 (total_dps8 > 1), 479 translate (dps8_cpu, "ABCDEFGH", "abcdefgh")); 480 if total_l68 ^= 0 then call ioa_ ("^xand^xL68 CPU (^a).", 481 translate (l68_cpu, "ABCDEFGH", "abcdefgh")); 482 else call ioa_ ("."); 483 end; 484 485 486 /* divid the test_cpu_string into pairs if an odd number use the first over again */ 487 pair_idx = 1; 488 number_of_pairs = divide (cpus_to_test, 2, 17); 489 do i = 1 to number_of_pairs; 490 pair_sets (i).pair = substr (test_cpu_string, pair_idx, 2); 491 do cpu = 1 to 2; 492 pair_sets (i).set (cpu).cpu_bits = "0"b; 493 substr (pair_sets (i).set (cpu).cpu_bits, 494 mod (index (CPU_TAGS, substr (pair_sets (i).pair, cpu, 1)) - 1, 8) + 1, 1) = "1"b; 495 if index (dps8_cpu, substr (pair_sets (i).pair, cpu, 1)) ^= 0 496 then pair_sets (i).set (cpu).is_dps8 = "1"b; 497 else pair_sets (i).set (cpu).is_dps8 = "0"b; 498 end; 499 pair_idx = pair_idx + 2; 500 end; 501 if mod (cpus_to_test, 2) = 1 then do; 502 number_of_pairs = number_of_pairs + 1; 503 i = number_of_pairs; 504 pair_sets (i).pair = 505 substr (test_cpu_string, 1, 1) || 506 substr (test_cpu_string, pair_idx, 1); 507 do cpu = 1 to 2; 508 pair_sets (i).set (cpu).cpu_bits = "0"b; 509 substr (pair_sets (i).set (cpu).cpu_bits, 510 mod (index (CPU_TAGS, substr (pair_sets (i).pair, cpu, 1)) - 1, 8) + 1, 1) = "1"b; 511 if index (dps8_cpu, substr (pair_sets (i).pair, cpu, 1)) ^= 0 512 then pair_sets (i).set (cpu).is_dps8 = "1"b; 513 else pair_sets (i).set (cpu).is_dps8 = "0"b; 514 end; 515 end; 516 517 518 519 maj_max_err_count = (divide (maj_loop_max, 4, 17)) + 2; 520 sub_max_err_count = (divide (sub_loop_max, 4, 17)) + 2; 521 inc_time = divide (sub_loop_max, 2, 17); 522 error_count = 0; 523 524 525 /**** ************************************ ****/ 526 /* The test starts here */ 527 /**** ************************************ ****/ 528 529 530 /* outer most loop is for by pairs of cps */ 531 do pair_idx = 1 to number_of_pairs; 532 major_loop_error = 0; 533 page_add_lines = "0"b; 534 address_lines = "0"b; 535 536 /* deactivation loop try for new real mem address */ 537 do times = 1 to maj_loop_max; 538 call deactivate_the_seg; 539 testing_sw = "1"b; 540 call set_cpu; 541 inc_start = 0; 542 pat_idx = 1; 543 call write; 544 sub_loop_error = 0; 545 546 /* subloop used to insure we get the correct types of hits */ 547 do loop = 1 to sub_loop_max; 548 call set_cpu; 549 call read; 550 if loop = inc_time then inc_start = inc_start + 4; 551 call write; 552 end; 553 sub_loop_err_exit: 554 end; 555 maj_loop_err_exit: 556 557 /* print the meters for this cpu pair */ 558 if meter_sw then call print_meters; 559 end; 560 561 562 RETURN: /* test over */ 563 564 /* get running on the the original cpu set */ 565 if need_revert_cpu then do; 566 if default_flag then call hcs_$set_procs_required ("0"b, code); /* reset to default */ 567 else call hcs_$set_procs_required (orig_cpus, code); /* reset to default */ 568 need_revert_cpu = "0"b; 569 end; 570 /* if called as active function just tell if ok or not ok */ 571 if testing_sw then do; 572 /* if we got started and no errors tell the user we had none */ 573 if ^HAD_ERROR then do; 574 if AF_sw then ret = "passed"; 575 else call ioa_ ("^a: No errors detected.", who_ami); 576 577 /* if we saw some erros try to fine out what could be wrong */ 578 end; 579 else do; 580 bad_cpu = 0; 581 bad_scu = 0; 582 if long_sw then 583 call ioa_ ("^/Error on cpu in mem address using pair"); 584 do i = 1 to error_count; 585 if long_sw then 586 call ioa_ ("^10x^a^6x^a^2x^8o^8x^a^a", 587 error_data (i).ERRCPU, error_data (i).MEM, 588 error_data (i).ADD, 589 error_data (i).CPU1, 590 error_data (i).CPU2); 591 same_bad = "0"b; 592 do j = 0 to bad_cpu; 593 if BAD_CPU (j) = error_data (i).ERRCPU 594 then same_bad = "1"b; 595 end; 596 if ^same_bad then do; 597 bad_cpu = bad_cpu + 1; 598 BAD_CPU (bad_cpu) = error_data (i).ERRCPU; 599 end; 600 same_bad = "0"b; 601 do j = 0 to bad_scu; 602 if BAD_MEM (j) = error_data (i).MEM 603 then same_bad = "1"b; 604 end; 605 if ^same_bad then do; 606 bad_scu = bad_scu + 1; 607 BAD_MEM (bad_scu) = error_data (i).MEM; 608 end; 609 end; 610 if error_count > 0 then do; 611 if ^long_sw & ^AF_sw then do; 612 call ioa_ ("^/Error summary"); 613 call ioa_$nnl 614 ("^/errors detected in cpu^[s^]^x", 615 (bad_cpu >= 2)); 616 do j = 1 to bad_cpu; 617 call ioa_$nnl ("^a^x", BAD_CPU (j)); 618 end; 619 call ioa_ (" "); 620 call ioa_$nnl ("errors detected in scu^[s^]^x", 621 (bad_scu >= 2)); 622 do j = 1 to bad_scu; 623 call ioa_$nnl ("^a^x", BAD_MEM (j)); 624 end; 625 call ioa_ (" "); 626 end; 627 if (bad_cpu >= 2) & (bad_scu >= 2) & AF_sw 628 then do; 629 ret = "failed"; 630 do j = 1 to bad_cpu; 631 call ioa_$rsnnl ("^a^xCPU_^a", ret, foo_len, 632 ret, BAD_CPU (j)); 633 end; 634 do j = 1 to bad_cpu; 635 call ioa_$rsnnl ("^a^xSCU_^a", ret, foo_len, 636 ret, BAD_MEM (j)); 637 end; 638 end; 639 else if (bad_cpu = 1) & (bad_scu = 1) & AF_sw then 640 call ioa_$rsnnl ("failed CPU_^a SCU_^a",ret, 641 foo_len,BAD_CPU(1),BAD_MEM(1)); 642 else if (bad_cpu >= 2) & (bad_scu = 1) then do; 643 if AF_sw then call ioa_$rsnnl ("failed SCU_^a", 644 ret, foo_len, BAD_MEM (1)); 645 else call ioa_ ("^/^-MEM ^a is defective", 646 BAD_MEM (1)); 647 end; 648 649 else if (bad_scu >= 2) & (bad_cpu = 1) then do; 650 if AF_sw then call ioa_$rsnnl ("failed CPU_^a", 651 ret,foo_len, BAD_CPU (1)); 652 else call ioa_ ("^/^-CPU ^a is defective", 653 BAD_CPU (1)); 654 end; 655 656 end; 657 end; 658 end; 659 660 661 662 NO_ACC_RET: 663 if dseg_ptr ^= null then 664 call delete_$ptr (dseg_ptr, "440000000000"b3, "", code); 665 666 if need_revert_cpu then do; 667 if default_flag then call hcs_$set_procs_required ("0"b, code); /* reset to default */ 668 else call hcs_$set_procs_required (orig_cpus, code); /* reset to default */ 669 end; 670 if error_data_ptr ^= null () then do; 671 call release_temp_segment_ (who_ami, error_data_ptr, code); 672 error_data_ptr = null (); 673 end; 674 if tcmp ^= null () then do; 675 call release_temp_segment_ (who_ami, tcmp, code); 676 tcmp = null (); 677 end; 678 if pages_ptr ^= null () then do; 679 call release_temp_segment_ (who_ami, pages_ptr, code); 680 pages_ptr = null (); 681 end; 682 return; 683 684 685 686 687 688 count_error: proc; 689 690 /* count_error counts the errors and decides whem to move to next loop */ 691 /* display is called from here */ 692 693 major_loop_error = major_loop_error + 1; 694 sub_loop_error = sub_loop_error + 1; 695 error_count = error_count + 1; 696 HAD_ERROR = "1"b; 697 call display_fault_data; 698 if sub_loop_error >= sub_max_err_count 699 then do; 700 pat_idx = PATTERN (pat_idx).next_idx; 701 goto sub_loop_err_exit; 702 end; 703 if major_loop_error >= maj_max_err_count 704 then goto maj_loop_err_exit; 705 goto NEXT_READ_LABEL; 706 707 end count_error; 708 709 710 deactivate_the_seg: 711 proc; 712 713 /* This proc deactivates the data segment in hopes that when */ 714 /* reactivated the pages will be in a differen area of memory */ 715 call phcs_$deactivate (dseg_ptr, code); 716 if code ^= 0 then do; 717 call complain (code, "phcs_$deactivate"); 718 return; 719 end; 720 need_page_meter = "1"b; 721 end deactivate_the_seg; 722 723 find_real_time_class: 724 proc; 725 726 /* This proc check to see if the user is in a realtime workclas. If not */ 727 /* display warning message and if long mode display parameters for each */ 728 /* realtime workclass. */ 729 730 dcl Q1 float bin; 731 dcl Q2 float bin; 732 dcl R1 float bin; 733 dcl R2 float bin; 734 735 wct_offset = fixed (my_apte.wct_index, 17); 736 call ring_zero_peek_$by_name ("tc_data", (wct_offset), 737 addr (my_wce), (size (my_wce)), code); 738 if code ^= 0 then do; 739 call complain (0, who_ami, "getting work_class_info"); 740 goto RETURN; 741 end; 742 if my_wce.realtime = 0 then do; 743 call ioa_$ioa_switch (iox_$error_output, 744 "Warning: User not in a realtime workclass."); 745 real_time_wc = "0"b; 746 end; 747 else real_time_wc = "1"b; 748 if real_time_wc | ^long_sw then return; 749 call get_temp_segment_ (who_ami, tcmp, code); 750 wct_offset = fixed (rel (addr (tcm.work_class_table)), 17); 751 call ring_zero_peek_$by_name ("tc_data", (wct_offset), 752 addr (tcm.work_class_table), (size (wct_entry) * 17), code); 753 if code ^= 0 then do; 754 call complain (0, who_ami, "getting work_class_info"); 755 goto RETURN; 756 end; 757 call ioa_ ("WC^4xIRESP^2xIQUANT^4xRESP^3xQUANT"); 758 high_wc = 0; 759 do i = 0 to 16; 760 if wcte (i).flags.defined then do; 761 if high_wc = 0 then high_wc = i; 762 if wcte (i).realtime ^= 0 then do; 763 R1 = 1e-6 * wcte (i).resp1; 764 R2 = 1e-6 * wcte (i).resp2; 765 Q1 = 1e-6 * wcte (i).quantum1; 766 Q2 = 1e-6 * wcte (i).quantum2; 767 call ioa_$ioa_switch (iox_$error_output, 768 "^2d ^8.2f^8.2f^8.2f^8.2f", i, R1, Q1, R2, Q2); 769 end; 770 end; 771 end; 772 call release_temp_segment_ (who_ami, tcmp, code); 773 tcmp = null (); 774 end find_real_time_class; 775 776 777 /* The three procs wrie, read, set_cpu make up the heart of the test */ 778 779 write: proc; 780 781 /* Write the CACHE */ 782 783 pattern = PATTERN (pat_idx).data; 784 do wrt = inc_start to hbound (data_seg, 1) by word_inc; 785 786 /* make sure it is in cache */ 787 bit_bucket = data_seg (wrt); 788 data_seg (wrt) = pattern; 789 end; 790 end write; 791 792 read: proc; 793 794 /* Read what was written by the other cpu */ 795 dcl P_null ptr init (null); 796 797 NEXT_READ_LABEL = next_loc; /* used to continue after error */ 798 if pair_sets (pair_idx).set (cpu).is_dps8 = "1"b then do; 799 /* waste of time on L68! */ 800 801 if need_page_meter then call meter_the_page; 802 do rd = inc_start to hbound (data_seg, 1) by word_inc; 803 page_add_lines = page_add_lines | unspec (rd); 804 if data_seg (rd) ^= pattern then do; 805 call count_error; 806 end; 807 next_loc: 808 end; 809 end; 810 pat_idx = PATTERN (pat_idx).next_idx; 811 end read; 812 813 set_cpu: proc; 814 815 /* switch to the other cpu */ 816 if cpu = 2 then cpu = 1; 817 else cpu = 2; 818 call hcs_$set_procs_required (pair_sets (pair_idx).set (cpu).cpu_bits, code); 819 if code ^= 0 then do; 820 call complain (code, who_ami); 821 goto RETURN; 822 end; 823 need_revert_cpu = "1"b; 824 end set_cpu; 825 826 827 meter_the_page: proc; 828 call page_peek; 829 deact_loop_cnt = deact_loop_cnt + 1; 830 if data_ptw.add_type ^= "1000"b then do; /* lost race, page gone! */ 831 mem_meters (8) = mem_meters (8) + 1; /* count losses */ 832 return; 833 end; 834 last_ptw = data_ptw, by name; 835 data_page = divide (bin (data_ptw.add, 18), 16, 17, 0); 836 pages_used (data_page) = pages_used (data_page) + 1; 837 do meter_idx = 0 to 7; 838 if (data_page >= mem_data (meter_idx).base) then do; 839 if data_page < (mem_data (meter_idx).base + mem_data (meter_idx).size) then do; 840 mem_meters (meter_idx) = mem_meters (meter_idx) + 1; 841 need_page_meter = "0"b; 842 address_lines = address_lines | unspec (data_page); 843 return; 844 end; 845 end; 846 end; 847 call complain (0, who_ami, "Page frame ^oo, not found within scs$controller_data definition.", data_page); 848 return; 849 end meter_the_page; 850 851 page_peek: 852 proc; 853 call ring_zero_peek_$by_name ("dseg", (2 * bin (baseno (dseg_ptr), 17)), addr (data_sdw), 1, code); 854 if code ^= 0 then do; 855 call complain (code, "getting sdw from dseg. Resetting metering switch."); 856 meter_sw = "0"b; 857 return; 858 end; 859 call ring_zero_peek_$by_name ("sst_seg", (bin (data_sdw.add, 24) - start_of_sst), addr (data_ptw), 1, code); 860 if code ^= 0 then do; 861 call complain (code, "getting ptw from sst_seg. Resetting metering switch."); 862 meter_sw = "0"b; 863 return; 864 end; 865 end page_peek; 866 867 reset_meters: 868 proc; 869 if pages_ptr ^= null () then pages_used (*) = 0; 870 mem_meters (*) = 0; 871 deact_loop_cnt = 0; 872 end reset_meters; 873 874 print_meters: 875 proc; 876 if AF_sw then return; 877 if unspec (mem_meters (*)) ^= "0"b then do; 878 call ioa_ ("^2/Meters for cpu pair ^a", 879 pair_sets (pair_idx).pair); 880 total_mem = 0; 881 call ioa_$nnl ("^23x"); 882 do i = 0 to 3; 883 if mem_data (i).info.online = "1"b then do; 884 total_mem = mem_data (i).size + total_mem; 885 call ioa_$nnl ("^4x^a^5x", substr ("ABCD", i + 1, 1)); 886 end; 887 end; 888 call ioa_$nnl ("^/^23x"); 889 do i = 0 to 3; 890 if mem_data (i).info.online = "1"b then do; 891 call ioa_$nnl ("^2x^5d.^2x", mem_data (i).size); 892 end; 893 end; 894 call ioa_$nnl ("^/^2xMemory size relation:"); 895 do i = 0 to 3; 896 if mem_data (i).info.online = "1"b then 897 call ioa_$nnl ("^7.2f%^2x", 898 divide (mem_data (i).size * 100, total_mem, 17, 7)); 899 end; 900 call ioa_$nnl ("^/^2xMemory usage meters: "); 901 do i = 0 to 3; 902 if mem_data (i).info.online = "1"b then do; 903 if mem_meters (i) ^= 0 then do; 904 call ioa_$nnl ("^7.2f%^2x", 905 divide (mem_meters (i) * 100, 906 deact_loop_cnt, 17, 7)); 907 end; 908 else call ioa_$nnl ("^7.2f%^2x", (0)); 909 end; 910 end; 911 if mem_meters (8) ^= 0 then 912 call ioa_$nnl ("^/ losses=^6.2f%", 913 divide (mem_meters (8) * 100, deact_loop_cnt, 17, 6)); 914 call ioa_ (""); 915 end; 916 if pages_ptr ^= null () then do; 917 call print_page_meters; 918 end; 919 call reset_meters; 920 end print_meters; 921 922 print_page_meters: 923 proc; 924 address_lines = "0"b; 925 do i = 0 to 3; 926 if mem_data (i).info.online = "1"b then do; 927 if long_sw then do; 928 call ioa_ ("^/MEM ^a from ^o to ^o", 929 substr ("ABCD", i + 1, 1), mem_data (i).base, 930 (mem_data (i).base + (mem_data (i).size - 1))); 931 call ioa_ ("^-^xframe^3xused^4xadd bits 0->13"); 932 end; 933 do j = mem_data (i).base to (mem_data (i).base + (mem_data (i).size - 1)); 934 if pages_used (j) ^= 0 then do; 935 address_lines = unspec (j) | address_lines; 936 if long_sw then call ioa_ ("^-^6o^2x^4d^5x^14b", 937 j, pages_used (j), 938 substr (unspec (j), 23, 14)); 939 end; 940 end; 941 end; 942 end; 943 call ioa_ ("^/address lines checked^6x0 -> 13^4x^3x14 -> 23^/^23x^14b^3x^10b", 944 substr (address_lines, 23), 945 substr (page_add_lines, 27)); 946 address_lines, page_add_lines = "0"b; 947 end print_page_meters; 948 949 display_fault_data: 950 proc; 951 952 dcl bad_addr bit (24); 953 dcl bad_mem char (1); 954 dcl (bad_addr_bin, mem_offset) fixed bin (35); 955 dcl the_date_time char (24); 956 dcl date_time_ entry (fixed bin (71), char (*)); 957 dcl temp_mem_add fixed bin (35); 958 dcl win bit (1); 959 dcl no_luck_reason char (32); 960 call date_time_ (clock (), the_date_time); 961 win = "0"b; 962 call page_peek; 963 if data_ptw.add_type ^= "1000"b then do; 964 call ioa_$rsnnl 965 ("page has been evicted", no_luck_reason, foo_len); 966 goto no_luck; 967 end; 968 if last_ptw.add ^= data_ptw.add then do; 969 call ioa_$rsnnl 970 ("page address has changed", no_luck_reason, foo_len); 971 goto no_luck; 972 end; 973 temp_mem_add = 0; 974 substr (unspec (temp_mem_add), 13, 24) = 975 substr (unspec (data_page), 23, 14) || 976 substr (unspec (rd), 27, 10); 977 bad_mem = substr ("ABCD", meter_idx + 1, 1); 978 bad_addr = substr (unspec (temp_mem_add), 13, 24); 979 win = "1"b; 980 error_data (error_count).CPU1 = 981 translate (substr (pair_sets (pair_idx).pair, 1, 1), 982 "ABCDEFGH", "abcdefgh"); 983 error_data (error_count).CPU2 = 984 translate (substr (pair_sets (pair_idx).pair, 2, 1), 985 "ABCDEFGH", "abcdefgh"); 986 error_data (error_count).ERRCPU = 987 translate (substr (pair_sets (pair_idx).pair, cpu, 1), 988 "ABCDEFGH", "abcdefgh"); 989 error_data (error_count).MEM = bad_mem; 990 error_data (error_count).ADD = temp_mem_add; 991 bad_addr_bin = bin (bad_addr, 35); 992 mem_offset = (bad_addr_bin - (mem_data (meter_idx).base * 1024)); 993 if long_sw then do; 994 call ioa_ 995 ("^/**^2xERROR at ^24a on CPU ^a in SCU ^a ADDRESS ^8.3b^ **", 996 the_date_time, 997 error_data (error_count).ERRCPU, bad_mem, bad_addr); 998 call ioa_ 999 ("^5xOffset in data_seg = ^oo, deact_cnt = ^d, loop_cnt = ^d, cpu pair = ^a", 1000 rd, times, loop, pair_sets (pair_idx).pair); 1001 end; 1002 return; 1003 no_luck: 1004 if AF_sw then return; 1005 call ioa_ ("^/**^2xERROR at ^24a on CPU ^a^2x**", 1006 the_date_time, substr (pair_sets (pair_idx).pair, cpu, 1)); 1007 call ioa_ ("**^2xHowever ^32a^4x**", no_luck_reason); 1008 return; 1009 end display_fault_data; 1010 1011 1 1 /* BEGIN INCLUDE FILE kst_attributes.incl.pl1 WRITTEN 03/26/76 by R. Bratt */ 1 2 1 3 dcl kstap ptr; 1 4 1 5 dcl 1 kst_attributes aligned based (kstap), 1 6 2 set unaligned, /* SPECIFIES WHICH ATTRIBUTES TO SET */ 1 7 3 (allow_write, 1 8 tms, 1 9 tus, 1 10 tpd, 1 11 audit, 1 12 explicit_deactivate_ok) bit (1), 1 13 3 pad bit (39), 1 14 2 value unaligned, /* SPECIFIES THE VALUE OF THE ATTRIBUTES TO BE SET */ 1 15 3 (allow_write, /* allow write permission in sdw */ 1 16 tms, /* don't update dtm */ 1 17 tus, /* don't update dtu */ 1 18 tpd, /* don't put on PD */ 1 19 audit, /* audit */ 1 20 explicit_deactivate_ok) bit (1), /* allow demand deactivation */ 1 21 3 pad bit (30); 1 22 1 23 /* END INCLUDE FILE kst_attributes.incl.pl1 */ 1012 2 1 /* BEGIN INCLUDE FILE ... apte.incl.pl1 */ 2 2 2 3 /* Modified 1984-11-11 by E. Swenson for IPC event channel validation. */ 2 4 2 5 dcl aptep pointer; 2 6 2 7 dcl 1 apte based (aptep) aligned, /* APT entry declaration for an active (known) process */ 2 8 2 thread unaligned, /* List thread */ 2 9 3 fp bit (18), /* Forward pointer */ 2 10 3 bp bit (18), /* Backward pointer */ 2 11 2 flags unaligned, /* Flags and miscellaneous */ 2 12 3 mbz bit (1), /* This bit must be zero (sentinel bit) */ 2 13 3 wakeup_waiting bit (1), /* ON if process has received wakeup */ 2 14 3 stop_pending bit (1), /* ON if process has received stop connect */ 2 15 3 pre_empted bit (1), /* ON if process is being pre-empted by get_processor */ 2 16 3 hproc bit (1), /* ON if process is hardcore process */ 2 17 3 loaded bit (1), /* ON if required per-process pages are in memory and wired */ 2 18 3 eligible bit (1), /* ON if process is eligible */ 2 19 3 idle bit (1), /* ON if this is an idle process */ 2 20 3 interaction bit (1), /* ON if process has interacted recently */ 2 21 3 pre_empt_pending bit (1), /* ON if process has received pre-empt connect */ 2 22 3 default_procs_required bit (1), /* ON if apte.procs_required is system default */ 2 23 3 realtime_burst bit (1), /* ON if next eligibility is realtime */ 2 24 3 always_loaded bit (1), /* ON if process is not to be unloaded */ 2 25 3 dbr_loaded bit (1), /* ON if DBR is loaded on some CPU */ 2 26 3 being_loaded bit (1), /* ON if somebody loading this process */ 2 27 3 shared_stack_0 bit (1), /* ON if a shared stack_0 is assigned */ 2 28 3 page_wait_flag bit (1), /* flag ON if waiting for page */ 2 29 3 firstsw bit (1), /* OFF until process is intialized */ 2 30 3 state bit (18), /* execution state */ 2 31 2 page_faults fixed bin (35), /* total page faults for the process */ 2 32 2 processid bit (36), /* bit 0-17: offset of ATPE */ 2 33 /* bit 18-35: sequential number */ 2 34 2 te fixed bin (35), /* virtual time since eligibility award */ 2 35 2 ts fixed bin (35), /* virtual time since scheduling */ 2 36 2 ti fixed bin (35), /* virtual time since interaction */ 2 37 2 timax fixed bin (35), /* maximum value allowed for apte.ti */ 2 38 2 39 /* * * * * * * * */ 2 40 2 41 2 ipc_pointers unaligned, 2 42 3 event_thread bit (18), /* relative pointer to ITT list */ 2 43 3 pad3 bit (18), 2 44 2 ips_message bit (36), /* IPS signals pending */ 2 45 2 asteps unaligned, /* relative ASTE pointers */ 2 46 3 pds bit (18), /* PDS (per-process) */ 2 47 3 dseg bit (18), /* DSEG (per-process) */ 2 48 3 prds bit (18), /* PRDS (per-processor) */ 2 49 2 savex7 bit (18) unaligned, /* x7 at call to getwork (return point in pxss) */ 2 50 2 term_processid bit (36), /* process to send wakeup at temination */ 2 51 2 lock_id bit (36), /* File System unqieu ID associated with process */ 2 52 2 time_used_clock fixed bin (71), /* Total CPU time when process last lost CPU */ 2 53 2 54 /* * * * * * * * */ 2 55 2 56 2 wait_event bit (36) aligned, /* Event ID process awaiting */ 2 57 2 wct_index bit (18) unaligned, /* rel offset of WCTE */ 2 58 2 flags2 unaligned, 2 59 3 priority_scheduling bit (1), /* ON if guaranteed eligibility */ 2 60 3 special_wakeups bit (6), /* Special wakeup channels */ 2 61 3 pad7 bit (7), 2 62 3 batch bit (1), /* ON if absentee */ 2 63 3 pr_tag bit (3), /* CPU tag running or last run */ 2 64 2 state_change_time fixed bin (71), /* Time apte.state last changed */ 2 65 2 alarm_event fixed bin (71), /* wakeup event for alarm clock manager */ 2 66 2 alarm_time_thread bit (18) unaligned, /* thread of processes with pending alarms */ 2 67 2 alarm_time bit (54) unaligned, /* wakeup time for alarm */ 2 68 2 69 /* * * * * * */ 2 70 2 71 2 term_channel fixed bin (71), /* wakeup event for account overflow */ 2 72 2 ws_size fixed bin, /* working set estimate for the process */ 2 73 2 temax fixed bin (35), /* maximum eligibility slice (vcpu) */ 2 74 2 deadline fixed bin (71), /* time of next run */ 2 75 2 lock bit (18) unaligned, /* 0 => APTE locked, unlocked => return point of last unlock */ 2 76 2 unusable bit (18) unaligned, /* locking routines destroy */ 2 77 2 cpu_monitor fixed bin (35), /* if not 0, send wakeup to term_processid when virtual cpu 2 78* /* reaches this (units = 1/1024 sec) */ 2 79 2 paging_measure fixed bin (71), /* cumulative memory units */ 2 80 2 access_authorization bit (72), /* authorization of this process */ 2 81 2 dbr fixed bin (71), /* DBR value (constant since DSEG entry-held) */ 2 82 2 83 2 virtual_cpu_time fixed bin (71), /* cumulative virtual CPU time for the process */ 2 84 2 ittes_sent fixed bin (18), /* Unprocessed ITTs sent by this process */ 2 85 2 ittes_got fixed bin (18), /* Unprocessed ITTs received by this process */ 2 86 2 87 /* Cells used to drive and instrument finite-state model for response time 2 88* measurement. Maintained by meter_response_time */ 2 89 2 90 2 current_response_state fixed bin (17) unaligned, /* Process state in modle */ 2 91 2 pad18 bit (18) unaligned, 2 92 2 number_processing fixed bin (35), /* Number interactions */ 2 93 2 last_response_state_time fixed bin (71), /* Clock time at last response state change */ 2 94 2 total_processing_time fixed bin (71), /* Total interaction processing time */ 2 95 2 96 /* * * * * * */ 2 97 2 98 2 begin_interaction_vcpu fixed bin (71), /* Virtual cpu at beginning of last interaction */ 2 99 2 100 /* End of cells for finite-state model */ 2 101 2 102 2 saved_temax fixed bin (35), /* temax at eligibility award */ 2 103 2 procs_required bit (8) unaligned, /* bit mask of CPUs this process can run */ 2 104 2 pad4 bit (28) unaligned, 2 105 2 ipc_r_offset fixed bin (18) unsigned, 2 106 2 ipc_r_factor fixed bin (35) unsigned, 2 107 2 apad (10) fixed bin (35); 2 108 2 109 /* END INCLUDE FILE ... apte.incl.pl1 */ 1013 3 1 /* BEGIN INCLUDE FILE scs.incl.pl1 ... March 1983 */ 3 2 /* format: style4 */ 3 3 3 4 /* Information about system controllers */ 3 5 3 6 dcl 1 scs$controller_data (0:7) aligned ext, /* per-controller info */ 3 7 2 size fixed bin (17) unaligned, /* size (in 1024 word blocks) of this controller */ 3 8 2 base fixed bin (17) unaligned, /* abs address (0 mod 1024) for base of this controller */ 3 9 2 eima_data (4) unaligned, /* EIMA information for this controller */ 3 10 3 mask_available bit (1) unaligned, /* ON if corresponding mask exists */ 3 11 3 mask_assigned bit (1) unaligned, /* ON if mask assigned to a port */ 3 12 3 mbz bit (3) unaligned, 3 13 3 mask_assignment fixed bin (3) unaligned, /* port to which mask is assigned */ 3 14 2 info aligned, 3 15 3 online bit (1) unaligned, /* ON if controller is online */ 3 16 3 offline bit (1) unaligned, /* ON if controller is offline but can be added */ 3 17 3 store_a_online bit (1) unaligned, /* ON if store A is online */ 3 18 3 store_a1_online bit (1) unaligned, /* ON if store A1 is online */ 3 19 3 store_b_online bit (1) unaligned, /* ON if store B is online */ 3 20 3 store_b1_online bit (1) unaligned, /* ON if store B1 is online */ 3 21 3 store_b_is_lower bit (1) unaligned, /* ON if store B is lower */ 3 22 3 ext_interlaced bit (1) unaligned, /* ON if this SCU is interlaced with other SCU */ 3 23 3 int_interlaced bit (1) unaligned, /* ON if this SCU is internally interlaced */ 3 24 3 four_word bit (1) unaligned, /* ON if external interlace is 4-word */ 3 25 3 cyclic_priority (7) bit (1) unaligned, /* Cyclic priority for adjacent ports */ 3 26 3 type bit (4) unaligned, /* Model number for this controller */ 3 27 3 abs_wired bit (1) unaligned, /* ON if controller can have abs_wired pages */ 3 28 3 program bit (1) unaligned, /* PROGRAM/MANUAL switch setting */ 3 29 3 mbz bit (13) unaligned, 3 30 2 lower_store_size fixed bin (17) unaligned, /* size (in 1024 word blocks) of lower store */ 3 31 2 upper_store_size fixed bin (17) unaligned; /* size (in 1024 word blocks) of upper store */ 3 32 3 33 /* Information about CPUs */ 3 34 3 35 dcl 1 scs$processor_data (0:7) aligned ext, /* information about CPUs in the system */ 3 36 ( 3 37 2 online bit (1), /* "1"b if CPU is online */ 3 38 2 offline bit (1), /* "1"b if CPU is offline but can be added */ 3 39 2 release_mask bit (1), /* "1"b is this CPU is to give up its mask */ 3 40 2 accept_mask bit (1), /* "1"b if this CPU is to grap mask in idle loop */ 3 41 2 delete_cpu bit (1), /* "1"b if this CPU is to delete itself */ 3 42 2 interrupt_cpu bit (1), /* "1"b if this CPU takes hardware interrupts */ 3 43 2 halted_cpu bit (1), /* "1"b if this CPU has stopped itself (going to BOS) */ 3 44 2 cpu_type fixed bin (2) unsigned, /* 0 => DPS or L68, 1 => DPS8 */ 3 45 2 mbz1 bit (6), 3 46 2 cache_size fixed bin (3) unsigned, /* 0 = No cache; 1 = L68 2K cache; 3 47* 2 = DPS8 8K cache; 3 = DPS8 VS&SC 8K cache; 3 48* 4 = DPS8 VS&SC 16K cache; 5 = DPS8 VS&SC 32K cache 3 49* 7 = ignore cache size (set by ISOLTS reconfig) */ 3 50 2 mbz2 bit (12), 3 51 2 expanded_port bit (1), /* "1"b = on expanded port */ 3 52 2 expander_port fixed bin (2) unsigned, /* The actual expander port */ 3 53 2 controller_port fixed bin (3) unsigned 3 54 ) unaligned; /* Port on controller */ 3 55 3 56 dcl 1 scs$port_data (0:7) aligned external static, /* Info about what is connected to each SCU port */ 3 57 2 assigned fixed bin (4) unsigned unaligned, /* Type of device on this port */ 3 58 2 expander_port bit (1) unaligned, /* "1"b => this port has a port expander */ 3 59 2 expanded_cpu (0:3) bit (1) unaligned, /* "1"b => this expander port has a CPU attached */ 3 60 2 iom_number fixed bin (3) unsigned unaligned, /* IOM number of IOM attached to this port */ 3 61 2 cpu_number (0:3) fixed bin (3) unsigned unaligned, /* CPU number of CPU(s) attached to this port */ 3 62 /* cpu_number (0) is only one if expander_port is "0"b */ 3 63 2 pad bit (12) unaligned; 3 64 3 65 dcl 1 scs$cow (0:7) aligned external, /* Actual connect words */ 3 66 2 pad bit (36) aligned, /* Expander COW's must be odd-word */ 3 67 2 cow, 3 68 3 sub_mask bit (8) unaligned, /* Expander sub-port mask */ 3 69 3 mbz1 bit (13) unaligned, 3 70 3 expander_command bit (3) unaligned, /* Expander command. */ 3 71 3 mbz2 bit (2) unaligned, 3 72 3 expanded_port bit (1) unaligned, /* "1"b = on expanded port */ 3 73 3 expander_port fixed bin (3) unsigned unaligned, /* Port on expander for cioc */ 3 74 3 mbz3 bit (3) unaligned, 3 75 3 controller_port fixed bin (3) unaligned unsigned;/* controller port for this CPU */ 3 76 3 77 dcl 1 scs$cow_ptrs (0:7) external aligned, /* Pointers to COW's */ 3 78 2 rel_cow_ptr bit (18) unal, /* Relative pointer to COW */ 3 79 2 pad bit (12) unal, 3 80 2 tag bit (6) unal; /* Better be zero. */ 3 81 3 82 dcl 1 scs$reconfig_general_cow aligned external, /* Used during reconfig ops. */ 3 83 2 pad bit (36) aligned, 3 84 2 cow, /* Connect operand word, in odd location. */ 3 85 3 sub_mask bit (8) unaligned, /* Expander sub-port mask */ 3 86 3 mbz1 bit (13) unaligned, 3 87 3 expander_command bit (3) unaligned, /* Expander command. */ 3 88 3 mbz2 bit (9) unaligned, 3 89 3 controller_port fixed bin (3) unaligned unsigned;/* controller port for this CPU */ 3 90 3 91 /* MASKS and PATTERNS */ 3 92 3 93 dcl scs$sys_level bit (72) aligned ext; /* mask used while handling I/O interrupts */ 3 94 dcl scs$open_level bit (72) aligned ext; /* mask used during normal operation */ 3 95 dcl scs$processor_start_mask bit (72) aligned ext; /* mask used when starting up a CPU */ 3 96 dcl scs$cpu_test_mask bit (72) aligned ext; /* mask used for ISOLTS CPU testing */ 3 97 dcl scs$number_of_masks fixed bin ext; /* number of masks (starting at sys_level) */ 3 98 dcl scs$processor_start_pattern bit (36) aligned ext; /* SMIC pattern used to send processor start interrupt */ 3 99 dcl scs$cpu_test_pattern bit (36) aligned ext; /* SMIC pattern used for ISOLTS processor testing */ 3 100 3 101 /* CAM and CACHE clear info */ 3 102 3 103 dcl scs$cam_pair fixed bin (71) ext; /* instructions XEDd when CAMing and clearing CACHE */ 3 104 dcl scs$cam_wait bit (8) aligned ext; /* Used when evicting pages from main memory */ 3 105 3 106 /* MASKING INSTRUCTIONS & POINTERS */ 3 107 3 108 dcl scs$set_mask (0:7) bit (36) aligned ext; /* instructions to set mask (STAQ or SMCM) */ 3 109 dcl scs$read_mask (0:7) bit (36) aligned ext; /* instructions to read mask (LDAQ or RMCM) */ 3 110 dcl scs$mask_ptr (0:7) ptr unaligned ext; /* pointers for real or simulated masks */ 3 111 3 112 /* MISCELLANEOUS */ 3 113 3 114 dcl 1 scs$processor_test_data aligned ext, /* info used for cpu testing */ 3 115 ( 3 116 2 active bit (1), /* = "1"b if cpu currently under test */ 3 117 2 scu_state bit (2), /* state of scu being used for testing (see definition below) */ 3 118 2 pad1 bit (4), 3 119 2 req_mem fixed bin (10), /* dedicated memory required to test this cpu */ 3 120 2 cpu_tag fixed bin (5), /* tag of cpu under test */ 3 121 2 scu_tag fixed bin (5), /* tag of scu being used for cpu testing */ 3 122 2 mask_cpu fixed bin (5) 3 123 ) unaligned; /* tag of active cpu that has mask asigned to above scu */ 3 124 3 125 /* scu_state = "00"b => SCU defined by scs$processor_test_data.scu_tag not yet effected */ 3 126 /* scu_state = "01"b => all core removed from SCU, port mask not yet changed */ 3 127 /* scu_state = "10"b => all core removed from SCU, port mask changed */ 3 128 /* scu_state = "11"b => only 64k at base of SCU being used for testing, original port mask restored */ 3 129 3 130 dcl scs$idle_aptep (0:7) ptr unaligned ext; /* pointer to idle process APTE for each processor */ 3 131 3 132 dcl scs$connect_lock bit (36) aligned ext; /* lock for sending connects */ 3 133 dcl scs$reconfig_lock bit (36) aligned ext; /* Lock used during reconfiguration */ 3 134 dcl scs$trouble_flags bit (8) aligned ext; /* checkoff flags for sys_trouble stopping */ 3 135 dcl scs$bos_restart_flags bit (8) aligned ext; /* checkoff flags for restarting after sys_trouble */ 3 136 dcl scs$nprocessors fixed bin ext; /* number of runnung processors */ 3 137 dcl scs$bos_processor_tag fixed bin (3) ext; /* CPU tag of processor running BOS */ 3 138 dcl scs$faults_initialized bit (1) aligned ext; /* ON after faults have been enabled */ 3 139 dcl scs$sys_trouble_pending bit (1) aligned ext; /* sys_trouble event is pending in the system */ 3 140 dcl scs$fast_cam_pending (0:7) bit (36) aligned ext; /* checkoff cells for cam connect */ 3 141 dcl scs$interrupt_controller fixed bin (3) ext; /* port number of low order controller */ 3 142 dcl scs$processor_start_int_no fixed bin (5) ext; /* interrupt cell for starting a processor */ 3 143 dcl scs$processor bit (8) aligned ext; /* bits ON for online CPUs */ 3 144 dcl scs$processor_start_wait bit (8) aligned ext; /* checkoff flags for waiting for new processor */ 3 145 3 146 dcl scs$trouble_dbrs (0:7) fixed bin (71); /* DBR values at system crash time */ 3 147 3 148 dcl scs$port_addressing_word (0:7) bit (3) aligned ext; /* active module port number for each controller */ 3 149 3 150 dcl scs$cfg_data (0:7) fixed bin (71) aligned ext; /* RSCR-CFG data from each controller */ 3 151 3 152 dcl scs$cfg_data_save fixed bin (71) aligned ext; /* RSCR-CFG save area for ISOLTS CPU testing */ 3 153 3 154 dcl scs$expanded_ports bit (1) unaligned dim (0:7) external; 3 155 /* Which ports have expanders */ 3 156 3 157 dcl scs$processor_switch_data (0:4) bit (36) aligned ext; /* raw data from RSW 0 thru 4 */ 3 158 dcl scs$processor_switch_template (0:4) bit (36) aligned ext; /* expected data from RSW 0 thru 4 */ 3 159 dcl scs$processor_switch_compare (0:4) bit (36) aligned ext; /* discrepancies from expected data */ 3 160 dcl scs$processor_switch_mask (0:4) bit (36) aligned ext; /* masks for comparing switch data */ 3 161 3 162 dcl scs$processor_data_switch_value bit (36) aligned ext; /* Correct value for CPU data switches */ 3 163 3 164 dcl scs$controller_config_size (0:7) fixed bin (14) aligned ext; 3 165 /* Controller size on config card */ 3 166 3 167 dcl scs$reconfig_locker_id char (32) aligned ext; /* process group ID of process doing reconfiguration */ 3 168 3 169 dcl scs$scas_page_table (0:31) bit (36) aligned external static; 3 170 /* PTWs for SCAS pages */ 3 171 3 172 dcl scs$cycle_priority_template bit (7) aligned ext; /* template for setting anti-hog switches */ 3 173 dcl scs$set_cycle_switches bit (1) aligned ext; /* flag to set ant-hog switches */ 3 174 3 175 3 176 dcl ( 3 177 IOM_PORT init (1), 3 178 CPU_PORT init (2), 3 179 BULK_PORT init (3) 3 180 ) fixed bin int static options (constant); /* values for scs$port_data.assigned */ 3 181 3 182 3 183 /* END INCLUDE FILE scs.incl.pl1 */ 1014 4 1 /* BEGIN INCLUDE FILE ... sst.incl.pl1 ... January 1971 */ 4 2 /* Note: This include file has an ALM counterpart made with cif. Keep it up to date */ 4 3 /* Deleted paging device info and added pc segmove info, Benson Margulies 84-01-03 */ 4 4 /* Added covert channel meters, Keith Loepere 85-01-08. */ 4 5 4 6 dcl sst_seg$ external; 4 7 dcl sstp ptr; 4 8 4 9 dcl 1 sst based (sstp) aligned, 4 10 2 space (8) fixed bin, /* empty space to watch for bugs */ 4 11 4 12 /* SST HEADER */ 4 13 4 14 2 pre_page_time fixed bin (71), /* total time spent pre-paging */ 4 15 2 post_purge_time fixed bin (71), /* total time spent post-purging */ 4 16 2 post_in_core fixed bin, /* total pages in core (and in list) at purge time */ 4 17 2 thrashing fixed bin, /* meter of thrashing being done on system */ 4 18 2 npfs_misses fixed bin, /* meter of times npfs was on when pre-paging */ 4 19 2 salv fixed bin, /* flag which is ^=0 if and only if salvaging */ 4 20 4 21 2 ptl bit (36), /* global page table loop lock */ 4 22 2 astl bit (36), /* global ast allocation block lock */ 4 23 2 astl_event bit (36), /* event used when waiting for AST lock */ 4 24 2 astl_notify_requested bit (1) aligned, /* flag to notify AST lock */ 4 25 2 nused fixed bin, /* number of pages on used list */ 4 26 2 ptwbase fixed bin (24), /* absolute address of page table array */ 4 27 2 tfreep ptr, /* pointer to first trailer on free list */ 4 28 4 29 2 astap ptr, /* aste array pointer */ 4 30 2 ptl_wait_ct fixed bin, /* pxss: number is >= # of processes waiting to ptl */ 4 31 2 astsize fixed bin, /* size of an AST entry */ 4 32 2 cmesize fixed bin, /* size of a CME entry */ 4 33 2 root_astep ptr, /* pointer to the root AST entry */ 4 34 4 35 2 pts (0: 3) fixed bin, /* array of page table sizes */ 4 36 2 level (0:3), /* per-list information about ASTE's */ 4 37 3 (ausedp, no_aste) bit (18) unaligned, /* used list and count of number of entries */ 4 38 4 39 2 (atempp, atempp1) bit (18) unal, /* temp seg list pointer */ 4 40 2 dm_enabled bit (1) aligned, /* ON => journal seg exists */ 4 41 2 (ainitp, ainitp1) bit (18) unal, /* init seg list pointer */ 4 42 2 strsize fixed bin, /* Trailer size in words. */ 4 43 4 44 /* CORE MAP HEADER */ 4 45 4 46 2 cmp ptr, /* pointer to start of core map */ 4 47 2 usedp bit (18), /* pointer to first used core block */ 4 48 2 wtct fixed bin, /* count of pages being written */ 4 49 4 50 2 startp bit (18), /* pointer to solid page for lap counting (fsdct) */ 4 51 2 removep bit (18), /* pointer to list of pages being removed from use */ 4 52 /* MISC */ 4 53 4 54 2 double_write fixed bin, /* trigger for store through scheme */ 4 55 /* 0 = no double writes, 4 56* 1 = all non-pd pages get written, 4 57* 2 = all directories get written */ 4 58 2 temp_w_event bit (36) aligned, /* wait event for temp wiring lock */ 4 59 2 root_pvtx fixed bin, /* pvtx or rpv */ 4 60 2 nolock bit (1) aligned, /* if on, don't lock ptl on interrupts */ 4 61 4 62 2 fc_skips_pinned fixed bin (35), /* number of skips over pinned page in find_core */ 4 63 2 cl_skips_pinned fixed bin (35), /* number of skips over pinned page in claim_mod_core */ 4 64 2 ast_ht_ptr ptr, /* AST hast table pointer */ 4 65 2 ast_ht_n_buckets fixed bin, /* number of buckets in AST hash table */ 4 66 2 ast_ht_uid_mask bit (36) aligned, /* mask to strip out low-order bits of uid */ 4 67 2 meter_ast_locking fixed bin, /* non-zero enables AST lock meters */ 4 68 2 checksum_filemap fixed bin, /* non-zero enables filemap checksumming */ 4 69 4 70 2 page_read_errors fixed bin, /* read errors posted to page control */ 4 71 2 page_write_errors fixed bin, /* write errors posted to page control */ 4 72 4 73 2 cycle_pv_allocation fixed bin, /* flag to cycle VTOCE allocation among PVs */ 4 74 4 75 2 n_trailers fixed bin, /* Number of trailer entries in str_seg */ 4 76 2 synch_activations fixed bin (35), /* Activation attempts for synchronized segs */ 4 77 2 synch_skips fixed bin (35), /* get_aste skips because not synchronized */ 4 78 4 79 2 lock_waits fixed bin, /* Number of times we had to wait for a lock */ 4 80 2 total_locks_set fixed bin, /* Total number of block locks set */ 4 81 2 pdir_page_faults fixed bin, /* total page faults off >pdd */ 4 82 2 level_1_page_faults fixed bin, /* total page faults in sys libes */ 4 83 2 dir_page_faults fixed bin, /* Total page faults on directories */ 4 84 2 ring_0_page_faults fixed bin, /* page faults in ring 0 */ 4 85 2 rqover fixed bin (35), /* errcode for record quota overflow */ 4 86 2 pc_io_waits fixed bin, /* Number of times pc had to wait on io */ 4 87 4 88 4 89 /* The following (until pdmap) used to be the 'cnt' in cnt.incl.pl1 */ 4 90 4 91 2 steps fixed bin, /* number of steps taken around used list */ 4 92 2 needc fixed bin, /* number of times core page needed */ 4 93 2 ceiling fixed bin, /* number of times ceiling hit */ 4 94 2 ctwait fixed bin, /* number of times write counter was full */ 4 95 2 wired fixed bin, /* number of pages wired by pc */ 4 96 2 laps fixed bin, /* number of times around used list */ 4 97 2 skipw fixed bin, /* number of pages skiped because they were wired */ 4 98 2 skipu fixed bin, /* because of being used */ 4 99 4 100 2 skipm fixed bin, /* because of being modified */ 4 101 2 skipos fixed bin, /* because out of service */ 4 102 2 aused fixed bin, /* number of AST entries on used list */ 4 103 2 damaged_ct fixed bin, /* count of segments that system damaged */ 4 104 2 deact_count fixed bin, /* count of deactivations */ 4 105 2 demand_deact_attempts fixed bin, /* user requested deactivations */ 4 106 2 demand_deactivations fixed bin, /* user instigated deactivations */ 4 107 4 108 2 reads (8) fixed bin, /* number of reads for each did */ 4 109 2 writes (8) fixed bin, /* number of writes for each did */ 4 110 4 111 2 short_pf_count fixed bin, /* count of page faults on out of service pages */ 4 112 2 loop_locks fixed bin, /* count of times locked PTL */ 4 113 2 loop_lock_time fixed bin (71), /* time spent looping on PTL */ 4 114 2 cpu_sf_time fixed bin (71), /* cpu time spent in seg_fault */ 4 115 2 total_sf_pf fixed bin, /* total page faults while in seg_fault */ 4 116 2 total_sf fixed bin, /* total number of seg_faults */ 4 117 2 pre_page_size fixed bin, /* total pre-pagings expected */ 4 118 2 post_list_size fixed bin, 4 119 2 post_purgings fixed bin, /* total number of post-purgings */ 4 120 2 post_purge_calls fixed bin, /* total number of calls to post-purge */ 4 121 2 pre_page_calls fixed bin, /* total number of calls tp pre-page */ 4 122 2 pre_page_list_size fixed bin, 4 123 2 pre_page_misses fixed bin, /* total number of misses in pre-page list */ 4 124 2 pre_pagings fixed bin, /* total number of pre-pagings */ 4 125 4 126 /* TEMPORARY WIRED PROCEDURE INFO */ 4 127 4 128 2 wire_proc_data (8) fixed bin (71), /* data for wire_proc */ 4 129 4 130 /* MAIN MEMORY USAGE INFORMATION */ 4 131 4 132 2 abs_wired_count fixed bin, /* count of abs-wired pages */ 4 133 2 system_type fixed bin, /* ADP_SYSTEM or L68_SYSTEM */ 4 134 2 wired_copies fixed bin, /* number of times a wired page was copied */ 4 135 2 recopies fixed bin, /* number of times recopied because modified */ 4 136 2 first_core_block fixed bin, /* core map index for first block of core */ 4 137 2 last_core_block fixed bin, /* core map index for last block of core */ 4 138 2 fw_retries fixed bin (35), /* force_write retries due to ASTE move */ 4 139 2 pvhtp ptr unaligned, /* ptr to PV hold table for debugging */ 4 140 4 141 /* AST METERS */ 4 142 4 143 2 askipsize (0: 3) fixed bin, /* array of skips because wrong AST size */ 4 144 2 aneedsize (0: 3) fixed bin, /* array of times needed each size */ 4 145 4 146 2 stepsa fixed bin, /* count of steps taken looking for an AST entry */ 4 147 2 askipsehs fixed bin, /* count of skips because EHS was ON */ 4 148 2 asearches fixed bin, /* count of full searches made */ 4 149 2 askipslevel fixed bin, /* count of skips because pages were in core */ 4 150 2 askipsinit fixed bin, /* count of times turned OFF init switch */ 4 151 2 acost fixed bin, /* cumulative cost of deactivations */ 4 152 2 askipslock fixed bin, /* count of skips because couldn't lock parent */ 4 153 2 askipdius fixed bin, /* count of skips because DIUS was on */ 4 154 4 155 2 alaps fixed bin, /* lap counter for AST list */ 4 156 2 updates fixed bin, /* calls to updateb */ 4 157 2 setfaults_all fixed bin, /* setfaults done to the entire SDW */ 4 158 2 setfaults_acc fixed bin, /* setfaults done to the access field */ 4 159 2 total_bf fixed bin, /* count of bound faults */ 4 160 2 total_bf_pf fixed bin, /* page faults during bound faults */ 4 161 2 cpu_bf_time fixed bin (71), /* cpu time spent in bound fault */ 4 162 4 163 2 asteps (0: 3) fixed bin, /* per-size AST step counters */ 4 164 4 165 2 ast_locked_at_time fixed bin (71), /* clock reading when ast last locked */ 4 166 2 ast_locked_total_time fixed bin (71), /* total real time the ast lock was locked */ 4 167 2 ast_lock_wait_time fixed bin (71), /* total real time of all waiting on ast lock */ 4 168 2 ast_locking_count fixed bin (35), /* number of times ast was locked */ 4 169 2 cleanup_count fixed bin, /* calls to pc$cleanup */ 4 170 2 cleanup_real_time fixed bin (71), /* total real time in pc$cleanup */ 4 171 4 172 /* PRE-PAGE METERS */ 4 173 4 174 2 tree_count (0: 63) fixed bin, /* counters for pre-page decisions */ 4 175 4 176 2 pp_meters (0: 63) fixed bin, /* counters for measuring pre-page success */ 4 177 4 178 4 179 2 wusedp bit (18) aligned, /* Relative cmep to next cme for writing */ 4 180 2 write_hunts fixed bin, /* Times claim_mod_core invoked */ 4 181 2 claim_skip_cme fixed bin, /* Times unacceptable cme found by c_m_c */ 4 182 2 claim_skip_free fixed bin, /* Times free cme passed by c_m_c */ 4 183 2 claim_notmod fixed bin, /* Times c_m_c passed pure page */ 4 184 2 claim_passed_used fixed bin, /* Times used page seen */ 4 185 2 claim_skip_ptw fixed bin, /* Times c_m_c saw unacceptable ptw */ 4 186 2 claim_writes fixed bin, /* Writes queued by c_m_c */ 4 187 2 claim_steps fixed bin, /* Steps passed in core claiming */ 4 188 2 pre_seeks_failed fixed bin, /* counter of times quick find_core_ failed */ 4 189 2 resurrections fixed bin, /* nulled addresses reinstated */ 4 190 2 volmap_seg_page_faults fixed bin (35), /* Pseudo-page faults on volmap_seg */ 4 191 2 oopv fixed bin, /* out-of-physical-volume page faults */ 4 192 2 dblw_resurrections fixed bin, /* addresses resurrected by double-writing */ 4 193 2 sgm_time fixed bin (71), /* Time (VCPU) in seg mover */ 4 194 2 sgm_pf fixed bin, /* Page faults in seg moving */ 4 195 2 bad_sgms fixed bin, /* Seg moves that failed */ 4 196 2 sgm_sgft fixed bin, /* Seg faults in seg moves */ 4 197 2 good_sgms fixed bin, /* Seg moves that completed */ 4 198 2 claim_runs fixed bin, /* Times claim_mod_core had to run */ 4 199 2 activations fixed bin, /* total count of activations */ 4 200 2 dir_activations fixed bin, /* count of directory activations */ 4 201 2 hedge_updatevs fixed bin, /* call-in updatevs */ 4 202 2 hedge_writes fixed bin, /* call in core flush writes */ 4 203 2 evict_recover_data, /* see evict_page.alm */ 4 204 3 evict_ptp bit (18) unal, /* ptp of page being moved */ 4 205 3 evict_phmbit bit (18) unal, /* N/Z if page was mod */ 4 206 4 207 /* Data for metering force_write facility 08/19/78 */ 4 208 4 209 2 force_swrites fixed bin, /* Calls on segments to force write */ 4 210 2 force_pwrites fixed bin, /* Mod pages so written */ 4 211 2 fw_none fixed bin, /* Force write wrote none */ 4 212 2 force_updatevs fixed bin, /* Updatev's so forced */ 4 213 4 214 2 pf_unlock_ptl_time fixed bin (71), /* Time unlocking ptln page faults */ 4 215 2 pf_unlock_ptl_meterings fixed bin, 4 216 4 217 2 makeknown_activations fixed bin (35), /* activations at makeknown time */ 4 218 2 backup_activations fixed bin (35), /* activations for backup */ 4 219 2 metering_flags aligned, /* small chunks of misc. information */ 4 220 3 activate_activated bit (1) unal, /* ON => last call to activate entry actually activated something */ 4 221 3 pad bit (35) unal, 4 222 2 seg_fault_calls fixed bin (35), /* number calls to seg_fault for explicit activation */ 4 223 4 224 /* METERS FOR STACK TRUNCATION */ 4 225 4 226 2 (stk_truncate_should_didnt, /* counts */ 4 227 stk_truncate_should_did, 4 228 stk_truncate_shouldnt_didnt, 4 229 stk_truncate_shouldnt_did) fixed bin (35), 4 230 2 stk_pages_truncated fixed bin (35), 4 231 2 stk_pages_truncated_in_core fixed bin (35), 4 232 4 233 /* SUPPORT FOR PC SEGMOVES */ 4 234 4 235 2 segmove_lock aligned, 4 236 3 pid bit (36) aligned, 4 237 3 event bit (36) aligned, 4 238 3 notify bit (1) aligned, 4 239 2 segmove_io_limit fixed bin, /* max read aheads */ 4 240 2 segmove_found_synch fixed bin (35), /* cme.synch_held */ 4 241 2 segmove_synch_disappeared fixed bin (35), /* page$check_synch fixed */ 4 242 2 segmove_n_reads fixed bin (35), /* total IO's queued. */ 4 243 2 segmove_max_tries fixed bin (35), /* max times through the read loop */ 4 244 4 245 2 segmove_astep ptr unal, /* if non-null, addresses to be rescued from old_addr_astep */ 4 246 2 segmove_pvtx fixed bin, /* if segmove_astep nonnull, valid */ 4 247 2 segmove_vtocx fixed bin, /* ditto */ 4 248 2 segmove_old_addr_astep ptr unaligned, /* ditto */ 4 249 2 segmove_new_addr_astep ptr unaligned, /* if non-null, the addresses must be deposited. */ 4 250 4 251 2 mod_during_write fixed bin, /* times a page was modified while it was being written */ 4 252 2 zero_pages fixed bin, /* count of pages truncated because all zero */ 4 253 2 trace_sw aligned, /* tracing control flags */ 4 254 3 pad_trace bit (32) unaligned, 4 255 3 pc_trace_pf bit (1) unaligned, /* tracing for page faults, done, etc. */ 4 256 3 tty_trace bit (1) unaligned, 4 257 3 pc_trace bit (1) unaligned, /* flag used by page control primitives */ 4 258 3 sc_trace bit (1) unaligned, /* flag used by segment control primitives */ 4 259 2 new_pages fixed bin, /* newly created pages */ 4 260 2 ast_track bit (1) aligned, /* "1"b => keep SST name table */ 4 261 2 dirlock_writebehind fixed bin, /* =1 to flush modified dir pages in lock$unlock */ 4 262 2 write_limit fixed bin, /* Max # of outstanding writes by page control */ 4 263 2 crash_test_segmove bit (1) aligned, /* crash in mid-segmove */ 4 264 2 delayed_seg_state_chg fixed bin (35), /* count of times a process was delayed in affecting a seg state */ 4 265 2 audit_seg_state_chg fixed bin (35), /* count of times a process was audited for excessive seg state changes */ 4 266 2 seg_state_chg_delay fixed bin (52), /* total times processes were delayed for covert channels */ 4 267 2 seg_state_change_limit fixed bin, /* number of events over which we determine covert channel bandwidth */ 4 268 2 max_seg_state_change_bw fixed bin, /* maximum bps for covert channel before we delay */ 4 269 2 audit_seg_state_change_bw fixed bin, /* maximum bps for covert channel before we audit */ 4 270 2 seg_state_chg_operation bit (36) aligned, /* access_operation_ value for excessive_seg_state_chg */ 4 271 2 pad4 (126) bit (36) aligned; /* padding to 512 words (1000)8 */ 4 272 4 273 /* END INCLUDE FILE sst.incl.pl1 */ 1015 5 1 /* BEGIN INCLUDE FILE ... sdw.incl.pl1 ... last modified 12 May 1976 */ 5 2 5 3 dcl sdwp ptr; 5 4 5 5 dcl 1 sdw based (sdwp) aligned, /* Segment Descriptor Word */ 5 6 5 7 (2 add bit (24), /* main memory address of page table */ 5 8 2 (r1, r2, r3) bit (3), /* ring brackets for the segment */ 5 9 2 df bit (1), /* directed fault bit (0 => fault) */ 5 10 2 df_no bit (2), /* directed fault number */ 5 11 5 12 2 pad1 bit (1), 5 13 2 bound bit (14), /* boundary field (in 16 word blocks) */ 5 14 2 access, /* access bits */ 5 15 3 read bit (1), /* read permission bit */ 5 16 3 execute bit (1), /* execute permission bit */ 5 17 3 write bit (1), /* write permission bit */ 5 18 3 privileged bit (1), /* privileged bit */ 5 19 2 unpaged bit (1), /* segment is unpaged if this is 1 */ 5 20 2 entry_bound_sw bit (1), /* if this is 0 the entry bound is checked by hardware */ 5 21 2 cache bit (1), /* cache enable bit */ 5 22 2 entry_bound bit (14)) unaligned; /* entry bound */ 5 23 5 24 dcl 1 sdwa (0: 1) based (sdwp) aligned like sdw; /* SDW array (descriptor segment) */ 5 25 5 26 /* END INCLUDE FILE sdw.incl.pl1 */ 1016 6 1 /* BEGIN INCLUDE FILE ptw.incl.pl1 --- 09/13/74 for nss */ 6 2 6 3 dcl ptp ptr; /* pointer to either page table or page table word */ 6 4 6 5 dcl 1 ptw based (ptp) aligned, /* page table word */ 6 6 6 7 (2 add bit (18), /* address of page, type of which is defined by add_type */ 6 8 2 add_type bit (4), /* 0000=null, 1000=core, 0100=disk, 0010=pd, 0001=swap */ 6 9 2 first bit (1), /* the page has not yet been written out */ 6 10 2 processed bit (1), /* temporary used during post-purging and error signalling */ 6 11 2 pad1 bit (1), 6 12 2 unusable1 bit (1), /* can't be used because hardware resets this bit */ 6 13 2 phu bit (1), /* page has been used bit */ 6 14 2 phm1 bit (1), /* Cumulative OR of hardware phm's */ 6 15 2 nypd bit (1), /* must be moved to paging device */ 6 16 2 phm bit (1), /* page has been modified bit */ 6 17 2 phu1 bit (1), /* page has been used in the quantum */ 6 18 2 wired bit (1), /* page is to remain in core */ 6 19 2 os bit (1), /* page is out-of-service (I/O in progress) */ 6 20 2 df bit (1), /* directed fault if this is 0 (page not in core) */ 6 21 2 df_no bit (2)) unaligned; /* directed fault number for page faults */ 6 22 6 23 dcl 1 ptwa (0:255) based (ptp) aligned like ptw; /* page table */ 6 24 6 25 dcl ptwa_bits (0:255) based (ptp) bit (36) aligned; /* page table array as raw bits */ 6 26 6 27 dcl 1 mptw based (ptp) aligned, /* page table word while page is not in core */ 6 28 2 devadd bit (22) unaligned, /* device address where page resides */ 6 29 2 pad bit (14) unaligned; 6 30 6 31 dcl 1 mptwa (0 : 1) based (ptp) aligned, /* page table while pages are not in core */ 6 32 2 devadd bit (22) unaligned, /* device address where page resides */ 6 33 2 pad bit (14) unaligned; 6 34 6 35 dcl 1 atptw based (ptp) aligned, /* PL/I has problems on overlay-def based */ 6 36 2 add bit (18) unal, 6 37 2 (core, disk, pd, reserved) bit (1) unal, /* address types */ 6 38 2 pad bit (14) unal; 6 39 6 40 dcl 1 atptwa (0:255) based (ptp) aligned like atptw; 6 41 6 42 /* END INCLUDE FILE ptw.incl.pl1 */ 1017 7 1 /* BEGIN INCLUDE FILE ... tcm.incl.pl1 ... used to generate tc_data cds */ 7 2 /* NOTE -- This include file has TWO counterparts in ALM: tc_meters.incl.alm and */ 7 3 /* wcte.incl.alm. They cannot be produced with cif, and must be kept up to date manually. */ 7 4 /* Modified 830914 to replace tty_polling_time with opc_polling_time... -E. A. Ranzenbach */ 7 5 /* Modified 1984.05.21 by M. Pandolf to add tc_suspend_lock */ 7 6 /* Modified 1984.11.26 by Keith Loepere for uid_array. */ 7 7 /* Modified 1984.12.06 by Keith Loepere for page create delaying. */ 7 8 7 9 dcl tcmp ptr; 7 10 7 11 dcl 1 tcm aligned based (tcmp), 7 12 2 tc_suspend_lock like lock, /* when locked, tc is suspended */ 7 13 2 cid2 fixed bin (18), 7 14 2 cid3 fixed bin (18), 7 15 2 cid4 fixed bin (18), 7 16 2 depth_count fixed bin (18), /* depth last process run */ 7 17 2 loadings fixed bin (18), /* number of process loadings */ 7 18 7 19 2 blocks fixed bin (18), /* number of calls to block */ 7 20 2 wakeups fixed bin (18), /* number of calls to wakeup */ 7 21 2 waits fixed bin (18), /* number of calls to wait */ 7 22 2 notifies fixed bin (18), /* number of calls to notify */ 7 23 2 schedulings fixed bin (18), 7 24 2 interactions fixed bin (18), /* number of interactive schedulings */ 7 25 2 avequeue fixed bin (35, 18), /* recent time average of number in queue */ 7 26 2 te_wait fixed bin (18), /* times te called from wait */ 7 27 7 28 2 te_block fixed bin (18), /* times te updated from block */ 7 29 2 te_i_stop fixed bin (18), /* times te updated from i_stop */ 7 30 2 te_pre_empt fixed bin (18), /* times te updated from pre_empt */ 7 31 2 p_interactions fixed bin, /* times interaction bit turned off because of high priority */ 7 32 2 idle fixed bin (71), /* total idle time */ 7 33 2 mp_idle fixed bin (71), /* multi-programming idle */ 7 34 7 35 2 nmp_idle fixed bin (71), /* non-multi-programming idle time */ 7 36 2 zero_idle fixed bin (71), /* zero idle time */ 7 37 2 last_time fixed bin (71), /* last time a process was run */ 7 38 2 loop_locks fixed bin (18), /* times looped on the APT lock */ 7 39 2 loop_lock_time fixed bin (18), /* time looping on the APT lock */ 7 40 2 ave_eligible fixed bin (35, 18), /* average length of eligible queue */ 7 41 2 sort_to_elhead fixed bin (18), /* 0=> no one,1 => int've only, 2 => everybody */ 7 42 2 processor_time fixed bin (71), /* total processor time on system */ 7 43 2 response_time fixed bin (71), /* estimate of response time */ 7 44 2 eligible_time fixed bin (71), /* estimate of eligible time */ 7 45 2 response_count fixed bin, /* count of response meters */ 7 46 2 eligible_count fixed bin, /* count of eligible meters */ 7 47 2 quit_counts (0:5) fixed bin, /* array of buckets indexed by state */ 7 48 2 loading_idle fixed bin (71), /* loading_idle time */ 7 49 2 delta_vcpu fixed bin (71), /* delta virtual CPU time for the system */ 7 50 2 post_purge_switch fixed bin, /* ON if post purging is to be done */ 7 51 2 time_out_severity fixed bin, /* syserr first arg for notify time outs */ 7 52 2 notify_check fixed bin, /* obsolete */ 7 53 2 quit_priority fixed bin, /* factor for scheduler quit response */ 7 54 2 iobm_polling_time fixed bin (71), /* time to poll iobm */ 7 55 2 end_of_time fixed bin (71), /* very large time */ 7 56 2 gp_at_notify fixed bin (18), /* 0 => just do get_idle_processor */ 7 57 2 gp_at_ptlnotify fixed bin (18), /* 0 => just do get_idle_processor */ 7 58 2 int_q_enabled fixed bin (18), /* 0 => no intv q in percent mode */ 7 59 2 fnp_buffer_threshold fixed bin (18), /* if fewer free buffs then stingy alloc strategy */ 7 60 /* set this to >= half n_ttylines/fnp for safety */ 7 61 7 62 /* 100 octal */ 7 63 7 64 2 depths (8) fixed bin (18), /* histogram of run depths */ 7 65 2 tdepths (8) fixed bin (71), /* histogram of times run per depth */ 7 66 2 pfdepth (8) fixed bin (18), /* histogram of page faults per depth */ 7 67 7 68 2 ptl_not_waits fixed bin (18), /* times ptl_wait noticed ptl was unlocked */ 7 69 2 gw_gp_window_count fixed bin (18), /* times window noticed */ 7 70 2 metering_lock fixed bin (18), /* 0=locked, else unlocked */ 7 71 2 ptl_waits fixed bin (18), /* num calls to ptl_wait */ 7 72 2 gp_start_count fixed bin (18), /* to detect gw_gp window lossage */ 7 73 2 gp_done_count fixed bin (18), 7 74 2 nto_check_time fixed bin (71), /* next time at which nto code will be called */ 7 75 2 nto_delta fixed bin (35), /* microsec between nto checks */ 7 76 2 nto_count fixed bin (18), /* number of times nto detected */ 7 77 2 tcpu_scheduling fixed bin (18), /* obsolete */ 7 78 2 nto_event bit (36), /* last event which NTO'd */ 7 79 2 page_notifies fixed bin (18), 7 80 2 notify_nobody_count fixed bin (18), 7 81 2 notify_nobody_event bit (36), 7 82 2 system_type fixed bin, /* used to be tcm.inter */ 7 83 7 84 2 stat (0:15) fixed bin (18), /* num apte's in each state */ 7 85 7 86 /* 200 octal */ 7 87 7 88 2 wait (8), 7 89 3 time fixed bin (18), /* histogram of page fault waiting times versus did */ 7 90 3 count fixed bin (18), 7 91 7 92 2 ready (8), 7 93 3 time fixed bin (18), /* histogram of times in ready queue */ 7 94 3 count fixed bin (18), 7 95 7 96 2 total_pf_time fixed bin (71), /* total time spent from start to end of 7 97* all page faults */ 7 98 2 total_pf_count fixed bin (18), /* total number of page faults metered */ 7 99 2 auto_tune_ws fixed bin (18), /* 0=> dont, atherwise compensate for quantum len */ 7 100 2 ocore_delta fixed bin (18), /* number of pages reserved for int users */ 7 101 2 ws_sum fixed bin (18), /* total of eligible's ws_sizes */ 7 102 2 nonidle_force_count fixed bin (18), /* count of eligibilities forced */ 7 103 2 itt_list_lock bit (36) aligned, /* Lock on ITT free list */ 7 104 2 cpu_pf_time fixed bin (71), /* total cpu time spent handling page faults */ 7 105 2 cpu_pf_count fixed bin (18), /* total count of cpu time meterings */ 7 106 2 special_offsets unaligned, 7 107 3 apt_offset bit (18), 7 108 3 pad bit (18), 7 109 2 getwork_time fixed bin (71), /* total time spent in getwork */ 7 110 2 getwork_count fixed bin (18), /* total times through getwork */ 7 111 2 short_pf_count fixed bin (18), /* number of short page faults */ 7 112 2 interrupt_time fixed bin (71), /* total time spent in interrupt */ 7 113 2 interrupt_count fixed bin (71), /* total number of metered interrupts */ 7 114 2 ocore fixed bin (35, 18), /* fraction of core for int've users */ 7 115 2 pre_empt_flag bit (36) aligned, /* controls whether preempting at done time */ 7 116 2 cumulative_memory_usage fixed binary (71), /* total number of memory usage units */ 7 117 2 processor_time_at_define_wc fixed bin (71), /* value of processor_time when WC's last defined */ 7 118 2 boost_priority fixed bin, /* number of times priority process given high priority */ 7 119 2 lost_priority fixed bin, /* number of times priority process lost eligibility */ 7 120 2 total_clock_lag fixed bin (71), /* sum of all simulated clock delays */ 7 121 2 clock_simulations fixed bin, /* number of times alarm clock interrupt was simulated */ 7 122 2 max_clock_lag fixed bin, /* largest simulated alarm clock delay */ 7 123 7 124 /* 300 octal */ 7 125 7 126 2 pdscopyl fixed bin (18), /* amount of pds to copy for new process */ 7 127 2 max_hproc_segno fixed bin, /* largest allowed hardcore segment number */ 7 128 2 prds_length fixed bin (18), /* length of PRDS */ 7 129 2 pds_length fixed bin (18), /* length of PDS */ 7 130 2 lock fixed bin (18), /* process id generator lock */ 7 131 2 id bit (36) aligned, /* next uid to be added to uid_array */ 7 132 2 system_shutdown fixed bin (18), 7 133 2 working_set_factor fixed bin (35, 18), /* working set factor */ 7 134 7 135 2 ncpu fixed bin (18), /* number of processors currently being used */ 7 136 2 last_eligible bit (18), /* last process to gain eligibility */ 7 137 2 apt_lock fixed bin (35), /* + write; 0 hidden; -1 unlocked; -(N+1) Nreaders */ 7 138 2 apt_size fixed bin (18), /* number of APT entries */ 7 139 2 realtime_q aligned like based_sentinel, /* processes with realtime deadlines */ 7 140 2 aht_size fixed bin (18), /* APT hash table size */ 7 141 2 itt_size fixed bin (18), /* number of ITT entries */ 7 142 7 143 2 dst_size fixed bin (18), /* number of allowed DST entries */ 7 144 2 itt_free_list bit (18), /* pointer to ITT free list */ 7 145 2 used_itt fixed bin (18), /* number of used ITT entries */ 7 146 2 initializer_id bit (36) aligned, /* process id of initializer */ 7 147 2 n_eligible fixed bin (18), /* number of processes eligible */ 7 148 2 max_eligible fixed bin (30), /* maximum allowed number of eligible processes */ 7 149 2 wait_enable fixed bin (18), /* turned on when waiting mechanism works */ 7 150 2 apt_entry_size fixed bin (18), /* size of an APT entry */ 7 151 7 152 2 interactive_q aligned like based_sentinel, /* head of interactive queue */ 7 153 2 dst_ptr ptr, /* pointer to device signal table */ 7 154 2 old_user ptr, /* last process to run (apt ptr ) */ 7 155 2 initialize_time fixed bin (71), /* time of initialization */ 7 156 7 157 2 init_event fixed bin (18), /* wait event during initialization */ 7 158 2 oldt fixed bin (18), /* timer reading from previous process */ 7 159 2 newt fixed bin (18), /* timer setting for new process */ 7 160 2 tefirst fixed bin (30), /* first eligible time */ 7 161 2 telast fixed bin (30), /* last eligible time */ 7 162 2 timax fixed bin (35), /* time in queue for lowest level */ 7 163 2 empty_q bit (18), /* thread of empty APT entries */ 7 164 2 working_set_addend fixed bin (18), /* additive working set parameter */ 7 165 2 ready_q_head bit (0) aligned, /* for added segdef */ 7 166 2 eligible_q_head aligned like based_sentinel, /* head of eligible queue */ 7 167 2 ready_q_tail bit (0) aligned, /* for added segdef */ 7 168 2 eligible_q_tail aligned like based_sentinel, /* tail of eligible queue */ 7 169 2 idle_tail aligned like based_sentinel, /* tail of idle list */ 7 170 2 min_eligible fixed bin (30), 7 171 2 alarm_timer_list bit (18) aligned, /* rel pointer to apt entry for next alarm timer */ 7 172 2 guaranteed_elig_inc fixed bin (35), /* amount of guaranteed eligibility time in microsecs. */ 7 173 2 priority_sched_inc fixed bin (35), /* amount of block time before process is given priority */ 7 174 2 next_alarm_time fixed bin (71), /* clock time for next alarm timer */ 7 175 2 priority_sched_time fixed bin (71), /* time for priority process to be given priority */ 7 176 2 opc_polling_time fixed bin (71), /* time to poll console DIM */ 7 177 2 disk_polling_time fixed bin (71), /* time to poll disk DIM */ 7 178 2 tape_polling_time fixed bin (71), /* time to poll tape DIM */ 7 179 2 imp_polling_time fixed bin (71), /* time to poll imp */ 7 180 2 imp_polling_lock fixed bin (18), /* do not poll if lock set */ 7 181 2 max_channels fixed bin (18), /* num special channels per process */ 7 182 7 183 /* 400 octal */ 7 184 7 185 2 system_virtual_time fixed bin (71), /* non-idle virtual time */ 7 186 2 credit_bank fixed bin (71), /* credits not yet passed out */ 7 187 2 min_wct_index bit (18) aligned, /* offset of initializer work class table entry */ 7 188 2 max_wct_index bit (18) aligned, /* offset of highest wcte currently defined */ 7 189 2 delta_vt fixed bin (71), /* temp used by pxss.compute_virtual_clocks */ 7 190 2 gross_idle_time fixed bin (71), /* idle time_used_clock */ 7 191 2 credits_per_scatter fixed bin (35), /* total number of credits awarded at once */ 7 192 2 best_credit_value fixed bin (18), /* temp for pxss.find_next_eligible */ 7 193 2 define_wc_time fixed bin (71), /* clock time when workclasses last degined */ 7 194 2 max_batch_elig fixed bin (35), 7 195 2 num_batch_elig fixed bin (35), 7 196 2 deadline_mode fixed bin (35), /* 0=> ti sorts, else deadline sorts */ 7 197 2 credits_scattered fixed bin (35), 7 198 2 max_max_eligible fixed bin (30), /* Maximum of maxe */ 7 199 2 max_stopped_stack_0 fixed bin (35), /* Maximum stack_0's suspended by stopped procs */ 7 200 2 stopped_stack_0 fixed bin (35), /* Number stack_0's suspended by stopped procs */ 7 201 2 mos_polling_interval fixed bin (35), /* for heals */ 7 202 2 mos_polling_time fixed bin (71), /* for heals */ 7 203 2 vcpu_response_bounds (VCPU_RESPONSE_BOUNDS) fixed bin (35), 7 204 2 vcpu_response_bounds_size fixed bin (35), 7 205 2 meter_response_time_calls fixed bin (35), 7 206 2 meter_response_time_invalid fixed bin (35), 7 207 2 meter_response_time_overhead fixed bin (71), 7 208 2 init_wait_time fixed bin (71), /* used by wait/notify during initialization */ 7 209 2 init_wait_timeout fixed bin (71), /* notify-timeout interval during initialization */ 7 210 2 init_timeout_severity fixed bin, /* notify-timeout severity during initialization */ 7 211 2 init_timeout_recurse fixed bin, /* count of NTO recursion during initialization */ 7 212 2 max_timer_register fixed bin (71), /* max cpu burst = # cpus x pre_empt_sample_time */ 7 213 2 pre_empt_sample_time fixed bin (35), /* tuning parameter - max time between samples */ 7 214 2 governing_credit_bank fixed bin (35), /* used for limiting eligibility on governed work classes*/ 7 215 2 process_initial_quantum fixed bin (35), /* eligibility quantum first eligibility */ 7 216 2 default_procs_required bit (8) aligned, /* default mask of CPUs required */ 7 217 2 work_class_idle fixed bin (71), /* idle time due to work class restrictions */ 7 218 7 219 /* Tuning Parameters for Stack Truncation */ 7 220 7 221 2 stk_truncate bit (1) aligned, 7 222 2 stk_truncate_always bit (1) aligned, 7 223 2 stk_trunc_avg_f1 fixed bin (35, 18), 7 224 2 stk_trunc_avg_f2 fixed bin (35, 18), 7 225 2 lock_error_severity fixed bin, /* syserr severity */ 7 226 7 227 2 gv_integration fixed bin (35), /* Integration interval for governing */ 7 228 2 gv_integration_set bit (1) aligned, /* ON => gv_integration set by ctp */ 7 229 2 pauses fixed bin (35), /* Calls to pause (reschedule) */ 7 230 2 volmap_polling_time fixed bin (71), 7 231 2 next_ring0_timer fixed bin (71), /* next time that ring 0 timer goes off */ 7 232 2 realtime_io_priority_switch fixed bin, /* 0 => give I/O interrupt wakeups realtime priotiry */ 7 233 2 realtime_io_deadline fixed bin (35), /* Delta to clock for I/O realtime deadline */ 7 234 2 realtime_io_quantum fixed bin (35), /* Quantum for I/O realtime burst */ 7 235 2 realtime_priorities fixed bin (35), /* Count for metering */ 7 236 2 relinquishes fixed bin (35), /* Calls to relinquish_priority */ 7 237 2 abort_ips_mask bit (36) aligned, /* IPS mask for tc_util$check_abort */ 7 238 7 239 /* 500 octal */ 7 240 7 241 2 uid_array (0:15) bit (36) aligned, /* array from which a uid is chosen (randomly) */ 7 242 2 pad5 (176) fixed bin (35), /* room for expansion compatibly */ 7 243 7 244 /* 1000 octal */ 7 245 7 246 2 pad7 (64) fixed bin (35), 7 247 7 248 /* 1100 octal */ 7 249 7 250 2 pad6 (8) fixed bin (35), 7 251 2 work_class_table aligned, /* array of per workclass information */ 7 252 3 wcte (0:16) aligned like wct_entry, 7 253 7 254 /* 3000 octal */ 7 255 7 256 2 apt fixed bin; 7 257 7 258 dcl wctep ptr; 7 259 7 260 dcl 1 wct_entry aligned based (wctep), /* Work class entry */ 7 261 2 thread unaligned, /* Ready list */ 7 262 3 fp bit (18), /* Head of ready list */ 7 263 3 bp bit (18), /* Tail of ready list */ 7 264 2 flags unaligned, 7 265 3 mnbz bit (1), /* Sentinel bit must not be zero. */ 7 266 3 defined bit (1), 7 267 3 io_priority bit (1), 7 268 3 governed bit (1), 7 269 3 interactive_q bit (1), 7 270 3 pad bit (31), 7 271 2 credits fixed bin (35), /* Current worthiness of group */ 7 272 2 minf fixed bin (35), /* min fraction of cpu */ 7 273 2 pin_weight fixed bin (35), /* number of cycles to pin pages */ 7 274 2 eligibilities fixed bin (35), /* Count of eligibilities awarded */ 7 275 2 cpu_sum fixed bin (71), /* CPU used by members */ 7 276 2 resp1 fixed bin (71), 7 277 2 resp2 fixed bin (71), 7 278 2 quantum1 fixed bin (35), 7 279 2 quantum2 fixed bin (35), 7 280 2 rmeter1 fixed bin (71), 7 281 2 rmeter2 fixed bin (71), 7 282 2 rcount1 fixed bin (35), 7 283 2 rcount2 fixed bin (35), 7 284 2 realtime fixed bin (35), 7 285 2 purging fixed bin (35), 7 286 2 maxel fixed bin (35), 7 287 2 nel fixed bin (35), 7 288 2 number_thinks fixed bin (35), /* number times process entered "think" state */ 7 289 2 number_queues fixed bin (35), /* number times process entered "queued" state */ 7 290 2 total_think_time fixed bin (71), 7 291 2 total_queue_time fixed bin (71), 7 292 7 293 /* The next three arrays correspond to the array vcpu_response_bounds */ 7 294 7 295 2 number_processing (VCPU_RESPONSE_BOUNDS+1) fixed bin (35), /* number times entered "processing" state */ 7 296 2 total_processing_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 7 297 2 total_vcpu_time (VCPU_RESPONSE_BOUNDS+1) fixed bin (71), 7 298 2 maxf fixed bin (35), /* maximum fraction of cpu time */ 7 299 2 governing_credits fixed bin (35), /* for limiting cpu resources */ 7 300 2 pad1 (4) fixed bin (35); 7 301 7 302 7 303 dcl 1 based_sentinel aligned based, /* format of pxss-style sentinel */ 7 304 2 fp bit (18) unal, 7 305 2 bp bit (18) unal, 7 306 2 sentinel bit (36) aligned; 7 307 7 308 dcl VCPU_RESPONSE_BOUNDS fixed bin init (3) int static options (constant); 7 309 7 310 /* END INCLUDE FILE tcm.incl.pl1 */ 1018 8 1 /* Begin include file hc_lock.incl.pl1 BIM 2/82 */ 8 2 /* Replaced by hc_fast_lock.incl.pl1 RSC 11/84 because name of structure 8 3* encourages name conflicts. 8 4* USE HC_FAST_LOCK INSTEAD! 8 5**/ 8 6 8 7 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 8 8 8 9 /* format: style3 */ 8 10 8 11 declare lock_ptr pointer; 8 12 declare 1 lock aligned based (lock_ptr), 8 13 2 pid bit (36) aligned, /* holder of lock */ 8 14 2 event bit (36) aligned, /* event associated with lock */ 8 15 2 flags aligned, 8 16 3 notify_sw bit (1) unaligned, 8 17 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 8 18 8 19 /* End include file hc_lock.incl.pl1 */ 1019 1020 end write_notify_test; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/87 1305.0 write_notify_test.pl1 >special_ldd>install>MR12.1-1064>write_notify_test.pl1 1012 1 04/29/76 1104.2 kst_attributes.incl.pl1 >ldd>include>kst_attributes.incl.pl1 1013 2 01/06/85 1422.2 apte.incl.pl1 >ldd>include>apte.incl.pl1 1014 3 10/12/83 0943.5 scs.incl.pl1 >ldd>include>scs.incl.pl1 1015 4 01/30/85 1523.9 sst.incl.pl1 >ldd>include>sst.incl.pl1 1016 5 09/14/76 0759.8 sdw.incl.pl1 >ldd>include>sdw.incl.pl1 1017 6 05/03/78 1422.1 ptw.incl.pl1 >ldd>include>ptw.incl.pl1 1018 7 01/30/85 1523.9 tcm.incl.pl1 >ldd>include>tcm.incl.pl1 1019 8 01/06/85 1422.1 hc_lock.incl.pl1 >ldd>include>hc_lock.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. ADD 1 based fixed bin(35,0) array level 2 dcl 133 set ref 585* 990* AF_sw 000140 automatic bit(1) initial unaligned dcl 80 set ref 80* 196* 200* 245 316 369 476 574 611 627 639 643 650 876 1003 BAD_CPU 000364 automatic char(1) initial array unaligned dcl 124 set ref 124* 124* 124* 124* 124* 124* 124* 124* 124* 593 598* 617* 631* 639* 650* 652* BAD_MEM 000362 automatic char(1) initial array unaligned dcl 123 set ref 123* 123* 123* 123* 123* 602 607* 623* 635* 639* 643* 645* CPU1 based char(1) array level 2 packed unaligned dcl 133 set ref 585* 980* CPU2 0(09) based char(1) array level 2 packed unaligned dcl 133 set ref 585* 983* CPU_TAGS 000006 constant char(16) initial unaligned dcl 147 ref 277 493 509 DPS8M constant fixed bin(2,0) initial unsigned dcl 103 ref 288 385 ERRCPU 0(18) based char(1) array level 2 packed unaligned dcl 133 set ref 585* 593 598 986* 994* HAD_ERROR 000170 automatic bit(1) initial unaligned dcl 91 set ref 91* 573 696* MEM 0(27) based char(1) array level 2 packed unaligned dcl 133 set ref 585* 602 607 989* NEXT_READ_LABEL 000100 automatic label variable dcl 57 set ref 705 797* PATTERN 000000 constant structure array level 1 unaligned dcl 154 P_null 000572 automatic pointer initial dcl 795 set ref 795* Q1 000550 automatic float bin(27) dcl 730 set ref 765* 767* Q2 000551 automatic float bin(27) dcl 731 set ref 766* 767* R1 000552 automatic float bin(27) dcl 732 set ref 763* 767* R2 000553 automatic float bin(27) dcl 733 set ref 764* 767* VCPU_RESPONSE_BOUNDS constant fixed bin(17,0) initial dcl 7-308 ref 127 127 127 736 736 736 750 751 751 751 751 751 760 760 760 760 762 762 762 762 763 763 763 763 764 764 764 764 765 765 765 765 766 766 766 766 acc_var 000342 automatic entry variable dcl 114 set ref 225* 227* active_fnc_err_ 000016 constant entry external dcl 163 ref 197 add 000241 automatic bit(18) level 2 in structure "last_ptw" packed unaligned dcl 100 in procedure "write_notify_test" set ref 968 add 000240 automatic bit(18) level 2 in structure "data_ptw" packed unaligned dcl 99 in procedure "write_notify_test" set ref 835 968 add 000236 automatic bit(24) level 2 in structure "data_sdw" packed unaligned dcl 98 in procedure "write_notify_test" set ref 859 add_type 0(18) 000240 automatic bit(4) level 2 packed unaligned dcl 99 set ref 830 963 addr builtin function dcl 148 ref 231 231 236 236 248 248 255 255 466 466 736 736 750 751 751 853 853 859 859 address_lines 000354 automatic bit(36) unaligned dcl 120 set ref 534* 842* 842 924* 935* 935 943 943 946* akst 000473 automatic structure level 1 dcl 143 set ref 463* 466 466 apte based structure level 1 dcl 2-7 ref 236 236 aptep automatic pointer dcl 2-5 ref 236 236 arg based char unaligned dcl 132 set ref 276 277 278* 281 315 315 319 319 326* 333 333 340* 347 347 349 349 357* 368 373* 375* arg_no 000143 automatic fixed bin(17,0) initial dcl 82 set ref 82* 274* 275* 320* 320 321* 334* 334 335* 350* 350 351* argl 000136 automatic fixed bin(21,0) dcl 79 set ref 275* 276 277 278 278 281 315 315 319 319 321* 326 326 333 333 335* 340 340 347 347 349 349 351* 357 357 368 373 373 375 375 argp 000132 automatic pointer dcl 78 set ref 275* 276 277 278 281 315 315 319 319 321* 326 333 333 335* 340 347 347 349 349 351* 357 368 373 375 atptw based structure level 1 dcl 6-35 bad_addr 000654 automatic bit(24) unaligned dcl 952 set ref 978* 991 994* bad_addr_bin 000656 automatic fixed bin(35,0) dcl 954 set ref 991* 992 bad_cpu 000356 automatic fixed bin(17,0) dcl 121 set ref 580* 592 597* 597 598 613 616 627 630 634 639 642 649 bad_mem 000655 automatic char(1) unaligned dcl 953 set ref 977* 989 994* bad_scu 000357 automatic fixed bin(17,0) dcl 121 set ref 581* 601 606* 606 607 620 622 627 639 642 649 base 0(18) 000242 automatic fixed bin(17,0) array level 2 packed unaligned dcl 101 set ref 838 839 928* 928 933 933 992 based_sentinel based structure level 1 dcl 7-303 baseno builtin function dcl 148 ref 466 466 853 bin builtin function dcl 148 ref 448 835 853 859 991 bit_bucket 000166 automatic bit(36) unaligned dcl 89 set ref 787* check_cpu_string 000176 automatic varying char(8) initial dcl 92 set ref 92* 281* 285 cleanup 000104 stack reference condition dcl 60 ref 209 clock builtin function dcl 148 ref 960 960 code 000167 automatic fixed bin(35,0) initial dcl 90 set ref 90* 194* 195 199 204* 231* 232 236* 237 248* 250 251* 255* 257 258* 275* 321* 322 323* 326* 327 335* 336 337* 340* 341 351* 352 353* 357* 358 428* 431 431 431* 433 434* 442* 444 445* 453* 460* 466* 468 469* 566* 567* 662* 667* 668* 671* 675* 679* 715* 716 717* 736* 738 749* 751* 753 772* 818* 819 820* 853* 854 855* 859* 860 861* com_err_ 000014 constant entry external dcl 163 ref 201 204 complain 000476 automatic entry variable dcl 162 set ref 197* 201* 219 251 258 278 304 310 323 328 337 342 353 360 373 375 400 422 434 445 469 717 739 754 820 847 855 861 cpu 000144 automatic fixed bin(17,0) initial dcl 82 set ref 82* 491* 492 493 493 495 495 497* 507* 508 509 509 511 511 513* 798 816 816* 817* 818 986 1005 1005 cpu_bits 1 000312 automatic bit(8) array level 3 dcl 105 set ref 492* 493* 508* 509* 818* cpu_st_ind 000161 automatic fixed bin(17,0) initial dcl 82 set ref 82* 285* 286 cpu_type 0(07) 000302 automatic fixed bin(2,0) array level 2 packed unsigned unaligned dcl 102 set ref 288 385 cpus_to_test 000156 automatic fixed bin(17,0) initial dcl 82 set ref 82* 405* 413* 416* 421 488 501 cu_$af_return_arg 000022 constant entry external dcl 165 ref 194 cu_$arg_ptr 000020 constant entry external dcl 164 ref 275 321 335 351 cv_dec_check_ 000012 constant entry external dcl 161 ref 326 340 357 data 000000 constant bit(36) initial array level 2 dcl 154 ref 783 data_page 000211 automatic fixed bin(17,0) dcl 96 set ref 835* 836 836 838 839 842 847* 974 data_ptw 000240 automatic structure level 1 dcl 99 set ref 834 859 859 data_sdw 000236 automatic structure level 1 dcl 98 set ref 853 853 data_seg based bit(36) array dcl 141 set ref 784 787 788* 802 804 date_time_ 000102 constant entry external dcl 956 ref 960 deact_loop_cnt 000157 automatic fixed bin(17,0) initial dcl 82 set ref 82* 829* 829 871* 904 904 911 911 default_flag 000121 automatic bit(1) initial unaligned dcl 71 set ref 71* 241* 566 667 default_procs_required 1(10) 000370 automatic bit(1) level 3 packed unaligned dcl 125 set ref 241 defined based bit(1) array level 5 packed unaligned dcl 7-11 set ref 760 delete_$ptr 000024 constant entry external dcl 166 ref 662 divide builtin function dcl 148 ref 269 488 519 520 521 835 896 896 904 904 911 911 dps8_cpu 000202 automatic char(8) initial unaligned dcl 93 set ref 93* 291* 387* 404 410 417 477 477 495 511 dseg_ptr 000130 automatic pointer initial dcl 77 set ref 77* 193* 428* 466 466 662 662* 715* 784 787 788 802 804 853 error_count 000010 internal static fixed bin(17,0) dcl 64 set ref 472* 522* 584 610 695* 695 980 983 986 989 990 994 error_data based structure array level 1 unaligned dcl 133 error_data_ptr 000352 automatic pointer initial dcl 119 set ref 119* 193* 460* 585 585 585 585 585 593 598 602 607 670 671* 672* 980 983 986 989 990 994 error_table_$namedup 000072 external static fixed bin(35,0) dcl 187 ref 431 error_table_$not_act_fnc 000070 external static fixed bin(35,0) dcl 186 ref 199 error_table_$segknown 000074 external static fixed bin(35,0) dcl 188 ref 431 explicit_deactivate_ok 1(14) 000473 automatic bit(1) level 3 in structure "akst" packed unaligned dcl 143 in procedure "write_notify_test" set ref 464* explicit_deactivate_ok 0(05) 000473 automatic bit(1) level 3 in structure "akst" packed unaligned dcl 143 in procedure "write_notify_test" set ref 464* fixed builtin function dcl 148 ref 466 466 735 750 flags based structure array level 4 in structure "tcm" packed unaligned dcl 7-11 in procedure "write_notify_test" flags 1 000370 automatic structure level 2 in structure "my_apte" packed unaligned dcl 125 in procedure "write_notify_test" foo_len 000126 automatic fixed bin(21,0) dcl 76 set ref 631* 635* 639* 643* 650* 964* 969* get_pdir_ 000026 constant entry external dcl 167 ref 428 get_temp_segment_ 000030 constant entry external dcl 168 ref 453 460 749 hbound builtin function dcl 148 ref 284 383 784 802 hcs_$make_seg 000032 constant entry external dcl 169 ref 428 hcs_$set_procs_required 000034 constant entry external dcl 170 ref 566 567 667 668 818 high_wc 000341 automatic fixed bin(17,0) dcl 113 set ref 758* 761 761* hphcs_$set_process_work_class 000036 constant entry external dcl 171 ref 227 i 000145 automatic fixed bin(17,0) initial dcl 82 set ref 82* 265* 266 266* 284* 285 287 288 291 298 304* 383* 384 385 387 393* 489* 490 492 493 493 495 495 497* 503* 504 508 509 509 511 511 513 584* 585 585 585 585 585 593 598 602 607* 759* 760 761 762 763 764 765 766 767* 882* 883 884 885 885* 889* 890 891* 895* 896 896 896* 901* 902 903 904 904* 925* 926 928 928 928 928 928 933 933 933* inc_start 000337 automatic fixed bin(17,0) initial dcl 111 set ref 111* 541* 550* 550 784 802 inc_time 000340 automatic fixed bin(17,0) dcl 112 set ref 521* 550 index builtin function dcl 148 ref 493 495 509 511 info 2 000242 automatic structure array level 2 dcl 101 ioa_ 000040 constant entry external dcl 172 ref 480 482 575 582 585 612 619 625 645 652 757 878 914 928 931 936 943 994 998 1005 1007 ioa_$ioa_switch 000042 constant entry external dcl 173 ref 743 767 ioa_$nnl 000044 constant entry external dcl 174 ref 477 613 617 620 623 881 885 888 891 894 896 900 904 908 911 ioa_$rsnnl 000046 constant entry external dcl 175 ref 631 635 639 643 650 964 969 iox_$error_output 000050 external static pointer dcl 176 set ref 743* 767* is_dps8 2 000312 automatic bit(1) array level 3 dcl 105 set ref 495* 497* 511* 513* 798 j 000146 automatic fixed bin(17,0) initial dcl 82 set ref 82* 592* 593* 601* 602* 616* 617* 622* 623* 630* 631* 634* 635* 933* 934 935 936* 936 936 936* kst_attributes based structure level 1 dcl 1-5 l68_cpu 000204 automatic char(8) initial unaligned dcl 93 set ref 93* 298* 393* 410 412* 412 480 480 last_ptw 000241 automatic structure level 1 dcl 100 set ref 834* linkage_error 000112 stack reference condition dcl 60 ref 218 228 lock based structure level 1 dcl 8-12 long_sw 000141 automatic bit(1) initial unaligned dcl 81 set ref 81* 317* 347* 582 585 611 748 927 936 993 loop 000147 automatic fixed bin(17,0) initial dcl 82 set ref 82* 547* 550* 998* maj_loop_max 000162 automatic fixed bin(17,0) initial dcl 85 set ref 85* 269* 270 270* 326* 327 519 537 maj_max_err_count 000164 automatic fixed bin(17,0) dcl 87 set ref 519* 703 major_loop_error 000123 automatic fixed bin(17,0) dcl 73 set ref 532* 693* 693 703 mem_data 000242 automatic structure array level 1 dcl 101 set ref 255 255 255 255 mem_meters 000214 automatic fixed bin(71,0) array dcl 97 set ref 831* 831 840* 840 870* 877 903 904 904 911 911 911 mem_offset 000657 automatic fixed bin(35,0) dcl 954 set ref 992* meter_idx 000212 automatic fixed bin(17,0) dcl 96 set ref 837* 838 839 839 840 840* 977 992 meter_sw 000172 automatic bit(1) initial unaligned dcl 91 set ref 91* 370* 555 856* 862* mod builtin function dcl 148 ref 493 501 509 my_apte 000370 automatic structure level 1 dcl 125 set ref 236 236 my_wce 000472 automatic structure level 1 unaligned dcl 127 set ref 736 736 736 n_args 000151 automatic fixed bin(17,0) initial dcl 82 set ref 82* 194* 274 need_page_meter 000174 automatic bit(1) initial unaligned dcl 91 set ref 91* 720* 801 841* need_revert_cpu 000175 automatic bit(1) initial unaligned dcl 91 set ref 91* 562 568* 666 823* next_idx 1 000000 constant fixed bin(17,0) initial array level 2 dcl 154 ref 700 810 no_luck_reason 000670 automatic char(32) unaligned dcl 959 set ref 964* 969* 1007* null builtin function dcl 148 ref 77 119 193 662 670 672 674 676 678 680 773 795 869 916 number_of_pairs 000336 automatic fixed bin(17,0) dcl 110 set ref 488* 489 502* 502 503 531 online 2 000242 automatic bit(1) array level 3 in structure "mem_data" packed unaligned dcl 101 in procedure "write_notify_test" set ref 266 883 890 896 902 926 online 000302 automatic bit(1) array level 2 in structure "processor_data" packed unaligned dcl 102 in procedure "write_notify_test" set ref 287 384 orig_cpus 000120 automatic bit(8) dcl 70 set ref 242* 567* 668* page_add_lines 000355 automatic bit(36) unaligned dcl 120 set ref 533* 803* 803 943 943 946* pages_ptr 000350 automatic pointer dcl 118 set ref 193* 453* 678 679* 680* 836 836 869 869 916 934 936 pages_used based fixed bin(35,0) array dcl 117 set ref 836* 836 869* 934 936* pair 000312 automatic char(2) array level 2 packed unaligned dcl 105 set ref 490* 493 495 504* 509 511 878* 980 983 986 998* 1005 1005 pair_idx 000160 automatic fixed bin(17,0) initial dcl 82 set ref 82* 487* 490 499* 499 504 531* 798 818 878 980 983 986 998 1005 1005 pair_sets 000312 automatic structure array level 1 unaligned dcl 105 pat_idx 000360 automatic fixed bin(17,0) initial dcl 122 set ref 122* 542* 700* 700 783 810* 810 pattern 000210 automatic bit(36) dcl 95 set ref 783* 788 804 phcs_$deactivate 000052 constant entry external dcl 177 ref 715 phcs_$set_kst_attributes 000054 constant entry external dcl 178 ref 225 466 phcs_ok 000171 automatic bit(1) initial unaligned dcl 91 set ref 91* 219* 226* processor_data 000302 automatic structure array level 1 dcl 102 set ref 248 248 248 248 284 383 procs_required 63 000370 automatic bit(8) level 2 packed unaligned dcl 125 set ref 242 ptw based structure level 1 dcl 6-5 ptwbase 25 based fixed bin(24,0) level 2 dcl 4-9 ref 448 quantum1 based fixed bin(35,0) array level 4 dcl 7-11 set ref 765 quantum2 based fixed bin(35,0) array level 4 dcl 7-11 set ref 766 r0_aptep 000470 automatic pointer dcl 126 set ref 231 231 236* rd 000152 automatic fixed bin(17,0) initial dcl 82 set ref 82* 802* 803 804* 974 998* real_time_wc 000472 automatic bit(1) unaligned dcl 128 set ref 745* 747* 748 realtime 24 000472 automatic fixed bin(35,0) level 2 in structure "my_wce" dcl 127 in procedure "write_notify_test" set ref 742 realtime based fixed bin(35,0) array level 4 in structure "tcm" dcl 7-11 in procedure "write_notify_test" set ref 762 rel builtin function dcl 148 ref 750 release_temp_segment_ 000056 constant entry external dcl 179 ref 671 675 679 772 resp1 based fixed bin(71,0) array level 4 dcl 7-11 set ref 763 resp2 based fixed bin(71,0) array level 4 dcl 7-11 set ref 764 ret based varying char dcl 131 set ref 574* 629* 631* 631* 635* 635* 639* 643* 650* retL 000137 automatic fixed bin(21,0) dcl 79 set ref 194* 574 629 631 631 635 635 639 643 650 retP 000134 automatic pointer dcl 78 set ref 194* 574 629 631 631 635 635 639 643 650 ring_zero_peek_ 000060 constant entry external dcl 180 ref 236 ring_zero_peek_$by_definition 000064 constant entry external dcl 182 ref 231 248 255 ring_zero_peek_$by_name 000062 constant entry external dcl 181 ref 442 736 751 853 859 same_bad 000142 automatic bit(1) initial unaligned dcl 81 set ref 81* 591* 593* 596 600* 602* 605 scs$controller_data 000076 external static structure array level 1 dcl 3-6 scs$processor_data 000100 external static structure array level 1 dcl 3-35 sdw based structure level 1 dcl 5-5 search builtin function dcl 148 ref 285 set 000473 automatic structure level 2 in structure "akst" packed unaligned dcl 143 in procedure "write_notify_test" set 1 000312 automatic structure array level 2 in structure "pair_sets" unaligned dcl 105 in procedure "write_notify_test" size builtin function dcl 148 in procedure "write_notify_test" ref 236 236 248 248 255 255 442 442 736 751 size 000242 automatic fixed bin(17,0) array level 2 in structure "mem_data" packed unaligned dcl 101 in procedure "write_notify_test" set ref 266 839 884 891* 896 896 928 933 sst based structure level 1 dcl 4-9 ref 441 442 442 449 sstp 000502 automatic pointer dcl 4-7 set ref 441* 442* 442 442 448 449 start_of_sst 000011 internal static fixed bin(24,0) initial dcl 65 set ref 440 448* 859 sub_loop_error 000124 automatic fixed bin(17,0) dcl 74 set ref 544* 694* 694 698 sub_loop_max 000163 automatic fixed bin(17,0) initial dcl 86 set ref 86* 340* 341 520 521 547 sub_max_err_count 000165 automatic fixed bin(17,0) dcl 88 set ref 520* 698 substr builtin function dcl 148 set ref 276 291* 298* 387* 393* 410 410 412 490 493* 493 495 504 504 509* 509 511 885 885 928 928 936 936 943 943 943 943 974* 974 974 977 978 980 983 986 1005 1005 tags 000004 constant char(1) initial array unaligned dcl 151 set ref 285 291 298 304* 387 393 tcm based structure level 1 dcl 7-11 tcmp 000504 automatic pointer dcl 7-9 set ref 193* 674 675* 676* 749* 750 751 751 760 762 763 764 765 766 772* 773* temp_mem_add 000666 automatic fixed bin(35,0) dcl 957 set ref 973* 974 978 990 test_cpu_string 000206 automatic char(8) initial unaligned dcl 93 set ref 93* 404* 410* 417* 490 504 504 testing_sw 000173 automatic bit(1) initial unaligned dcl 91 set ref 91* 539* 571 the_date_time 000660 automatic char(24) unaligned dcl 955 set ref 960* 994* 1005* times 000150 automatic fixed bin(17,0) initial dcl 82 set ref 82* 537* 998* total_dps8 000154 automatic fixed bin(17,0) initial dcl 82 set ref 82* 290* 290 291 309 382 386* 386 387 399 403 405 408 416 477* 477 total_l68 000153 automatic fixed bin(17,0) initial dcl 82 set ref 82* 295 297* 298 390 392* 393 406* 409 480 total_mem 000122 automatic fixed bin(17,0) dcl 72 set ref 264* 266* 266 269 869 880* 884* 884 896 896 translate builtin function dcl 148 ref 281 477 477 480 480 980 983 986 unique_chars_ 000066 constant entry external dcl 183 ref 428 unspec builtin function dcl 148 set ref 463* 803 842 877 935 936 936 974 974 974 978 value 1(09) 000473 automatic structure level 2 packed unaligned dcl 143 verify builtin function dcl 148 ref 277 wct_entry based structure level 1 dcl 7-260 ref 751 wct_index 21 000370 automatic bit(18) level 2 packed unaligned dcl 125 set ref 735 wct_offset 000346 automatic fixed bin(17,0) dcl 116 set ref 735* 736 750* 751 wcte based structure array level 3 dcl 7-11 wctep automatic pointer dcl 7-258 ref 751 who_ami 000012 constant char(18) initial unaligned dcl 104 set ref 204* 219* 251* 258* 278* 304* 310* 323* 328* 337* 342* 353* 360* 373* 375* 400* 422* 434* 445* 453* 460* 469* 575* 671* 675* 679* 739* 749* 754* 772* 820* 847* win 000667 automatic bit(1) unaligned dcl 958 set ref 961* 979* word_inc 000125 automatic fixed bin(17,0) initial dcl 75 set ref 75* 357* 359 359 784 802 work_class_table based structure level 2 dcl 7-11 set ref 750 751 751 wrt 000155 automatic fixed bin(17,0) initial dcl 82 set ref 82* 784* 787 788* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BULK_PORT internal static fixed bin(17,0) initial dcl 3-176 CPU_PORT internal static fixed bin(17,0) initial dcl 3-176 IOM_PORT internal static fixed bin(17,0) initial dcl 3-176 atptwa based structure array level 1 dcl 6-40 kstap automatic pointer dcl 1-3 lock_ptr automatic pointer dcl 8-11 mptw based structure level 1 dcl 6-27 mptwa based structure array level 1 dcl 6-31 ptp automatic pointer dcl 6-3 ptwa based structure array level 1 dcl 6-23 ptwa_bits based bit(36) array dcl 6-25 scs$bos_processor_tag external static fixed bin(3,0) dcl 3-137 scs$bos_restart_flags external static bit(8) dcl 3-135 scs$cam_pair external static fixed bin(71,0) dcl 3-103 scs$cam_wait external static bit(8) dcl 3-104 scs$cfg_data external static fixed bin(71,0) array dcl 3-150 scs$cfg_data_save external static fixed bin(71,0) dcl 3-152 scs$connect_lock external static bit(36) dcl 3-132 scs$controller_config_size external static fixed bin(14,0) array dcl 3-164 scs$cow external static structure array level 1 dcl 3-65 scs$cow_ptrs external static structure array level 1 dcl 3-77 scs$cpu_test_mask external static bit(72) dcl 3-96 scs$cpu_test_pattern external static bit(36) dcl 3-99 scs$cycle_priority_template external static bit(7) dcl 3-172 scs$expanded_ports external static bit(1) array unaligned dcl 3-154 scs$fast_cam_pending external static bit(36) array dcl 3-140 scs$faults_initialized external static bit(1) dcl 3-138 scs$idle_aptep external static pointer array unaligned dcl 3-130 scs$interrupt_controller external static fixed bin(3,0) dcl 3-141 scs$mask_ptr external static pointer array unaligned dcl 3-110 scs$nprocessors external static fixed bin(17,0) dcl 3-136 scs$number_of_masks external static fixed bin(17,0) dcl 3-97 scs$open_level external static bit(72) dcl 3-94 scs$port_addressing_word external static bit(3) array dcl 3-148 scs$port_data external static structure array level 1 dcl 3-56 scs$processor external static bit(8) dcl 3-143 scs$processor_data_switch_value external static bit(36) dcl 3-162 scs$processor_start_int_no external static fixed bin(5,0) dcl 3-142 scs$processor_start_mask external static bit(72) dcl 3-95 scs$processor_start_pattern external static bit(36) dcl 3-98 scs$processor_start_wait external static bit(8) dcl 3-144 scs$processor_switch_compare external static bit(36) array dcl 3-159 scs$processor_switch_data external static bit(36) array dcl 3-157 scs$processor_switch_mask external static bit(36) array dcl 3-160 scs$processor_switch_template external static bit(36) array dcl 3-158 scs$processor_test_data external static structure level 1 dcl 3-114 scs$read_mask external static bit(36) array dcl 3-109 scs$reconfig_general_cow external static structure level 1 dcl 3-82 scs$reconfig_lock external static bit(36) dcl 3-133 scs$reconfig_locker_id external static char(32) dcl 3-167 scs$scas_page_table external static bit(36) array dcl 3-169 scs$set_cycle_switches external static bit(1) dcl 3-173 scs$set_mask external static bit(36) array dcl 3-108 scs$sys_level external static bit(72) dcl 3-93 scs$sys_trouble_pending external static bit(1) dcl 3-139 scs$trouble_dbrs automatic fixed bin(71,0) array dcl 3-146 scs$trouble_flags external static bit(8) dcl 3-134 sdwa based structure array level 1 dcl 5-24 sdwp automatic pointer dcl 5-3 sst_seg$ external static fixed bin(17,0) dcl 4-6 NAMES DECLARED BY EXPLICIT CONTEXT. NO_ACC_RET 005456 constant label dcl 662 ref 222 279 311 324 329 338 343 355 363 374 377 401 423 435 RETURN 004266 constant label dcl 562 ref 210 740 755 821 bad_af_arg 003043 constant label dcl 375 ref 316 369 bad_word_inc 002742 constant label dcl 360 ref 358 count_error 005650 constant entry internal dcl 688 ref 805 deactivate_the_seg 005675 constant entry internal dcl 710 ref 538 display_fault_data 010227 constant entry internal dcl 949 ref 697 find_real_time_class 005735 constant entry internal dcl 723 ref 245 maj_loop_err_exit 004261 constant label dcl 555 ref 703 make_ds 003263 constant label dcl 428 meter_the_page 006703 constant entry internal dcl 827 ref 801 next_loc 006621 constant label dcl 807 ref 797 no_luck 010571 constant label dcl 1003 ref 966 971 page_peek 007116 constant entry internal dcl 851 ref 828 962 print_meters 007335 constant entry internal dcl 874 ref 555 print_page_meters 007767 constant entry internal dcl 922 ref 917 read 006551 constant entry internal dcl 792 ref 549 reset_meters 007275 constant entry internal dcl 867 ref 456 919 set_cpu 006631 constant entry internal dcl 813 ref 540 548 sub_loop_err_exit 004257 constant label dcl 553 ref 701 write 006515 constant entry internal dcl 779 ref 543 551 write_notify_test 001103 constant entry external dcl 19 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12242 12346 11665 12252 Length 13006 11665 104 423 355 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME write_notify_test 900 external procedure is an external procedure. on unit on line 209 64 on unit on unit on line 218 98 on unit count_error internal procedure shares stack frame of external procedure write_notify_test. deactivate_the_seg internal procedure shares stack frame of external procedure write_notify_test. find_real_time_class internal procedure shares stack frame of external procedure write_notify_test. write internal procedure shares stack frame of external procedure write_notify_test. read internal procedure shares stack frame of external procedure write_notify_test. set_cpu internal procedure shares stack frame of external procedure write_notify_test. meter_the_page internal procedure shares stack frame of external procedure write_notify_test. page_peek internal procedure shares stack frame of external procedure write_notify_test. reset_meters internal procedure shares stack frame of external procedure write_notify_test. print_meters internal procedure shares stack frame of external procedure write_notify_test. print_page_meters internal procedure shares stack frame of external procedure write_notify_test. display_fault_data internal procedure shares stack frame of external procedure write_notify_test. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 error_count write_notify_test 000011 start_of_sst write_notify_test STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME write_notify_test 000100 NEXT_READ_LABEL write_notify_test 000120 orig_cpus write_notify_test 000121 default_flag write_notify_test 000122 total_mem write_notify_test 000123 major_loop_error write_notify_test 000124 sub_loop_error write_notify_test 000125 word_inc write_notify_test 000126 foo_len write_notify_test 000130 dseg_ptr write_notify_test 000132 argp write_notify_test 000134 retP write_notify_test 000136 argl write_notify_test 000137 retL write_notify_test 000140 AF_sw write_notify_test 000141 long_sw write_notify_test 000142 same_bad write_notify_test 000143 arg_no write_notify_test 000144 cpu write_notify_test 000145 i write_notify_test 000146 j write_notify_test 000147 loop write_notify_test 000150 times write_notify_test 000151 n_args write_notify_test 000152 rd write_notify_test 000153 total_l68 write_notify_test 000154 total_dps8 write_notify_test 000155 wrt write_notify_test 000156 cpus_to_test write_notify_test 000157 deact_loop_cnt write_notify_test 000160 pair_idx write_notify_test 000161 cpu_st_ind write_notify_test 000162 maj_loop_max write_notify_test 000163 sub_loop_max write_notify_test 000164 maj_max_err_count write_notify_test 000165 sub_max_err_count write_notify_test 000166 bit_bucket write_notify_test 000167 code write_notify_test 000170 HAD_ERROR write_notify_test 000171 phcs_ok write_notify_test 000172 meter_sw write_notify_test 000173 testing_sw write_notify_test 000174 need_page_meter write_notify_test 000175 need_revert_cpu write_notify_test 000176 check_cpu_string write_notify_test 000202 dps8_cpu write_notify_test 000204 l68_cpu write_notify_test 000206 test_cpu_string write_notify_test 000210 pattern write_notify_test 000211 data_page write_notify_test 000212 meter_idx write_notify_test 000214 mem_meters write_notify_test 000236 data_sdw write_notify_test 000240 data_ptw write_notify_test 000241 last_ptw write_notify_test 000242 mem_data write_notify_test 000302 processor_data write_notify_test 000312 pair_sets write_notify_test 000336 number_of_pairs write_notify_test 000337 inc_start write_notify_test 000340 inc_time write_notify_test 000341 high_wc write_notify_test 000342 acc_var write_notify_test 000346 wct_offset write_notify_test 000350 pages_ptr write_notify_test 000352 error_data_ptr write_notify_test 000354 address_lines write_notify_test 000355 page_add_lines write_notify_test 000356 bad_cpu write_notify_test 000357 bad_scu write_notify_test 000360 pat_idx write_notify_test 000362 BAD_MEM write_notify_test 000364 BAD_CPU write_notify_test 000370 my_apte write_notify_test 000470 r0_aptep write_notify_test 000472 my_wce write_notify_test 000472 real_time_wc write_notify_test 000473 akst write_notify_test 000476 complain write_notify_test 000502 sstp write_notify_test 000504 tcmp write_notify_test 000550 Q1 find_real_time_class 000551 Q2 find_real_time_class 000552 R1 find_real_time_class 000553 R2 find_real_time_class 000572 P_null read 000654 bad_addr display_fault_data 000655 bad_mem display_fault_data 000656 bad_addr_bin display_fault_data 000657 mem_offset display_fault_data 000660 the_date_time display_fault_data 000666 temp_mem_add display_fault_data 000667 win display_fault_data 000670 no_luck_reason display_fault_data THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ge_a alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out return_mac tra_ext_1 tra_ext_2 alloc_auto_adj mpfx2 mdfx1 enable_op shorten_stack ext_entry int_entry search_eis divide_fx1 divide_fx3 alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ cu_$af_return_arg cu_$arg_ptr cv_dec_check_ date_time_ delete_$ptr get_pdir_ get_temp_segment_ hcs_$make_seg hcs_$set_procs_required hphcs_$set_process_work_class ioa_ ioa_$ioa_switch ioa_$nnl ioa_$rsnnl phcs_$deactivate phcs_$set_kst_attributes release_temp_segment_ ring_zero_peek_ ring_zero_peek_$by_definition ring_zero_peek_$by_name unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$namedup error_table_$not_act_fnc error_table_$segknown iox_$error_output scs$controller_data scs$processor_data LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 001102 71 001110 75 001111 77 001113 80 001115 81 001116 82 001120 85 001137 86 001141 90 001143 91 001144 92 001152 93 001153 111 001157 119 001160 122 001162 123 001164 124 001217 127 001276 193 001313 194 001320 195 001334 196 001336 197 001340 198 001345 199 001346 200 001351 201 001352 202 001356 204 001357 205 001373 209 001374 210 001410 218 001413 219 001427 222 001460 225 001463 226 001470 227 001472 228 001476 231 001477 232 001544 236 001546 237 001567 241 001571 242 001575 245 001600 248 001603 250 001653 251 001655 253 001700 255 001701 257 001751 258 001753 259 001776 264 001777 265 002000 266 002005 268 002017 269 002021 270 002024 274 002027 275 002037 276 002054 277 002061 278 002074 279 002132 281 002133 284 002150 285 002155 286 002165 287 002166 288 002175 290 002202 291 002203 293 002207 295 002210 297 002212 298 002214 302 002217 304 002220 308 002254 309 002256 310 002260 311 002304 313 002305 315 002306 316 002317 317 002321 318 002323 319 002324 320 002334 321 002335 322 002352 323 002354 324 002377 326 002400 327 002425 328 002430 329 002454 331 002455 333 002456 334 002466 335 002467 336 002504 337 002506 338 002534 340 002535 341 002562 342 002565 343 002614 345 002615 347 002616 349 002630 350 002640 351 002641 352 002656 353 002660 355 002706 357 002707 358 002734 359 002736 360 002742 363 002771 367 002772 368 002773 369 002777 370 003001 371 003003 373 003004 374 003042 375 003043 377 003076 379 003077 382 003101 383 003103 384 003107 385 003113 386 003121 387 003122 388 003126 390 003127 392 003131 393 003133 397 003136 399 003140 400 003142 401 003171 403 003172 404 003174 405 003176 406 003200 407 003201 408 003202 409 003203 410 003205 412 003220 413 003224 414 003226 416 003227 417 003231 421 003233 422 003236 423 003262 428 003263 431 003356 433 003365 434 003367 435 003403 440 003404 441 003406 442 003412 444 003450 445 003452 446 003500 448 003501 449 003505 453 003507 456 003530 460 003531 463 003552 464 003555 466 003561 468 003602 469 003604 470 003627 472 003630 476 003632 477 003634 480 003673 482 003725 487 003740 488 003742 489 003745 490 003753 491 003761 492 003767 493 003776 495 004026 497 004043 498 004045 499 004047 500 004051 501 004053 502 004060 503 004061 504 004063 507 004101 508 004107 509 004116 511 004146 513 004163 514 004165 519 004167 520 004173 521 004177 522 004202 531 004204 532 004213 533 004214 534 004215 537 004216 538 004225 539 004226 540 004230 541 004231 542 004232 543 004234 544 004235 547 004236 548 004245 549 004246 550 004247 551 004254 552 004255 553 004257 555 004261 559 004264 562 004266 566 004270 567 004306 568 004317 571 004320 573 004322 574 004324 575 004340 578 004363 580 004364 581 004365 582 004366 584 004404 585 004415 591 004503 592 004504 593 004513 595 004530 596 004532 597 004534 598 004535 600 004547 601 004550 602 004557 604 004574 605 004576 606 004600 607 004601 609 004613 610 004615 611 004620 612 004624 613 004640 616 004664 617 004673 618 004713 619 004715 620 004730 622 004754 623 004763 624 005003 625 005005 627 005020 629 005035 630 005046 631 005055 633 005124 634 005126 635 005135 637 005203 638 005205 639 005206 642 005267 643 005273 645 005335 647 005362 649 005363 650 005367 652 005431 662 005456 666 005511 667 005513 668 005531 670 005542 671 005546 672 005567 674 005571 675 005575 676 005616 678 005620 679 005624 680 005645 682 005647 688 005650 693 005651 694 005652 695 005653 696 005655 697 005657 698 005660 700 005663 701 005667 703 005670 705 005673 710 005675 715 005676 716 005707 717 005711 718 005731 720 005732 721 005734 723 005735 735 005736 736 005741 738 006014 739 006016 740 006045 742 006046 743 006051 745 006071 746 006072 747 006073 748 006075 749 006102 750 006123 751 006147 753 006224 754 006226 755 006255 757 006256 758 006272 759 006273 760 006277 761 006351 762 006355 763 006365 764 006375 765 006405 766 006414 767 006423 771 006467 772 006471 773 006512 774 006514 779 006515 783 006516 784 006522 787 006540 788 006543 789 006545 790 006550 792 006551 795 006552 797 006554 798 006557 801 006570 802 006573 803 006612 804 006614 805 006620 807 006621 810 006624 811 006630 813 006631 816 006632 817 006640 818 006642 819 006661 820 006663 821 006677 823 006700 824 006702 827 006703 828 006704 829 006705 830 006706 831 006714 832 006717 834 006720 835 007015 836 007021 837 007026 838 007033 839 007043 840 007051 841 007057 842 007060 843 007062 846 007063 847 007065 848 007115 851 007116 853 007117 854 007163 855 007165 856 007204 857 007205 859 007206 860 007251 861 007253 862 007272 863 007273 865 007274 867 007275 869 007276 870 007317 871 007333 872 007334 874 007335 876 007336 877 007341 878 007345 880 007367 881 007370 882 007403 883 007407 884 007415 885 007421 887 007445 888 007447 889 007462 890 007467 891 007475 893 007520 894 007522 895 007536 896 007543 899 007602 900 007604 901 007620 902 007625 903 007632 904 007637 907 007670 908 007671 910 007713 911 007715 914 007747 916 007760 917 007764 919 007765 920 007766 922 007767 924 007770 925 007771 926 007775 927 010003 928 010005 931 010061 933 010075 934 010117 935 010121 936 010123 940 010166 942 010170 943 010172 946 010224 947 010226 949 010227 960 010230 961 010247 962 010250 963 010251 964 010256 966 010305 968 010306 969 010315 971 010344 973 010345 974 010346 977 010357 978 010364 979 010366 980 010370 983 010410 986 010424 989 010445 990 010451 991 010453 992 010456 993 010473 994 010475 998 010534 1002 010570 1003 010571 1005 010574 1007 010633 1008 010656 ----------------------------------------------------------- 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