COMPILATION LISTING OF SEGMENT poll_mpc Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 03/08/88 0936.7 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* POLL_MPC - Command to periodically poll mpc's and log the statistics they contain */ 12 /* Written March 1980 by Larry Johnson */ 13 /* Modified December 1980 by Rich Coppola to clear statistics block, and add 14* mpc registers to logged data */ 15 /* Modified May 1982 by Rich Coppola to add support for EURC */ 16 /* Modified October 1982 by C. Hornig for new PRPH TAP card. */ 17 /* Modified Dec. 1983 by Paul Farley to fix a problem with suspend/release 18* tape controller interrupt processing when more than one physical connection 19* is configured. 20* Modified June 1984 by Paul Farley to fix a problem with the command_cleanup 21* proc not exiting properly. Call programs char_mpc_ and stat_mpc_ with a ptr 22* to the MPC image. Add support for the new MSP800 (DAU). 23* Modified March 1985 by Paul Farley to double DAU config area for 64 devices 24* and correct a bug in the blocked_too_long entry (PBF). 25**/ 26 27 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 28 poll_mpc: 29 proc; 30 31 /* Parameters */ 32 33 dcl arg_event_call_info_ptr ptr; 34 35 /* Automatic */ 36 37 dcl code fixed bin (35); 38 dcl argp ptr; 39 dcl argl fixed bin; 40 dcl argno fixed bin; 41 dcl n_args fixed bin; 42 dcl more_args bit (1); 43 dcl arg_list_ptr ptr; 44 dcl output_file char (201); 45 dcl i fixed bin; 46 dcl mpc_cnt fixed bin; 47 dcl mpc_list (32) char (4); 48 dcl char8 char (8) aligned; 49 dcl 1 auto_mpc_data aligned like mpc_data automatic; 50 dcl event_message fixed bin (71); 51 dcl mpc_mem_bin (0:4095) bit (16) unal; /* mpc mem converted to binary */ 52 dcl eurc_stats (0:83) bit (16) unal; /* eurc stats converted to bin */ 53 dcl dau_data (0:759) bit (16) unal; /* DAU config and stats */ 54 dcl special_status_flag bit (1) aligned; /* on if special status valid */ 55 dcl special_status_word bit (36) aligned; 56 dcl my_event_wait_list_ptr ptr; 57 dcl 1 my_event_wait_list aligned, 58 2 n_channels fixed binary init (1), /* number of channels in wait list */ 59 2 pad bit (36), 60 2 channel_id (2) fixed binary (71); 61 62 /* Constants */ 63 64 dcl d451_stat_size fixed bin int static options (constant) init (512); 65 dcl d600_stat_size fixed bin int static options (constant) init (1024); 66 dcl tape_stat_size fixed bin int static options (constant) init (128); 67 dcl mpc_memory_size fixed bin int static options (constant) init (4096); 68 dcl name char (8) int static options (constant) init ("poll_mpc"); 69 dcl OPERATION (9) char (20) var int static options (constant) 70 init ("Attaching", "Read R/W memory", "Suspending IO (IOI)", "Suspend MPC", "Clear Dev Stats", "Release MPC", 71 "Releasing IO (IOI)", "Detaching", "Reading DAU"); 72 73 /* Static */ 74 75 dcl CMD_EXIT label int static; 76 dcl static_log_mpc_datap ptr int static init (null); 77 dcl time_int fixed bin int static init (0); 78 dcl (tape_sw, disk_sw, urp_sw, eurc_sw, dau_sw) bit (1) int static init ("0"b); 79 dcl mpc_attached bit (1) int static init ("0"b); 80 dcl stopped_io bit (1) int static init ("0"b); /* This is set if IOI suspended io */ 81 dcl mtp_suspended bit (1) int static init ("0"b); /* Set if the mpc accepted the 'suspend' command */ 82 dcl log_mpc_datap ptr int static init (null); 83 dcl log_mpc_entryp ptr int static; 84 dcl log_mpc_data_n_mpcs fixed bin int static; 85 dcl workp ptr int static; 86 dcl error_message char (128) var int static; 87 dcl (time_sw, output_file_sw, debug_sw, log_sw, off_sw, on_sw, finish_sw) bit (1) int static; 88 dcl OP fixed bin int static init (0); 89 dcl ATTACH_MPC fixed bin int static init (1); 90 dcl READ_MPC_MEM fixed bin int static init (2); 91 dcl IOI_SUS_MTP fixed bin int static init (3); 92 dcl SUS_MTP fixed bin int static init (4); 93 dcl WRITE_MPC_MEM fixed bin int static init (5); 94 dcl REL_MTP fixed bin int static init (6); 95 dcl IOI_REL_MTP fixed bin int static init (7); 96 dcl DETACH_MPC fixed bin int static init (8); 97 dcl READ_DAU fixed bin int static init (9); 98 dcl ATT_ERR fixed bin int static init (1); /* Couldn' attach */ 99 dcl IOI_WRKSP fixed bin int static init (2); /* Couldn't get ioi workspace */ 100 dcl IO_ERR fixed bin int static init (3); /* IO err of some sort */ 101 dcl STAT_ERR fixed bin int static init (4); /* error getting mpc stats */ 102 dcl IPC_ERR fixed bin int static init (5); /* ^turn io ch to event call ch */ 103 dcl CONN_ERR fixed bin int static init (6); /* Error on the connect */ 104 dcl SUS_ERR fixed bin int static init (7); /* The MTP needs more than */ 105 /* just a detach */ 106 /* Based */ 107 108 dcl arg char (argl) based (argp); 109 110 dcl 1 log_mpc_data aligned based (log_mpc_datap), 111 2 n_mpcs fixed bin, /* Number of mpcs configured */ 112 2 index fixed bin, /* Index to the one currently being polled */ 113 2 overrun_count fixed bin, /* Consequtive polling cycles missed because previous one slow */ 114 2 timer_event fixed bin (71), /* Event channel for driving polling */ 115 2 prev_cycle_start fixed bin (71), /* Start of last round */ 116 2 prev_mpc_start fixed bin (71), /* Start of current mpc */ 117 2 prev_cycle_end fixed bin (71), /* Type previous cycle completed last mpc */ 118 2 next_cycle_sched fixed bin (71), /* Time of next scheduled run */ 119 2 interval fixed bin (71), /* Time (in microseconds) between scheduled runs */ 120 2 iocbp ptr, 121 2 workp ptr, 122 2 flags unal, 123 3 debug bit (1), 124 3 log bit (1), 125 3 output_file bit (1), 126 3 finish bit (1), 127 3 io_in_progress bit (1), 128 3 pad bit (31), 129 2 attach_desc char (256) var, 130 2 attach_data like attach_mpc_data, /* For attaching current mpc */ 131 2 mpc_entry (log_mpc_data_n_mpcs refer (log_mpc_data.n_mpcs)) like log_mpc_entry; 132 133 dcl 1 log_mpc_entry aligned based (log_mpc_entryp), 134 2 mpc_name char (4), 135 2 times_dumped fixed bin (35), 136 2 times_failed fixed bin (35), 137 2 fail_count fixed bin, /* Count of consecutive failures */ 138 2 alarm bit (1), /* Alarm sensed for this MPC */ 139 2 prev_err_reg bit (16), /* Last copy of the err data reg */ 140 2 prev_err_ctr fixed bin, /* last count of the err int ctr */ 141 2 prev_stat_ctr_cnt fixed bin, /* last count of the */ 142 2 on bit (1); 143 144 dcl 1 buf aligned based (workp), /* The IOI buffer segment */ 145 2 idcw1 bit (36), /* Will be read controller main memory */ 146 2 dcw1 bit (36), /* Addr=buf.control, tally=1 */ 147 2 idcw2 bit (36), /* Will be initiate read data transfer */ 148 2 dcw2 bit (36), /* Address=buf.mem, tally=rest of segment */ 149 2 control, /* Describes where data is in mpc */ 150 3 addr bit (16) unal, /* Addr in mpc memory */ 151 3 tally bit (16) unal, /* Count in mpc words */ 152 3 fill bit (4) unal, 153 2 mem (0:mpc_memory_size - 1) bit (18) unal; /* This is the mpc memory */ 154 155 dcl 1 buf1 aligned based (workp), 156 2 idcw1 bit (36), 157 2 dcw1 bit (36), 158 2 control, 159 3 addr bit (16) unal, 160 3 tally bit (16) unal, 161 3 fill bit (16) unal, 162 2 release_data bit (36) unal; 163 164 dcl 1 stat_buf aligned based (workp), /* The IOI buffer segment */ 165 2 idcw1 bit (36), /* Will be read controller main memory */ 166 2 dcw1 bit (36), /* Addr=stat_buf.control, tally=1 */ 167 2 idcw2 bit (36), /* Will be initiate read data transfer */ 168 2 dcw2 bit (36), /* Address=stat_buf.mem, tally=rest of segment */ 169 2 control, /* Describes where data is in mpc */ 170 3 addr bit (16) unal, /* Addr in mpc memory */ 171 3 tally bit (16) unal, /* Count in mpc words */ 172 3 fill bit (4) unal, 173 2 stats (0:83) bit (18) unal; /* EURC statistics in ASCII */ 174 175 dcl 1 dau_buf aligned based (workp), /* The IOI buffer segment */ 176 2 cf_idcw bit (36), /* Read Configuration (24o) */ 177 2 cf_dcw bit (36), /* Addr=dau_buf.data(0), tally=65 */ 178 2 st_idcw bit (36), /* Read/Clear Statistics (16o) */ 179 2 st_dcw bit (36), /* Address=dau_buf.data(130), tally=315 */ 180 2 data (0:759) bit (18) unal; /* Config & statistics area */ 181 182 183 /* External */ 184 185 dcl analyze_device_stat_$rsnnl entry (char (*) var, ptr, bit (72), bit (18)); 186 dcl config_$find entry (char (4) aligned, ptr); 187 dcl com_err_ entry options (variable); 188 dcl cu_$arg_count entry (fixed bin); 189 dcl absolute_pathname_ entry (char (*), char (*), fixed bin (35)); 190 dcl cu_$arg_list_ptr entry (ptr); 191 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin, fixed bin (35), ptr); 192 dcl hcs_$wakeup entry (bit (*), fixed bin (71), fixed bin (71), fixed bin (35)); 193 dcl get_process_id_ entry () returns (bit (36)); 194 dcl convert_ipc_code_ entry (fixed bin (35)); 195 dcl ( 196 ioa_, 197 ioa_$nnl 198 ) entry options (variable); 199 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 200 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), ptr, ptr, fixed bin, fixed bin (35)); 201 dcl ipc_$decl_ev_wait_chn entry (fixed bin (71), fixed bin (35)); 202 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 203 dcl ipc_$drain_chn entry (fixed bin (71), fixed bin (35)); 204 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 205 dcl timer_manager_$reset_alarm_call entry (entry); 206 dcl timer_manager_$alarm_call entry (fixed bin (71), bit (2), entry); 207 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 208 dcl ipc_$set_wait_prior entry (fixed bin (35)); 209 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 210 dcl attach_mpc_ entry (ptr, fixed bin (35)); 211 dcl detach_mpc_ entry (ptr, fixed bin (35)); 212 dcl decode_mpc_stats_$err_data_ entry (ptr, ptr); 213 dcl ioi_$get_special_status entry (fixed bin, bit (1) aligned, bit (36) aligned, fixed bin (35)); 214 dcl ioi_$suspend_devices entry (fixed bin, fixed bin (35)); 215 dcl ioi_$release_devices entry (fixed bin, fixed bin (35)); 216 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 217 dcl ioi_$connect entry (fixed bin, fixed bin (18), fixed bin (35)); 218 dcl char_mpc_ entry (ptr, ptr); 219 dcl stat_mpc_ entry (ptr, ptr, ptr, bit (1)); 220 dcl stat_mpc_$return_dau_data entry (ptr, ptr, ptr, fixed bin (35)); 221 dcl stat_mpc_$return_mpc_data entry (ptr, ptr, ptr, bit (1), fixed bin (35)); 222 dcl stat_mpc_$eurc entry (ptr, ptr, ptr, bit (1)); 223 dcl stat_mpc_$dau entry (ptr, ptr, ptr, bit (1)); 224 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 225 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 226 dcl iox_$close entry (ptr, fixed bin (35)); 227 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 228 dcl rcp_$detach entry (bit (36) aligned, bit (*), fixed bin, char (*), fixed bin (35)); 229 dcl hphcs_$syserr_binary entry options (variable); 230 dcl hphcs_$syserr entry options (variable); 231 dcl analyze_ioi_imess_ entry (ptr, ptr, char (*) var); 232 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 233 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 234 235 dcl error_table_$too_many_args ext fixed bin (35); 236 dcl error_table_$noarg ext fixed bin (35); 237 dcl error_table_$badopt ext fixed bin (35); 238 dcl error_table_$inconsistent ext fixed bin (35); 239 dcl error_table_$unable_to_do_io fixed bin (35) ext static; 240 241 dcl (cleanup, conversion) condition; 242 243 dcl (addr, bin, bit, clock, codeptr, currentsize, hbound, null, rel, rtrim, size, substr, unspec, sum) builtin; 244 245 /* Command entry to setup the command */ 246 247 call cu_$arg_count (n_args); 248 call cu_$arg_list_ptr (arg_list_ptr); 249 argno = 1; 250 more_args = (argno <= n_args); 251 time_sw = "0"b; 252 output_file_sw = "0"b; 253 debug_sw = "0"b; 254 log_sw = "0"b; 255 off_sw = "0"b; 256 on_sw = "0"b; 257 finish_sw = "0"b; 258 mpc_cnt = 0; 259 mpc_list (*) = ""; 260 CMD_EXIT = done; /* Set command_cleanup's return label. */ 261 262 263 do while (more_args); 264 call get_arg; 265 if substr (arg, 1, 1) ^= "-" then do; /* Must be mpc name */ 266 if mpc_cnt >= hbound (mpc_list, 1) then do; 267 call com_err_ (error_table_$too_many_args, name, "More than ^d MPC's listed.", 268 hbound (mpc_list, 1)); 269 go to error_return; 270 end; 271 mpc_cnt = mpc_cnt + 1; 272 mpc_list (mpc_cnt) = arg; 273 end; 274 else if arg = "-time" | arg = "-tm" then do; 275 if ^more_args then do; 276 missing: 277 call com_err_ (error_table_$noarg, name, "After ^a.", arg); 278 go to error_return; 279 end; 280 call get_arg; 281 on conversion go to bad_time; 282 time_int = bin (arg); 283 revert conversion; 284 if time_int <= 0 then do; 285 bad_time: 286 call com_err_ (0, name, "Invalid time specified: ^a", arg); 287 go to error_return; 288 end; 289 time_sw = "1"b; 290 end; 291 else if arg = "-output_file" | arg = "-of" then do; 292 if ^more_args then go to missing; 293 call get_arg; 294 call absolute_pathname_ (arg, output_file, code); 295 if code ^= 0 then do; 296 call com_err_ (code, name, "^a", arg); 297 go to error_return; 298 end; 299 output_file_sw = "1"b; 300 end; 301 else if arg = "-log" then log_sw = "1"b; 302 else if arg = "-stop" | arg = "-sp" then do; 303 off_sw = "1"b; 304 on_sw = "0"b; 305 end; 306 else if arg = "-start" | arg = "-sr" then do; 307 on_sw = "1"b; 308 off_sw = "0"b; 309 end; 310 else if arg = "-finish" then finish_sw = "1"b; 311 else if arg = "-debug" | arg = "-db" then debug_sw = "1"b; 312 else do; 313 call com_err_ (error_table_$badopt, name, "^a", arg); 314 go to error_return; 315 end; 316 end; 317 318 /* This code handles modifications to running polling */ 319 320 if static_log_mpc_datap ^= null () then do; 321 log_mpc_datap = static_log_mpc_datap; 322 if log_mpc_data.finish then do; 323 call com_err_ (0, name, "Finish operation in progress. Requests not accepted until it completes."); 324 go to error_return; 325 end; 326 if n_args = 0 then do; /* Some argument required to adjust polling */ 327 call com_err_ (error_table_$noarg, name, "Polling already in progress."); 328 go to error_return; 329 end; 330 if time_sw then log_mpc_data.interval = 60 * 1000000 * time_int; 331 if debug_sw then log_mpc_data.debug = "1"b; 332 if output_file_sw then do; 333 log_mpc_data.attach_desc = "vfile_ " || rtrim (output_file) || " -extend"; 334 log_mpc_data.output_file = "1"b; 335 end; 336 if log_sw then log_mpc_data.log = "1"b; 337 if on_sw | off_sw | (mpc_cnt > 0) then do; 338 if mpc_cnt > 0 then call validate_mpc_list; 339 if ^(on_sw | off_sw) then on_sw = "1"b; 340 do i = 1 to log_mpc_data.n_mpcs; 341 log_mpc_entryp = addr (log_mpc_data.mpc_entry (i)); 342 if listed_mpc () then do; 343 log_mpc_entry.on = on_sw; 344 if on_sw then log_mpc_entry.fail_count = 0; 345 if log_mpc_data.debug 346 then call ioa_ ("^a: Polling ^[enabled^;disabled^] for MPC ^a.", name, on_sw, 347 log_mpc_entry.mpc_name); 348 end; 349 end; 350 end; 351 if finish_sw then do; 352 call timer_manager_$reset_alarm_wakeup (log_mpc_data.timer_event); 353 call ipc_$drain_chn (log_mpc_data.timer_event, code); 354 char8 = "finish"; 355 unspec (event_message) = unspec (char8); 356 call hcs_$wakeup (get_process_id_ (), log_mpc_data.timer_event, event_message, code); 357 if code ^= 0 then do; 358 call convert_ipc_code_ (code); 359 call com_err_ (code, name, "Unable to send finish wakeup."); 360 end; 361 log_mpc_data.finish = "1"b; 362 end; 363 go to done; 364 end; 365 366 /* This code handles starting polling for the first time */ 367 368 if on_sw | off_sw | finish_sw then do; 369 call com_err_ (error_table_$inconsistent, name, 370 "^/^-Args -start, -stop, -finish not permitted before polling started."); 371 go to error_return; 372 end; 373 if ^(log_sw | output_file_sw) then log_sw = "1"b; 374 375 on cleanup call command_cleanup; 376 377 call setup_static_data; 378 379 log_mpc_data.iocbp = null (); 380 log_mpc_data.debug = debug_sw; 381 382 if mpc_cnt > 0 then call validate_mpc_list; 383 384 do i = 1 to log_mpc_data.n_mpcs; 385 log_mpc_entryp = addr (log_mpc_data.mpc_entry (i)); 386 if listed_mpc () then do; 387 log_mpc_entry.on = "1"b; 388 log_mpc_entry.prev_err_reg = "0"b; 389 log_mpc_entry.prev_err_ctr = 0; 390 log_mpc_entry.prev_stat_ctr_cnt = 0; 391 end; 392 end; 393 394 log_mpc_data.log = log_sw; 395 if output_file_sw then do; 396 log_mpc_data.attach_desc = "vfile_ " || rtrim (output_file) || " -extend"; 397 log_mpc_data.output_file = "1"b; 398 end; 399 400 if ^time_sw then time_int = 15; 401 log_mpc_data.interval = time_int * 60 * 1000000; 402 403 call ipc_$create_ev_chn (log_mpc_data.timer_event, code); 404 if code ^= 0 then do; 405 call convert_ipc_code_ (code); 406 call com_err_ (code, name, "Unable to create event channel."); 407 go to error_return; 408 end; 409 call ipc_$decl_ev_call_chn (log_mpc_data.timer_event, codeptr (timer_wakeup), log_mpc_datap, 30, code); 410 /* Priority = 30 appropriate in Initializer */ 411 if code ^= 0 then do; 412 call convert_ipc_code_ (code); 413 call com_err_ (code, name, "Unable to setup event call channel."); 414 go to error_return; 415 end; 416 417 char8 = "start"; 418 unspec (event_message) = unspec (char8); 419 log_mpc_data.next_cycle_sched = clock (); 420 call hcs_$wakeup (get_process_id_ (), log_mpc_data.timer_event, event_message, code); 421 if code ^= 0 then do; 422 call convert_ipc_code_ (code); 423 call com_err_ (code, name, "Unable to send first wakeup."); 424 go to error_return; 425 end; 426 static_log_mpc_datap = log_mpc_datap; 427 428 done: 429 return; 430 431 error_return: 432 call command_cleanup; 433 return; 434 435 /* Timer wakeup to start polling operation */ 436 437 timer_wakeup: 438 entry (arg_event_call_info_ptr); 439 440 CMD_EXIT = done; /* Set command_cleanup's return label. */ 441 on cleanup call command_cleanup; 442 event_call_info_ptr = arg_event_call_info_ptr; 443 log_mpc_datap = event_call_info.data_ptr; 444 445 if log_mpc_datap ^= static_log_mpc_datap then return; 446 /* Spurious */ 447 if event_call_info.channel_id ^= log_mpc_data.timer_event then return; 448 /* Likewise */ 449 450 unspec (char8) = unspec (event_call_info.message); 451 if log_mpc_data.debug then do; 452 call ioa_$nnl ("Timer wakeup: ^a. Processing:", char8); 453 do i = 1 to log_mpc_data.n_mpcs; 454 log_mpc_entryp = addr (log_mpc_data.mpc_entry (i)); 455 if log_mpc_entry.on then call ioa_$nnl (" ^a", log_mpc_entry.mpc_name); 456 end; 457 call ioa_ (""); 458 end; 459 460 if log_mpc_data.index ^= 0 then do; /* Previous operation still in progress */ 461 log_mpc_entryp = addr (log_mpc_data.mpc_entry (log_mpc_data.index)); 462 call com_err_ (0, name, "Polling overrun. Previous cycle still in progress, processing ^a.", 463 log_mpc_entry.mpc_name); 464 log_mpc_data.overrun_count = log_mpc_data.overrun_count + 1; 465 if log_mpc_data.overrun_count >= 3 then do; 466 log_mpc_data.finish = "1"b; 467 call com_err_ (0, name, "Polling abandoned. Too many polling overruns occured."); 468 end; 469 end; 470 else log_mpc_data.overrun_count = 0; /* Keeping up ok */ 471 472 if ^log_mpc_data.finish then do; 473 log_mpc_data.next_cycle_sched = log_mpc_data.next_cycle_sched + log_mpc_data.interval; 474 do while (log_mpc_data.next_cycle_sched <= clock ()); 475 log_mpc_data.next_cycle_sched = log_mpc_data.next_cycle_sched + log_mpc_data.interval; 476 end; 477 call timer_manager_$alarm_wakeup (log_mpc_data.next_cycle_sched, "00"b, log_mpc_data.timer_event); 478 end; 479 480 if log_mpc_data.index ^= 0 then return; 481 482 /* Attach output file if specified */ 483 484 if log_mpc_data.output_file then do; 485 call iox_$attach_name ("poll_mpc", log_mpc_data.iocbp, (log_mpc_data.attach_desc), null (), code); 486 if code ^= 0 then do; 487 call com_err_ (code, name, "Unable to attach output file."); 488 log_mpc_data.iocbp = null (); 489 go to process_next_mpc; 490 end; 491 call iox_$open (log_mpc_data.iocbp, Stream_output, "0"b, code); 492 if code ^= 0 then do; 493 call com_err_ (code, name, "Unable to open output file."); 494 call iox_$detach_iocb (log_mpc_data.iocbp, code); 495 log_mpc_data.iocbp = null (); 496 end; 497 end; 498 499 /* Find the next mpc to run */ 500 501 process_next_mpc: 502 i = log_mpc_data.index + 1; 503 if i > log_mpc_data.n_mpcs then do; /* Cycle complete */ 504 log_mpc_data.prev_cycle_end = clock (); 505 log_mpc_data.index = 0; 506 if log_mpc_data.iocbp ^= null () then do; 507 call iox_$close (log_mpc_data.iocbp, code); 508 call iox_$detach_iocb (log_mpc_data.iocbp, code); 509 log_mpc_data.iocbp = null (); 510 end; 511 if log_mpc_data.finish then do; /* This is last cycle */ 512 call ioa_ ("^a: Finished.", name); 513 call ipc_$delete_ev_chn (log_mpc_data.timer_event, code); 514 call command_cleanup; 515 end; 516 return; 517 end; 518 519 log_mpc_data.index = i; 520 log_mpc_entryp = addr (log_mpc_data.mpc_entry (i)); 521 if ^log_mpc_entry.on then go to process_next_mpc; 522 523 /* Attach next mpc */ 524 525 log_mpc_data.prev_mpc_start = clock (); 526 log_mpc_entry.times_dumped = log_mpc_entry.times_dumped + 1; 527 attach_mpc_datap = addr (log_mpc_data.attach_data); 528 unspec (attach_mpc_data) = "0"b; 529 attach_mpc_data.version = attach_mpc_data_version_1; 530 attach_mpc_data.mpc_name = log_mpc_entry.mpc_name; 531 attach_mpc_data.caller_name = name; 532 attach_mpc_data.report = "1"b; 533 OP = ATTACH_MPC; 534 call attach_mpc_ (attach_mpc_datap, code); 535 536 if code ^= 0 then do; 537 call detach_and_count (ATT_ERR); 538 go to process_next_mpc; 539 end; 540 541 mpc_attached = "1"b; /* remember */ 542 543 if log_mpc_data.debug 544 then call ioa_ ("^a: ^a ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, attach_mpc_data.device_name); 545 546 /* When an entry is created in ioi_ to check the state of the suspend 547* devices flag for an MPC, the following should be added to skip the 548* MPC if the IO is suspended. This way poll_mpc will not hang! 549* 550* * call ioi_$check_suspend_state (or whatever) 551* * (attach_mpc_data.ioi_index, io_suspended, code); 552* * if io_suspended then do; 553* * call detach_and_count (SUSPENDED_ERR); 554* * goto process_next_mpc; 555* * end; 556**/ 557 558 if substr (attach_mpc_data.mpc_name, 1, 3) = "urp" then do; 559 tape_sw, disk_sw, dau_sw = "0"b; 560 urp_sw = "1"b; 561 eurc_sw = "0"b; 562 do i = 1 to hbound (eurc_model_numbers, 1) while (eurc_sw = "0"b); 563 if attach_mpc_data.model = eurc_model_numbers (i) then eurc_sw = "1"b; 564 end; 565 end; 566 567 else if substr (attach_mpc_data.mpc_name, 1, 3) = "msp" then do; 568 disk_sw = "1"b; 569 urp_sw, eurc_sw, tape_sw, dau_sw = "0"b; 570 if attach_mpc_data.model = 800 then dau_sw = "1"b; 571 end; 572 573 else if substr (attach_mpc_data.mpc_name, 1, 3) = "mtp" then do; 574 tape_sw = "1"b; 575 urp_sw, disk_sw, dau_sw, eurc_sw = "0"b; 576 end; 577 578 call ioi_$workspace (attach_mpc_data.ioi_index, workp, size (buf), code); 579 if code ^= 0 then do; 580 call com_err_ (code, name, "Unable to set workspace for ^a.", attach_mpc_data.mpc_name); 581 call detach_and_count (IOI_WRKSP); 582 go to process_next_mpc; 583 end; 584 585 log_mpc_data.workp = workp; 586 587 588 if dau_sw 589 then OP = READ_DAU; 590 else OP = READ_MPC_MEM; 591 if eurc_sw then call build_eurc_idcw; 592 else if dau_sw then call build_dau_idcw; 593 else call build_idcw; 594 call do_io (code); 595 if code ^= 0 then goto process_next_mpc; 596 return; /* Return, allowing I/O to complete */ 597 598 599 600 601 /* Wakup handler for I/O completion events */ 602 603 io_wakeup: 604 entry (arg_event_call_info_ptr); 605 606 CMD_EXIT = done; /* Set command_cleanup's return label. */ 607 on cleanup call command_cleanup; 608 event_call_info_ptr = arg_event_call_info_ptr; 609 log_mpc_datap = event_call_info.data_ptr; 610 if log_mpc_datap ^= static_log_mpc_datap then return; 611 /* Spurious */ 612 if ^log_mpc_data.io_in_progress then return; 613 if log_mpc_data.index = 0 then return; 614 log_mpc_entryp = addr (log_mpc_data.mpc_entry (log_mpc_data.index)); 615 attach_mpc_datap = addr (log_mpc_data.attach_data); 616 if attach_mpc_data.ioi_channel ^= event_call_info.channel_id then return; 617 618 log_mpc_data.io_in_progress = "0"b; 619 620 workp = log_mpc_data.workp; 621 imp = addr (event_call_info.message); 622 623 624 if imess.er | (imess.level ^= "3"b3) then do; 625 call analyze_ioi_imess_ (imp, attach_mpc_data.status_tablep, error_message); 626 call com_err_ (0, name, "I/O error on ^a: ^a", log_mpc_entry.mpc_name, error_message); 627 if log_mpc_data.log 628 then call hphcs_$syserr (3, "poll_mpc: I/O error on ^a: ^a", log_mpc_entry.mpc_name, error_message); 629 630 call detach_and_count (IO_ERR); 631 go to process_next_mpc; 632 end; 633 634 if OP = READ_DAU then do; 635 636 mpc_datap = addr (auto_mpc_data); /* Setup for memory checking rtn */ 637 mpc_data.type = attach_mpc_data.type; 638 mpc_data.model = attach_mpc_data.model; 639 mpc_data.name = attach_mpc_data.mpc_name; 640 641 do i = 0 to 759; 642 substr (dau_data (i), 1, 8) = substr (dau_buf.data (i), 2, 8); 643 substr (dau_data (i), 9, 8) = substr (dau_buf.data (i), 11, 8); 644 end; 645 call char_mpc_ (addr (dau_data (0)), mpc_datap); 646 if log_mpc_data.debug 647 then call ioa_ ("^a: Firmware rev ^a (HW rev ^2.4b hex) for ^a.", name, mpc_data.fw_rev, mpc_data.dau_rev, 648 attach_mpc_data.mpc_name); 649 650 if log_mpc_data.iocbp ^= null () 651 then call stat_mpc_$dau (addr (dau_data (0)), log_mpc_data.iocbp, mpc_datap, "0"b); 652 653 if log_mpc_data.log then do; 654 call get_temp_segment_ ("poll_mpc", poll_mpc_datap, code); 655 poll_mpc_specp = addr (poll_mpc_data.specific); 656 call stat_mpc_$return_dau_data (addr (dau_data (0)), poll_mpc_datap, mpc_datap, code); 657 658 if code ^= 0 then do; 659 call com_err_ (code, name, "Unable to process statistics for ^a", log_mpc_entry.mpc_name); 660 call detach_and_count (STAT_ERR); 661 go to process_next_mpc; 662 end; 663 664 if poll_dau_data.err_interrupts ^= 0 then call dau_err_alarm; 665 if sum (poll_dau_data.psi_cntr) ^= 0 then call dau_stat_alarm; 666 call hphcs_$syserr_binary (5, poll_mpc_datap, SB_mpc_poll, currentsize (poll_mpc_data), 667 "poll_mpc: Polled ^a.", log_mpc_entry.mpc_name); 668 669 poll_mpc_specp = null (); 670 call release_temp_segment_ ("poll_mpc", poll_mpc_datap, code); 671 end; 672 end; 673 674 else if OP = READ_MPC_MEM then do; 675 676 mpc_datap = addr (auto_mpc_data); /* Setup for memory checking rtn */ 677 mpc_data.type = attach_mpc_data.type; 678 mpc_data.model = attach_mpc_data.model; 679 mpc_data.name = attach_mpc_data.mpc_name; 680 681 if eurc_sw = "0"b 682 then do i = 0 to mpc_memory_size - 1; 683 substr (mpc_mem_bin (i), 1, 8) = substr (buf.mem (i), 2, 8); 684 substr (mpc_mem_bin (i), 9, 8) = substr (buf.mem (i), 11, 8); 685 end; 686 687 else if eurc_sw = "1"b 688 then do i = 0 to 83; /* convert it to binary */ 689 substr (eurc_stats (i), 1, 8) = substr (stat_buf.stats (i), 2, 8); 690 substr (eurc_stats (i), 9, 8) = substr (stat_buf.stats (i), 11, 8); 691 end; 692 693 call char_mpc_ (addr (mpc_mem_bin), mpc_datap); 694 if log_mpc_data.debug 695 then call ioa_ ("^a: Firmware rev ^a for ^a.", name, mpc_data.fw_rev, attach_mpc_data.mpc_name); 696 697 if log_mpc_data.iocbp ^= null () then do; 698 if eurc_sw 699 then call stat_mpc_$eurc (addr (eurc_stats), log_mpc_data.iocbp, mpc_datap, "0"b); 700 else call stat_mpc_ (addr (mpc_mem_bin), log_mpc_data.iocbp, mpc_datap, "0"b); 701 end; 702 703 if log_mpc_data.log then do; 704 call get_temp_segment_ ("poll_mpc", poll_mpc_datap, code); 705 poll_mpc_specp = addr (poll_mpc_data.specific); 706 if eurc_sw 707 then call stat_mpc_$return_mpc_data (addr (eurc_stats), poll_mpc_datap, mpc_datap, eurc_sw, code); 708 else call stat_mpc_$return_mpc_data (addr (mpc_mem_bin), poll_mpc_datap, mpc_datap, eurc_sw, code); 709 710 if code ^= 0 then do; 711 call com_err_ (code, name, "Unable to process statistics for ^a", log_mpc_entry.mpc_name); 712 call detach_and_count (STAT_ERR); 713 go to process_next_mpc; 714 end; 715 716 if ^eurc_sw then do; /* DISK or TAPE MPC, use same format */ 717 if poll_mtp_data.register ^= "0"b then call mpc_reg_alarm; 718 719 if sum (poll_mtp_data.polled_stat_counters) ^= 0 then call mpc_stat_alarm; 720 end; 721 call hphcs_$syserr_binary (5, poll_mpc_datap, SB_mpc_poll, currentsize (poll_mpc_data), 722 "poll_mpc: Polled ^a.", log_mpc_entry.mpc_name); 723 724 poll_mpc_specp = null (); 725 call release_temp_segment_ ("poll_mpc", poll_mpc_datap, code); 726 end; 727 end; 728 729 if log_mpc_data.log = "0"b then go to wakeup_end; /* thats it then */ 730 731 if (disk_sw & ^dau_sw) 732 then if OP = READ_MPC_MEM then do; /* now clear the dev stat block */ 733 OP = WRITE_MPC_MEM; /* if we just read the rw mem */ 734 call build_idcw; 735 call do_io (code); 736 if code ^= 0 then go to process_next_mpc; 737 return; 738 end; 739 740 if tape_sw then do; /* special case the MTP */ 741 call suspend_mtp (code); 742 if code ^= 0 then go to process_next_mpc; 743 end; 744 745 wakeup_end: 746 call DETACH_MPC_; 747 748 log_mpc_entry.fail_count = 0; 749 750 go to process_next_mpc; 751 752 753 754 755 /* routine to return the tape mpc to use if the mpc does not respond to a connect for io */ 756 757 blocked_too_long: 758 entry; 759 760 log_mpc_datap = static_log_mpc_datap; 761 if ^log_mpc_data.io_in_progress then return; 762 if log_mpc_data.index < 1 then return; 763 log_mpc_entryp = addr (log_mpc_data.mpc_entry (log_mpc_data.index)); 764 attach_mpc_datap = addr (log_mpc_data.attach_data); 765 CMD_EXIT = done; /* Set command_cleanup's return label. */ 766 call release_tape_mpc (-1, 0); /* ensure mpc gets released */ 767 call detach_and_count (SUS_ERR); 768 go to process_next_mpc; 769 770 771 772 773 build_eurc_idcw: 774 proc; 775 776 /* Build dcw list to get statistics from EURC MPC */ 777 778 idcwp = addr (stat_buf.idcw1); /* First IDCW */ 779 stat_buf.idcw1 = "0"b; 780 idcw.command = "31"b3; /* Command is read Statistics */ 781 idcw.code = "111"b; /* This makes it an IDCW */ 782 idcw.control = "10"b; /* Set continue bit */ 783 idcw.chan_cmd = "41"b3; /* Indicate special controller command */ 784 idcw.count = "15"b3; 785 786 dcwp = addr (stat_buf.dcw1); 787 stat_buf.dcw1 = "0"b; 788 dcw.address = rel (addr (stat_buf.control)); /* Get offset to control word */ 789 dcw.tally = "000000000010"b; 790 791 idcwp = addr (stat_buf.idcw2); /* Second IDCW */ 792 stat_buf.idcw2 = "0"b; 793 idcw.command = "06"b3; /* Command is initiate read data transfer */ 794 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 795 idcw.chan_cmd = "40"b3; /* Special controller command */ 796 797 dcwp = addr (stat_buf.dcw2); 798 stat_buf.dcw2 = "0"b; 799 dcw.address = rel (addr (stat_buf.stats)); /* Offset to core image */ 800 dcw.tally = "0052"b3; /* It returns 42 words */ 801 return; 802 803 end build_eurc_idcw; 804 805 build_dau_idcw: 806 proc; 807 808 /* Build dcw list to get configuration and statistics from DAU MSP */ 809 810 idcwp = addr (dau_buf.cf_idcw); /* First IDCW */ 811 dau_buf.cf_idcw = "0"b; 812 idcw.command = "24"b3; /* Command is read Configuration */ 813 idcw.code = "111"b; /* IDCW */ 814 idcw.control = "10"b; /* Set continue bit */ 815 idcw.chan_cmd = "30"b3; /* Want list in dev# order */ 816 817 dcwp = addr (dau_buf.cf_dcw); 818 dau_buf.cf_dcw = "0"b; 819 dcw.address = rel (addr (dau_buf.data (0))); /* Get offset to config data area */ 820 dcw.tally = "0101"b3; /* 65 words */ 821 822 idcwp = addr (dau_buf.st_idcw); /* Second IDCW */ 823 dau_buf.st_idcw = "0"b; 824 idcw.command = "16"b3; /* Command is read/clear statistics */ 825 idcw.code = "111"b; /* IDCW */ 826 827 dcwp = addr (dau_buf.st_dcw); 828 dau_buf.st_dcw = "0"b; 829 dcw.address = rel (addr (dau_buf.data (130))); /* Offset to statistic data area */ 830 dcw.tally = "0473"b3; /* 315 words */ 831 return; 832 833 end build_dau_idcw; 834 835 build_idcw: 836 proc; 837 838 /* Build read or write (dev stat block) main memory dcw list */ 839 840 idcwp = addr (buf.idcw1); /* First IDCW */ 841 buf.idcw1 = "0"b; 842 843 if OP = READ_MPC_MEM 844 then idcw.command = "02"b3; /* Command is read controller main memory (ASCII) */ 845 else idcw.command = "32"b3; /* Command is write main memory (binary) */ 846 847 idcw.code = "111"b; /* This makes it an IDCW */ 848 idcw.control = "10"b; /* Set continue bit */ 849 idcw.chan_cmd = "40"b3; /* Indicate special controller command */ 850 dcwp = addr (buf.dcw1); 851 buf.dcw1 = "0"b; 852 dcw.address = rel (addr (buf.control)); /* Get offset to control word */ 853 dcw.tally = "000000000001"b; 854 idcwp = addr (buf.idcw2); /* Second IDCW */ 855 buf.idcw2 = "0"b; 856 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 857 idcw.chan_cmd = "40"b3; /* Special controller command */ 858 dcwp = addr (buf.dcw2); 859 buf.dcw2 = "0"b; 860 dcw.address = rel (addr (buf.mem)); /* Offset to core image */ 861 dcw.tally = bit (bin (size (buf) - bin (rel (addr (buf.mem)), 18), 12)); 862 /* Rest of seg */ 863 864 if OP = READ_MPC_MEM then do; 865 idcw.command = "06"b3; /* Command is initiate read data transfer */ 866 buf.addr = "0"b; /* Mpc address to start is 0 */ 867 buf.tally = bit (bin (mpc_memory_size, 16), 16); 868 end; 869 870 else do; /* Command will be write */ 871 buf.mem (*) = "0"b; 872 idcw.command = "16"b3; /* Command is initiate write data transfer */ 873 buf.addr = bit (bin (mpc_data.dev_stat_addr, 16), 16); 874 /* Mpc address to start */ 875 876 if disk_sw then do; 877 if mpc_data.model < 600 878 then buf.tally = bit (bin (d451_stat_size, 16), 16); 879 880 else buf.tally = bit (bin (d600_stat_size, 16), 16); 881 end; 882 883 else if tape_sw then buf.tally = bit (bin (tape_stat_size, 16), 16); 884 end; 885 886 buf.fill = "0"b; 887 888 return; 889 890 end build_idcw; 891 892 build_sus_rel_idcw: 893 proc; 894 895 896 idcwp = addr (buf1.idcw1); /* First IDCW */ 897 buf1.idcw1 = "0"b; 898 if OP = SUS_MTP 899 then idcw.command = "00"b3; /* Command is suspend controller */ 900 else idcw.command = "20"b3; /* Command is release controller */ 901 idcw.code = "111"b; /* This makes it an IDCW */ 902 idcw.chan_cmd = "40"b3; /* Indicate special controller command */ 903 904 dcwp = addr (buf1.dcw1); 905 buf1.dcw1 = "0"b; 906 dcw.address = rel (addr (buf1.control)); /* Get offset to control word */ 907 dcw.tally = "000000000000"b; 908 909 return; 910 911 end build_sus_rel_idcw; 912 913 914 915 /* Cleanup handler for command interface */ 916 917 command_cleanup: 918 proc; 919 920 921 call DETACH_MPC_; /* detach if attached */ 922 if static_log_mpc_datap ^= null then do; 923 attach_mpc_datap = addr (log_mpc_data.attach_data); 924 if attach_mpc_data.rcp_id ^= "0"b then call rcp_$detach (attach_mpc_data.rcp_id, "0"b, 0, "", code); 925 attach_mpc_data.rcp_id = "0"b; 926 if attach_mpc_data.ioi_channel ^= 0 then call ipc_$delete_ev_chn (attach_mpc_data.ioi_channel, code); 927 attach_mpc_data.ioi_channel = 0; 928 if log_mpc_datap ^= null then call ipc_$delete_ev_chn (log_mpc_data.timer_event, code); 929 end; 930 931 mpc_attached = "0"b; 932 log_mpc_data_n_mpcs = 0; 933 static_log_mpc_datap = null (); 934 if static_log_mpc_datap = null () & log_mpc_datap ^= null () then free log_mpc_data; 935 936 goto CMD_EXIT; /* EXIT program */ 937 end command_cleanup; 938 939 940 941 DETACH_MPC_: 942 proc; 943 dcl code fixed bin (35); 944 dcl detach_count fixed bin; 945 946 if ^mpc_attached then return; 947 948 OP = DETACH_MPC; 949 detach_count = 1; 950 DETACH: 951 call detach_mpc_ (attach_mpc_datap, code); 952 953 if code ^= 0 then do; 954 detach_count = detach_count + 1; 955 if detach_count < 4 956 then go to DETACH; 957 958 else do; 959 960 call com_err_ (code, name, "Cannot detach MPC ^a,", attach_mpc_data.mpc_name); 961 call command_cleanup; 962 end; 963 end; 964 965 mpc_attached = "0"b; 966 967 if log_mpc_data.debug 968 then call ioa_ ("^a: ^a ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, attach_mpc_data.device_name); 969 970 disk_sw, tape_sw, urp_sw, eurc_sw, dau_sw = "0"b; 971 972 return; 973 974 end DETACH_MPC_; 975 976 977 detach_and_count: 978 proc (err_code); 979 980 dcl err_code; 981 982 log_mpc_entry.times_failed = log_mpc_entry.times_failed + 1; 983 log_mpc_entry.fail_count = log_mpc_entry.fail_count + 1; 984 if log_mpc_entry.fail_count >= 3 then do; 985 if ^log_mpc_data.finish 986 then call com_err_ (0, name, "Polling of ^a turned off because of too many consequtive failures.", 987 log_mpc_entry.mpc_name); 988 log_mpc_entry.on = "0"b; 989 end; 990 991 if err_code ^= SUS_ERR 992 then /* special case these errors */ 993 call DETACH_MPC_; 994 return; 995 996 end detach_and_count; 997 998 999 1000 do_io: 1001 proc (acode); 1002 1003 dcl (icode, acode) fixed bin (35); 1004 1005 1006 call ipc_$decl_ev_call_chn (attach_mpc_data.ioi_channel, codeptr (io_wakeup), log_mpc_datap, 30, icode); 1007 1008 if icode ^= 0 then do; 1009 call convert_ipc_code_ (icode); 1010 call com_err_ (icode, name, "Unable to turn ioi channel into event call channel."); 1011 call detach_and_count (IPC_ERR); 1012 acode = icode; 1013 return; 1014 end; 1015 1016 if log_mpc_data.debug 1017 then call ioa_ ("^a: Issuing Connect to ^a for ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, 1018 attach_mpc_data.device_name); 1019 1020 call ioi_$connect (attach_mpc_data.ioi_index, 0, icode); 1021 1022 if icode ^= 0 then do; 1023 call com_err_ (icode, name, "Unable to issue connect to dump memory."); 1024 call detach_and_count (CONN_ERR); 1025 acode = icode; 1026 return; 1027 end; 1028 1029 log_mpc_data.io_in_progress = "1"b; 1030 acode = 0; 1031 1032 return; 1033 end do_io; 1034 1035 1036 do_tape_io: 1037 proc (spec_sw, acode); 1038 1039 dcl (acode, CODE) fixed bin (35); 1040 dcl spec_sw bit (1); /* if ON need a SPECIAL */ 1041 dcl 1 auto_event_wait_info like event_wait_info; 1042 1043 acode, CODE = 0; 1044 my_event_wait_list_ptr = addr (my_event_wait_list); 1045 event_wait_info_ptr = addr (auto_event_wait_info); 1046 my_event_wait_list.channel_id (1) = attach_mpc_data.ioi_channel; 1047 call ipc_$create_ev_chn (my_event_wait_list.channel_id (2), CODE); 1048 if CODE ^= 0 then goto common_ret; 1049 1050 if log_mpc_data.debug 1051 then call ioa_ ("^a: Issuing Connect to ^a for ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, 1052 attach_mpc_data.device_name); 1053 1054 /* Do the io operation */ 1055 1056 call ipc_$decl_ev_wait_chn (attach_mpc_data.ioi_channel, CODE); 1057 if CODE ^= 0 then go to common_ret; 1058 1059 call ipc_$set_wait_prior (CODE); 1060 if CODE ^= 0 then go to common_ret; 1061 1062 call ipc_$drain_chn (attach_mpc_data.ioi_channel, CODE); 1063 if CODE ^= 0 then goto common_ret; 1064 1065 call ioi_$connect (attach_mpc_data.ioi_index, 0, CODE); 1066 if CODE ^= 0 then go to common_ret; 1067 1068 call timer_manager_$alarm_call (60, "11"b, blocked_too_long); 1069 1070 call ipc_$block (my_event_wait_list_ptr, event_wait_info_ptr, CODE); 1071 call timer_manager_$reset_alarm_call (blocked_too_long); 1072 if CODE ^= 0 then go to common_ret; 1073 1074 1075 attach_mpc_datap = addr (log_mpc_data.attach_data); 1076 log_mpc_data.io_in_progress = "0"b; 1077 workp = log_mpc_data.workp; 1078 1079 imp = addr (event_wait_info.message); /* Status is here */ 1080 if imess.time_out then do; 1081 time_err: 1082 error_message = "Timeout."; 1083 goto err_mess; 1084 end; 1085 1086 if imess.er then do; /* Error */ 1087 call analyze_device_stat_$rsnnl (error_message, attach_mpc_data.status_tablep, (imess.status), ("0"b)); 1088 err_mess: 1089 CODE = error_table_$unable_to_do_io; 1090 call com_err_ (CODE, name, "I/O error occured: ^a", error_message); 1091 go to common_ret; 1092 end; 1093 error_message = "terminate"; 1094 if spec_sw then do; 1095 if imess.level = "3"b3 then do; 1096 call terminate (CODE); 1097 if CODE ^= 0 then do; 1098 if CODE = -1 then goto err_mess; 1099 else if CODE = -2 then goto wrong_stat; 1100 goto common_ret; 1101 end; 1102 call drain (CODE); 1103 if CODE ^= 0 then do; 1104 if CODE = -1 1105 then goto time_err; 1106 else goto common_ret; 1107 end; 1108 call special (CODE); 1109 if CODE ^= 0 then do; 1110 if CODE = -1 then goto err_mess; 1111 else if CODE = -2 then goto wrong_stat; 1112 goto common_ret; 1113 end; 1114 end; 1115 else if imess.level = "7"b3 then do; 1116 call special (CODE); 1117 if CODE ^= 0 then do; 1118 if CODE = -1 then goto err_mess; 1119 else if CODE = -2 then goto wrong_stat; 1120 goto common_ret; 1121 end; 1122 1123 spec_drain: 1124 call drain (CODE); 1125 if CODE ^= 0 then do; 1126 if CODE = -1 then goto time_err; 1127 goto common_ret; 1128 end; 1129 if imess.level = "7"b3 then goto spec_drain; 1130 /* Controller has multiple connections. */ 1131 /* Will ignore all other specials from the other channels. */ 1132 call terminate (CODE); 1133 if CODE ^= 0 then do; 1134 if CODE = -1 then goto err_mess; 1135 else if CODE = -2 then goto wrong_stat; 1136 goto common_ret; 1137 end; 1138 end; 1139 call ipc_$drain_chn (attach_mpc_data.ioi_channel, CODE); 1140 /* forget any extra specials. */ 1141 if CODE ^= 0 then goto common_ret; 1142 1143 end; 1144 1145 if ^(spec_sw) & (imess.level ^= "3"b3) then goto wrong_stat; 1146 acode = 0; /* went ok */ 1147 1148 return; 1149 1150 common_ret: 1151 acode = CODE; 1152 return; 1153 1154 wrong_stat: 1155 CODE = error_table_$unable_to_do_io; 1156 call com_err_ (CODE, name, "Unexpected level ^.3b status when ^a expected.", imess.level, error_message); 1157 go to common_ret; 1158 1159 end do_tape_io; 1160 1161 drain: 1162 proc (acode); 1163 dcl acode fixed bin (35); 1164 1165 acode = 0; 1166 call timer_manager_$reset_alarm_wakeup (my_event_wait_list.channel_id (2)); 1167 /* Remove outstanding alarm */ 1168 call ipc_$drain_chn (my_event_wait_list.channel_id (2), acode); 1169 /* Reset timer channel */ 1170 if acode ^= 0 then return; 1171 call timer_manager_$alarm_wakeup (60, "11"b, my_event_wait_list.channel_id (2)); 1172 /* Set 60 second timer */ 1173 my_event_wait_list.n_channels = 2; /* Waiting for i/o or timer event now */ 1174 call ipc_$block (addr (my_event_wait_list), event_wait_info_ptr, acode); 1175 /* Wait for something to happen */ 1176 if acode ^= 0 then return; 1177 if event_wait_info.channel_id = my_event_wait_list.channel_id (2) then do; 1178 /* If time out */ 1179 acode = -1; /* caller knows what to do */ 1180 return; 1181 end; 1182 end drain; 1183 1184 get_arg: 1185 proc; 1186 1187 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 1188 if code ^= 0 then do; 1189 call com_err_ (code, name, "Can't happen."); 1190 go to error_return; 1191 end; 1192 argno = argno + 1; 1193 more_args = (argno <= n_args); 1194 return; 1195 1196 put_arg: 1197 entry; 1198 1199 argno = argno - 1; 1200 more_args = (argno <= n_args); 1201 return; 1202 1203 end get_arg; 1204 1205 1206 1207 /* Function to return 1 if mpc was listed in command line. If none were listed, 1 is returned for all mpc's */ 1208 1209 listed_mpc: 1210 proc returns (bit (1)); 1211 1212 dcl i fixed bin; 1213 1214 if mpc_cnt = 0 then return ("1"b); 1215 do i = 1 to mpc_cnt; 1216 if log_mpc_entry.mpc_name = mpc_list (i) then return ("1"b); 1217 end; 1218 return ("0"b); 1219 1220 end listed_mpc; 1221 1222 1223 1224 mpc_reg_alarm: 1225 proc; 1226 1227 dcl (i, j, k, l) fixed bin init (0); 1228 dcl (hint, plural_sw) bit (1) init ("0"b); 1229 1230 1231 if log_mpc_entry.alarm then do; /* It's happened before */ 1232 if (log_mpc_entry.prev_err_ctr = poll_mtp_data.interrupt_counter) 1233 & (log_mpc_entry.prev_err_reg = poll_mtp_data.register) 1234 then return; /* Same one */ 1235 if log_mpc_entry.prev_err_reg ^= poll_mtp_data.register then go to update_count; 1236 /* Update and notify the OPR */ 1237 if log_mpc_entry.prev_err_ctr ^= poll_mtp_data.interrupt_counter then do; 1238 update_count: 1239 if poll_mtp_data.interrupt_counter > log_mpc_entry.prev_err_ctr 1240 then k = poll_mtp_data.interrupt_counter - log_mpc_entry.prev_err_ctr; 1241 else if poll_mtp_data.interrupt_counter < log_mpc_entry.prev_err_ctr 1242 then k = poll_mtp_data.interrupt_counter; 1243 1244 go to send_alarm; 1245 end; 1246 1247 return; 1248 1249 end; 1250 1251 send_alarm: 1252 allocate mpc_stat_anal; 1253 if k = 0 then k = poll_mtp_data.interrupt_counter; 1254 if k > 1 then plural_sw = "1"b; 1255 log_mpc_entry.alarm = "1"b; 1256 log_mpc_entry.prev_err_reg = poll_mtp_data.register; 1257 log_mpc_entry.prev_err_ctr = poll_mtp_data.interrupt_counter; 1258 1259 1260 call decode_mpc_stats_$err_data_ (poll_mpc_datap, mpc_stat_analp); 1261 do i = 1 to mpc_stat_anal.num_interps; 1262 if substr (mpc_stat_anal.message (i), 1, 1) = "" then return; 1263 /* spurious */ 1264 1265 if substr (mpc_stat_anal.HINT (i), 1, 1) = " " 1266 then hint = "0"b; 1267 else hint = "1"b; 1268 1269 call hphcs_$syserr (3, 1270 "poll_mpc: MPC ^a has had ^d ^a error^[s^] since the last poll.^/^[^2-Suspect the ^a^/^]^2-Please inform your CSD representative." 1271 , log_mpc_entry.mpc_name, k, rtrim (mpc_stat_anal.message (i)), plural_sw, hint, 1272 rtrim (mpc_stat_anal.HINT (i))); 1273 1274 end; 1275 1276 return; 1277 end mpc_reg_alarm; 1278 1279 1280 1281 mpc_stat_alarm: 1282 proc; 1283 dcl k fixed bin; 1284 dcl plural_sw bit (1) init ("0"b); 1285 1286 1287 if log_mpc_entry.prev_stat_ctr_cnt = sum (poll_mtp_data.polled_stat_counters) then return; 1288 /* no change */ 1289 1290 if sum (poll_mtp_data.polled_stat_counters) = 0 then return; 1291 /* MPC booted or no errors ever */ 1292 1293 if sum (poll_mtp_data.polled_stat_counters) > log_mpc_entry.prev_stat_ctr_cnt then do; 1294 /* an error has occurred */ 1295 1296 k = (sum (poll_mtp_data.polled_stat_counters) - log_mpc_entry.prev_stat_ctr_cnt); 1297 log_mpc_entry.prev_stat_ctr_cnt = sum (poll_mtp_data.polled_stat_counters); 1298 1299 if k > 1 1300 then plural_sw = "1"b; 1301 else plural_sw = "0"b; 1302 1303 call hphcs_$syserr (3, 1304 "poll_mpc: MPC ^a has had ^d PSI-LA error^[s^] since the last poll.^/^2-Please inform your CSD Representative." 1305 , log_mpc_entry.mpc_name, k, plural_sw); 1306 end; 1307 1308 return; 1309 end mpc_stat_alarm; 1310 1311 1312 1313 dau_err_alarm: 1314 proc; 1315 1316 dcl (i, j, k, l) fixed bin init (0); 1317 1318 if log_mpc_entry.alarm then do; /* It's happened before */ 1319 if log_mpc_entry.prev_err_ctr = poll_dau_data.err_interrupts then return; 1320 /* Same one */ 1321 /* Update and notify the OPR */ 1322 if poll_dau_data.err_interrupts > log_mpc_entry.prev_err_ctr 1323 then k = poll_dau_data.err_interrupts - log_mpc_entry.prev_err_ctr; 1324 else if poll_dau_data.err_interrupts < log_mpc_entry.prev_err_ctr then k = poll_dau_data.err_interrupts; 1325 1326 end; 1327 1328 if k = 0 then k = poll_dau_data.err_interrupts; 1329 log_mpc_entry.alarm = "1"b; 1330 log_mpc_entry.prev_err_reg = ""b; /* DAU doesn't have one */ 1331 log_mpc_entry.prev_err_ctr = poll_dau_data.err_interrupts; 1332 1333 call hphcs_$syserr (3, 1334 "poll_mpc: DAU ^a has had ^d error^[s^] since the last poll.^/^2-Please inform your CSD representative.", 1335 log_mpc_entry.mpc_name, k, (k > 1)); 1336 1337 return; 1338 end dau_err_alarm; 1339 1340 1341 1342 dau_stat_alarm: 1343 proc; 1344 dcl (k, err_sum) fixed bin; 1345 1346 err_sum = sum (poll_dau_data.psi_cntr) - poll_dau_data.psi_cntr (13) 1347 /* PSI-0 IIW faults */ 1348 - poll_dau_data.psi_cntr (14) /* PSI-1 IIW faults */ 1349 - poll_dau_data.psi_cntr (15) /* PSI-2 IIW faults */ 1350 - poll_dau_data.psi_cntr (16); /* PSI-3 IIW faults */ 1351 if err_sum = 0 then return; /* only IIW errors */ 1352 if log_mpc_entry.prev_stat_ctr_cnt = err_sum then return; 1353 /* no change */ 1354 1355 if err_sum > log_mpc_entry.prev_stat_ctr_cnt then do; 1356 /* an error has occurred */ 1357 1358 k = err_sum - log_mpc_entry.prev_stat_ctr_cnt; 1359 log_mpc_entry.prev_stat_ctr_cnt = err_sum; 1360 1361 call hphcs_$syserr (3, 1362 "poll_mpc: DAU ^a has had ^d PSI error^[s^] since the last poll.^/^2-Please inform your CSD Representative." 1363 , log_mpc_entry.mpc_name, k, (k > 1)); 1364 end; 1365 1366 return; 1367 end dau_stat_alarm; 1368 1369 1370 1371 release_tape_mpc: 1372 proc (err_code, acode); 1373 dcl (err_code, rel_count) fixed bin; 1374 dcl (acode, code) fixed bin (35); 1375 1376 code = acode; 1377 rel_count = 1; 1378 1379 if err_code ^= 0 1380 then /* let someone know there was an error */ 1381 call com_err_ (code, name, "There was an error while MPC ^a was suspended, release will be attempted.", 1382 attach_mpc_data.mpc_name); 1383 1384 if mtp_suspended = "1"b then do; /* Get MPC going again */ 1385 OP = REL_MTP; 1386 1387 if log_mpc_data.debug 1388 then call ioa_ ("^a: ^a ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, 1389 attach_mpc_data.device_name); 1390 1391 RETRY_REL: 1392 call build_sus_rel_idcw; 1393 call do_tape_io ("1"b, code); 1394 1395 if code ^= 0 then do; 1396 rel_count = rel_count + 1; 1397 if rel_count < 4 1398 then go to RETRY_REL; 1399 1400 else do; /* we are in trouble */ 1401 call com_err_ (code, name, "Cannot release MPC ^a. Suggest reloading firmware.", 1402 attach_mpc_data.mpc_name); 1403 1404 /* Make an attempt to get IOI to release */ 1405 1406 call ioi_$release_devices (attach_mpc_data.ioi_index, code); 1407 1408 call command_cleanup; /* and QUIT */ 1409 end; 1410 end; 1411 end; 1412 1413 mtp_suspended = "0"b; /* Made it, the MPC itself is now free for io */ 1414 1415 1416 1417 /* Now get IOI to allow IO on the mtp again */ 1418 1419 1420 if stopped_io = "1"b then do; /* Get IOI to allow io again */ 1421 OP = IOI_REL_MTP; 1422 1423 if log_mpc_data.debug 1424 then call ioa_ ("^a: ^a ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, 1425 attach_mpc_data.device_name); 1426 1427 call ioi_$release_devices (attach_mpc_data.ioi_index, code); 1428 1429 if code ^= 0 then do; 1430 call com_err_ (code, name, "Call to ioi_$release_devices failed."); 1431 1432 /* we are really in trouble */ 1433 1434 call com_err_ (code, name, "Cannot release MPC ^a.", attach_mpc_data.mpc_name); 1435 1436 call command_cleanup; /* and QUIT */ 1437 end; 1438 end; 1439 1440 stopped_io = "0"b; 1441 acode = 0; 1442 1443 return; 1444 1445 end release_tape_mpc; 1446 1447 1448 1449 /* Routine to setup static data-base */ 1450 1451 setup_static_data: 1452 proc; 1453 1454 dcl i fixed bin; 1455 1456 /* First, count mpc's */ 1457 1458 log_mpc_data_n_mpcs = 0; 1459 mpc_cardp = null (); 1460 call config_$find ("mpc", mpc_cardp); 1461 do while (mpc_cardp ^= null ()); 1462 if substr (mpc_card.name, 1, 3) = "msp" | substr (mpc_card.name, 1, 3) = "mtp" 1463 | substr (mpc_card.name, 1, 3) = "urp" 1464 then log_mpc_data_n_mpcs = log_mpc_data_n_mpcs + 1; 1465 call config_$find ("mpc", mpc_cardp); 1466 end; 1467 if log_mpc_data_n_mpcs = 0 then do; 1468 call com_err_ (0, name, "No MPC's configured. Polling not initiated."); 1469 go to error_return; 1470 end; 1471 1472 allocate log_mpc_data; 1473 unspec (log_mpc_data) = "0"b; 1474 log_mpc_data.n_mpcs = log_mpc_data_n_mpcs; 1475 1476 mpc_cardp = null (); 1477 do i = 1 to log_mpc_data.n_mpcs; 1478 skip_mpc: 1479 call config_$find ("mpc", mpc_cardp); 1480 if substr (mpc_card.name, 1, 3) ^= "msp" & substr (mpc_card.name, 1, 3) ^= "mtp" 1481 & substr (mpc_card.name, 1, 3) ^= "urp" 1482 then go to skip_mpc; 1483 log_mpc_entryp = addr (log_mpc_data.mpc_entry (i)); 1484 log_mpc_entry.mpc_name = mpc_card.name; 1485 end; 1486 return; 1487 1488 end setup_static_data; 1489 1490 1491 1492 /* Internal proc to handle special interrupt from suspend and release operations 1493* to the tape MPC */ 1494 1495 special: 1496 proc (acode); 1497 dcl acode fixed bin (35); 1498 1499 acode = 0; 1500 error_message = "special"; 1501 if imess.level ^= "7"b3 then do; 1502 acode = -2; /* maps to wrong status in caller */ 1503 return; 1504 end; 1505 1506 call ioi_$get_special_status (attach_mpc_data.ioi_index, special_status_flag, special_status_word, acode); 1507 if acode ^= 0 then do; 1508 no_special: 1509 call com_err_ (acode, name, "Attempting to get special status word."); 1510 return; 1511 end; 1512 io_special_status_ptr = addr (special_status_word); 1513 if ^(special_status_flag | io_special_status.t) then do; 1514 acode = -1; /* caller knows what to do */ 1515 return; 1516 end; 1517 if OP = SUS_MTP then do; 1518 if log_mpc_data.debug 1519 then call ioa_ ("^a: Processing SUSPEND special status for ^a: Status = ^w", name, 1520 attach_mpc_data.mpc_name, special_status_word); 1521 1522 if substr (special_status_word, 27, 1) 1523 then mtp_suspended = "1"b; 1524 else do; /* suspend didn't work */ 1525 acode = error_table_$unable_to_do_io; 1526 call com_err_ (acode, name, "MTP was not suspended."); 1527 return; 1528 end; 1529 end; 1530 else if OP = REL_MTP then do; 1531 if log_mpc_data.debug 1532 then call ioa_ ("^a: Processing RELEASE special status for ^a: Status = ^w", name, 1533 attach_mpc_data.mpc_name, special_status_word); 1534 1535 if substr (special_status_word, 26, 1) 1536 then mtp_suspended = "0"b; 1537 else do; /* release didn't work */ 1538 acode = error_table_$unable_to_do_io; 1539 call com_err_ (acode, name, "MTP was not released."); 1540 return; 1541 end; 1542 end; 1543 end special; 1544 1545 terminate: 1546 proc (acode); 1547 1548 dcl acode fixed bin (35); 1549 1550 acode = 0; 1551 error_message = "terminate"; /* Special interupt expected now */ 1552 1553 if log_mpc_data.debug 1554 then call ioa_ ("^a: Processing Terminate status for ^a:^/Level = ^.3b, Status = ^w", name, 1555 attach_mpc_data.mpc_name, imess.level, imess.status); 1556 1557 if imess.level ^= "3"b3 then do; /* If not termination */ 1558 acode = -2; /* caller knows what to do */ 1559 return; 1560 end; 1561 1562 if imess.er then do; /* Error */ 1563 call analyze_device_stat_$rsnnl (error_message, attach_mpc_data.status_tablep, (imess.status), ("0"b)); 1564 acode = -1; /* caller knows what to do */ 1565 return; 1566 end; 1567 1568 end terminate; 1569 1570 /* Internal subroutine to control the suspending, clearing of dev stats, and 1571* releasing of the tape controller */ 1572 1573 suspend_mtp: 1574 proc (CODE); 1575 1576 dcl (CODE, scode) fixed bin (35); 1577 1578 call suspend_tape_mpc (scode); 1579 1580 if scode ^= 0 then do; 1581 call DETACH_MPC_; 1582 CODE = scode; 1583 return; 1584 end; 1585 1586 OP = WRITE_MPC_MEM; 1587 call build_idcw; 1588 call do_tape_io ("0"b, scode); /* special case the suspend */ 1589 1590 if scode ^= 0 then do; 1591 call release_tape_mpc (IO_ERR, scode); 1592 call detach_and_count (SUS_ERR); 1593 CODE = scode; 1594 return; 1595 end; 1596 1597 call release_tape_mpc (0, 0); /* normal release */ 1598 CODE = 0; 1599 return; 1600 1601 end suspend_mtp; 1602 1603 1604 1605 suspend_tape_mpc: 1606 proc (acode); 1607 1608 dcl (code, acode, saved_code) fixed bin (35); 1609 1610 stopped_io, mtp_suspended = "0"b; 1611 OP = IOI_SUS_MTP; 1612 1613 if log_mpc_data.debug 1614 then call ioa_ ("^a: ^a ^a (^a)", name, OPERATION (OP), attach_mpc_data.mpc_name, attach_mpc_data.device_name); 1615 1616 /* This waits for all i/o to finish */ 1617 1618 call ioi_$suspend_devices (attach_mpc_data.ioi_index, code); 1619 1620 1621 if code ^= 0 then go to IOI_SUS_ERR; 1622 1623 stopped_io = "1"b; /* MUST remember this */ 1624 OP = SUS_MTP; 1625 call build_sus_rel_idcw; 1626 call do_tape_io ("1"b, code); /* now clear stat block */ 1627 1628 1629 if code = 0 then do; /* PHEW */ 1630 acode = 0; 1631 mtp_suspended = "1"b; /* MUST remember this also */ 1632 return; 1633 end; 1634 go to SUS_MTP_ERR; 1635 1636 1637 IOI_SUS_ERR: 1638 saved_code = code; /* release_tape can wipe it out */ 1639 call detach_and_count (SUS_ERR); /* keep track of failures */ 1640 go to com_err_ret; 1641 1642 1643 SUS_MTP_ERR: 1644 call detach_and_count (SUS_ERR); 1645 call release_tape_mpc (SUS_ERR, code); /* let him clean up */ 1646 com_err_ret: 1647 acode = saved_code; 1648 return; 1649 1650 end suspend_tape_mpc; 1651 1652 1653 1654 /* Be sure all mpc's given on comnmand line are configured. */ 1655 1656 validate_mpc_list: 1657 proc; 1658 1659 dcl (i, j) fixed bin; 1660 1661 do i = 1 to mpc_cnt; 1662 do j = 1 to log_mpc_data.n_mpcs; 1663 log_mpc_entryp = addr (log_mpc_data.mpc_entry (j)); 1664 if mpc_list (i) = log_mpc_entry.mpc_name then go to mpc_ok; 1665 end; 1666 call com_err_ (0, name, "MPC ^a is not configured, or is not pollable.", mpc_list (i)); 1667 mpc_list (i) = ""; 1668 mpc_cnt = mpc_cnt - 1; 1669 go to error_return; 1670 mpc_ok: 1671 end; 1672 return; 1673 1674 end validate_mpc_list; 1675 1676 1677 1678 /* Begin Message Documentation 1679* * 1680* * Message: 1681* * poll_mpc: Polled MPC_NAME. 1682* * 1683* * S: $info 1684* * 1685* * T: $run 1686* * 1687* * M: Polled the MPC identified by MPC_NAME and placed the polled 1688* * data in the syserr_log. 1689* * 1690* * Message: 1691* * poll_mpc: I/O error on MPC_NAME ERROR_MESSAGE. 1692* * 1693* * S: $info 1694* * 1695* * T: $run 1696* * 1697* * M: poll_mpc experienced an I/O error atempting to poll the mpc. 1698* * Three consecutive errors for MPC_NAME will suspend polling of 1699* * this mpc. 1700* * 1701* * Message: 1702* * poll_mpc: MPC MPC_NAME has had X ERROR_NAME error(s) since the last poll. 1703* * 1704* * SUSPECT the YYY wwb. (If known). 1705* * 1706* * Please inform your CSD representative. 1707* * 1708* * S: $beep 1709* * 1710* * T: $run 1711* * 1712* * M: An internal mpc error, error data register or LA-PSI error counter, 1713* * was detected in the named MPC. The number of errors detected since 1714* * the last poll is identified by X. The type of error identified by 1715* * ERROR_NAME is an interpretation of the register or counter name, 1716* * i.e., X/Y OPERAND PARITY ERROR. In some cases a board causing 1717* * the error can be identified. if this is the case the SUSPECT board 1718* * will be identified by YYY to aid the FE. 1719* * 1720* * A: Call CSD. 1721* * If the subsystem serviced by this MPC is experiencing other 1722* * errors or the errors encountered between polling cycles is 1723* * increasing remove the MPC from service, if possible. This is 1724* * important for disk subsystems as file system damage may 1725* * occur. 1726* * 1727* * END MESSAGE DOCUMENTATION */ 1728 1729 1 1 /* Begin include file ..... attach_mpc_data.incl.pl1 */ 1 2 1 3 /* Defines the arguments to the attach_mpc_ subroutine */ 1 4 /* Prepared January 1980 by Larry Johnson */ 1 5 1 6 dcl attach_mpc_datap ptr; 1 7 dcl attach_mpc_data_version_1 fixed bin int static options (constant) init (1); 1 8 1 9 dcl 1 attach_mpc_data aligned based (attach_mpc_datap), 1 10 2 version fixed bin, /* Version of this structure (I) */ 1 11 2 mpc_name char (32), /* Name of mpc to attach (I/O) */ 1 12 2 caller_name char (32), /* Name of caller, for error mesages (I) */ 1 13 2 flags unal, 1 14 3 channel_required bit (1), /* Caller has specified IOM and channel (I) */ 1 15 3 bootload_channel bit (1), /* Caller wants bootload channel (I) */ 1 16 3 report bit (1), /* Allow com_err_ cals (I) */ 1 17 3 mbz bit (33), /* (I) */ 1 18 2 iom fixed bin (3), /* Which IOM to use (I/O) */ 1 19 2 channel fixed bin (6), /* Which channel to use (I/O) */ 1 20 2 ioi_index fixed bin, /* Index for caller to talk to ioi (O) */ 1 21 2 rcp_id bit (36), /* ID for calling RCP (O) */ 1 22 2 ioi_channel fixed bin (71), /* Event channel for ioi wakeups (O) */ 1 23 2 max_time_limit fixed bin (71), /* Longest time to wait for I/O to complete (O) */ 1 24 2 max_workspace_size fixed bin (19), /* Largest workspace to use (O) */ 1 25 2 type char (4), /* MPC type, urp, msp, or mtp (O) */ 1 26 2 model fixed bin, /* MPC model number (O) */ 1 27 2 mpc_cardp ptr, /* Pointer to mpc card of mpc attached (O) */ 1 28 2 prph_cardp ptr, /* Pointer to prph card of device attached (O) */ 1 29 2 status_tablep ptr, /* Address of status table for decoding errors (O) */ 1 30 2 device_name char (32); /* Name of device actually attached (O) */ 1 31 1 32 /* End include file ..... attach_mpc_data.incl.pl1 */ 1730 1731 2 1 /* BEGIN INCLUDE FILE ... config_mpc_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 2 2 2 3 dcl mpc_cardp ptr; /* Pointer to an MPC card. */ 2 4 2 5 dcl 1 mpc_card aligned based (mpc_cardp), 2 6 2 word char (4), /* "mpc" */ 2 7 2 name char (4), /* Name of this MPC - e.g., "mspa" */ 2 8 2 model fixed bin, /* Model of this MPC - e.g., 601. */ 2 9 2 port (4), /* Per port information. 12 fields total */ 2 10 3 iom fixed bin (3), /* IOM number */ 2 11 3 chan fixed bin (8), /* Channel number. */ 2 12 3 nchan fixed bin, /* Number of logical channels on this channel. */ 2 13 2 14 2 type_word aligned, 2 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 16 3 pad1 bit (4) unaligned, 2 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 2 18 2 19 dcl 1 mpc_card_array aligned based (mpc_cardp), /* Overlay for MPC port array */ 2 20 2 pad1 (3) bit (36) aligned, 2 21 2 port (divide (max (0, (mpc_card.n_fields - 2)), 3, 17, 0)), 2 22 3 iom fixed bin (3), /* IOM number */ 2 23 3 chan fixed bin (8), /* Channel number. */ 2 24 3 nchan fixed bin; /* Number of logical channels on this channel. */ 2 25 2 26 dcl MPC_CARD_WORD char (4) aligned internal static options (constant) init ("mpc"); 2 27 2 28 /* END INCLUDE FILE ... config_mpc_card.incl.pl1 */ 1732 1733 3 1 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 3 2 3 3 /* T. Casey, May 1978 */ 3 4 3 5 dcl event_call_info_ptr ptr; 3 6 3 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 3 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 3 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 3 10 2 sender bit (36), /* process id of sender */ 3 11 2 origin, 3 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 3 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 3 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 3 15 3 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 1734 1735 4 1 4 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 4 3 4 4 dcl pcwp ptr; /* pointer to PCW */ 4 5 4 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 4 7 (2 command bit (6), /* device command */ 4 8 2 device bit (6), /* device code */ 4 9 2 ext bit (6), /* address extension */ 4 10 2 code bit (3), /* should be "111"b for PCW */ 4 11 2 mask bit (1), /* channel mask bit */ 4 12 2 control bit (2), /* terminate/proceed and marker control bits */ 4 13 2 chan_cmd bit (6), /* type of I/O operation */ 4 14 2 count bit (6), /* record count or control character */ 4 15 2 mbz1 bit (3), 4 16 2 channel bit (6), /* channel number */ 4 17 2 mbz2 bit (27)) unal; 4 18 4 19 dcl idcwp ptr; /* pointer to IDCW */ 4 20 4 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 4 22 (2 command bit (6), /* device command */ 4 23 2 device bit (6), /* device code */ 4 24 2 ext bit (6), /* address extension */ 4 25 2 code bit (3), /* should be "111"b for PCW */ 4 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 4 27 2 control bit (2), /* terminate/proceed and marker control bits */ 4 28 2 chan_cmd bit (6), /* type of I/O operation */ 4 29 2 count bit (6)) unal; /* record count or control character */ 4 30 4 31 /* End include file ...... iom_pcw.incl.pl1 */ 4 32 1736 1737 5 1 5 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 5 3 5 4 dcl dcwp ptr, /* pointer to DCW */ 5 5 tdcwp ptr; /* pointer to TDCW */ 5 6 5 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 5 8 (2 address bit (18), /* address for data transfer */ 5 9 2 char_pos bit (3), /* character position */ 5 10 2 m64 bit (1), /* non-zero for mod 64 address */ 5 11 2 type bit (2), /* DCW type */ 5 12 2 tally bit (12)) unal; /* tally for data transfer */ 5 13 5 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 5 15 (2 address bit (18), /* address to transfer to */ 5 16 2 mbz1 bit (4), 5 17 2 type bit (2), /* should be "10"b for TDCW */ 5 18 2 mbz2 bit (9), 5 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 5 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 5 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 5 22 5 23 /* End of include file ...... iom_dcw.incl.pl1 */ 5 24 1738 1739 6 1 6 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 6 3 /* Last modified 3/24/75 by Noel I. Morris */ 6 4 6 5 dcl isp ptr; /* pointer to status structure */ 6 6 6 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 6 8 2 completion, /* completion flags */ 6 9 (3 st bit (1), /* "1"b if status returned */ 6 10 3 er bit (1), /* "1"b if status indicates error condition */ 6 11 3 run bit (1), /* "1"b if channel still running */ 6 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 6 13 2 level fixed bin (3), /* IOM interrupt level */ 6 14 2 offset fixed bin (18), /* DCW list offset */ 6 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 6 16 2 iom_stat bit (72), /* IOM status */ 6 17 2 lpw bit (72); /* LPW residue */ 6 18 6 19 dcl imp ptr; /* pointer to message structure */ 6 20 6 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 6 22 (2 completion like istat.completion, /* completion flags */ 6 23 2 pad bit (11), 6 24 2 level bit (3), /* interrupt level */ 6 25 2 offset bit (18), /* DCW list offset */ 6 26 2 status bit (36)) unal; /* first 36 bits of status */ 6 27 6 28 /* End of include file ...... ioi_stat.incl.pl1 */ 6 29 1740 1741 7 1 /* Begin include file ..... dump_mpc_data.incl.pl1 */ 7 2 7 3 /* Structure of data used by the dump_mpc command */ 7 4 7 5 /* Written March 1977 by Larry Johnson */ 7 6 /* Modified Jan 1981 by Rich Coppola to add additional info about mpc's */ 7 7 /* Modified May 1982 by Rich Coppola to add structure for EURC statistics */ 7 8 /* 7 9* Modified June 1984 by Paul Farley to add MSP800(DAU) support. 7 10**/ 7 11 7 12 dcl mpc_datap ptr; 7 13 7 14 dcl 1 mpc_data aligned based (mpc_datap), 7 15 2 type char (4), /* Type of mpc: tape, disk, or urc */ 7 16 2 name char (32), /* Name of device, suitable for headings */ 7 17 2 model fixed bin, /* Model of device, from rcp_ */ 7 18 2 fw_rev char (2), /* Revision level of current firmware */ 7 19 2 trace_start fixed bin, /* Address of first trace table entry */ 7 20 2 trace_size fixed bin, /* Total number of mpc words in trace table */ 7 21 2 trace_cur fixed bin, /* Address of next available trace entry */ 7 22 2 mpc_stat_addr fixed bin, /* Address of mpc error counters */ 7 23 2 mpc_err_int_ctr_addr fixed bin, /* Address of the err int ctr */ 7 24 2 mpc_err_data_reg_addr fixed bin, /* Address of error data register */ 7 25 2 dev_stat_addr fixed bin, /* Address of device statistics table */ 7 26 2 config_sw bit (16), /* Settings of switches on maintaince panel */ 7 27 2 dau_rev bit (8); /* Revision of DAU hardware */ 7 28 7 29 7 30 /* structure of data collected on mpc statistics */ 7 31 7 32 dcl mpc_stat_infop ptr; 7 33 7 34 dcl 1 mpc_stat_info aligned based (mpc_stat_infop), 7 35 2 mpc_name char (4), 7 36 2 stat_counters (12) fixed bin, 7 37 2 error_data, 7 38 3 pad bit (8), 7 39 3 int_counter fixed bin (8) uns, 7 40 3 register bit (16), 7 41 3 auxar bit (16), 7 42 3 intar bit (16), 7 43 2 eurc_data, 7 44 3 uptime_clock fixed bin (32) uns, 7 45 3 prom_revision, 7 46 4 core bit (8), 7 47 4 iom bit (8), 7 48 4 special_controller bit (8), 7 49 4 link_edit bit (8), 7 50 4 pdsi_application bit (8), 7 51 4 self_test bit (8), 7 52 4 dai_application bit (8), 7 53 2 ndev fixed bin, 7 54 2 dev_info (64) like dev_stat_info; 7 55 7 56 dcl dev_stat_infop ptr; 7 57 7 58 dcl 1 dev_stat_info aligned based (dev_stat_infop), 7 59 2 subsystem char (4), 7 60 2 model char (6), 7 61 2 driveno fixed bin, 7 62 2 opi bit (1), 7 63 2 port fixed bin, 7 64 2 ca fixed bin, 7 65 2 stat (16) fixed bin (16) uns; 7 66 7 67 dcl mpc_stat_analp ptr; 7 68 7 69 dcl 1 mpc_stat_anal based (mpc_stat_analp), 7 70 2 num_interps fixed bin, 7 71 2 interpretation (16), 7 72 3 message char (43) var, 7 73 3 HINT char (21) var, 7 74 2 auxar bit (16), 7 75 2 intar bit (16), 7 76 2 err_ctr fixed bin, 7 77 2 mpc_stat_ctrs, 7 78 3 num_ctr_interps fixed bin, 7 79 3 interp_stat_ctrs (20) char (20) var, 7 80 3 stat_cntr_cnt (20) fixed bin; 7 81 7 82 /* End include file ..... dump_mpc_data.incl.pl1 */ 1742 1743 8 1 /* Begin include file ..... iox_modes.incl.pl1 */ 8 2 8 3 /* Written by C. D. Tavares, 03/17/75 */ 8 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 8 5 8 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 8 7 ("stream_input", "stream_output", "stream_input_output", 8 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 8 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 8 10 "direct_input", "direct_output", "direct_update"); 8 11 8 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 8 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 8 14 8 15 dcl (Stream_input initial (1), 8 16 Stream_output initial (2), 8 17 Stream_input_output initial (3), 8 18 Sequential_input initial (4), 8 19 Sequential_output initial (5), 8 20 Sequential_input_output initial (6), 8 21 Sequential_update initial (7), 8 22 Keyed_sequential_input initial (8), 8 23 Keyed_sequential_output initial (9), 8 24 Keyed_sequential_update initial (10), 8 25 Direct_input initial (11), 8 26 Direct_output initial (12), 8 27 Direct_update initial (13)) fixed bin int static options (constant); 8 28 8 29 /* End include file ..... iox_modes.incl.pl1 */ 1744 1745 9 1 /* Begin include file . . . . . poll_mpc_data.incl.pl1 */ 9 2 9 3 /* Describes format of syserr binary data logged with mpc polling */ 9 4 /* Prepared April 1980 by Larry Johnson */ 9 5 /* Modified November 1980 by Rich Coppola to add MPC error registers */ 9 6 /* Modified May 1982 by Rich Coppola to add info about EURC */ 9 7 /* Modified June 1983 by Paul Farley to add dev_name to dev_stat structure. 9 8* Modified June 1984 by Paul Farley to add MSP800(DAU) support. 9 9* Also changed structures to version_2, which separates unique data into 9 10* individual definitions. 9 11**/ 9 12 9 13 dcl poll_mpc_datap ptr; 9 14 dcl poll_mpc_specp ptr; /* addr(poll_mpc_data.specific) */ 9 15 dcl poll_mpc_data_version_2 fixed bin int static options (constant) init (2); 9 16 dcl poll_mpc_data_n_devices fixed bin; 9 17 dcl poll_mpc_data_n_stats fixed bin; 9 18 9 19 dcl 1 poll_mpc_data aligned based (poll_mpc_datap), 9 20 2 version fixed bin, 9 21 2 name char (4), /* Name of MPC */ 9 22 2 model fixed bin, /* Model number */ 9 23 2 n_words fixed bin, /* used to get size */ 9 24 2 specific /* Unique data, depending on */ 9 25 (0 refer (poll_mpc_data.n_words)) fixed bin (35); /* MPC model number */ 9 26 9 27 dcl 1 poll_mtp_data aligned based (poll_mpc_specp), 9 28 2 firmware_rev char (2) unal, /* Firmware revision */ 9 29 2 config_sw bit (16) unal, /* Configuration switches */ 9 30 2 pad bit (2) unal, 9 31 2 polled_stat_counters (12) fixed bin, /* LA-PSI error counters */ 9 32 2 polled_error_data, 9 33 3 pad1 bit (8), 9 34 3 interrupt_counter fixed bin (8) uns, /* the error interrupt counter */ 9 35 3 register bit (16), /* the MPC's error data register */ 9 36 3 AUXAR bit (16), /* the auxilliary mpc addr at time of last error */ 9 37 3 INTAR bit (16), /* the addr at which the error occurred */ 9 38 2 n_devices fixed bin, /* Number of devices with statistics */ 9 39 2 n_stats fixed bin, /* Number of non-zero statistics actually logged */ 9 40 2 dev_info (poll_mpc_data_n_devices refer (poll_mtp_data.n_devices)) like dev_info, 9 41 2 stat_info (poll_mpc_data_n_stats refer (poll_mtp_data.n_stats)) like stat_info; 9 42 9 43 dcl 1 poll_msp_data aligned like poll_mtp_data based (poll_mpc_specp); 9 44 9 45 dcl 1 poll_urp_data aligned based (poll_mpc_specp), 9 46 2 interrupt_counter fixed bin (8) uns, /* the error interrupt counter */ 9 47 2 register bit (16), /* the MPC's error data register */ 9 48 2 INTAR bit (16); /* thar addr at which the error occurred */ 9 49 9 50 dcl 1 poll_eurc_data aligned based (poll_mpc_specp), 9 51 2 uptime_clock fixed bin (32) uns, 9 52 2 prom_revision unal, 9 53 3 core bit (8), 9 54 3 iom bit (8), 9 55 3 special_controller bit (8), 9 56 3 link_edit bit (8), 9 57 3 pdsi_application bit (8), 9 58 3 self_test bit (8), 9 59 3 dai_application bit (8), 9 60 2 n_devices fixed bin, /* Number of devices with statistics */ 9 61 2 n_stats fixed bin, /* Number of non-zero statistics actually logged */ 9 62 2 dev_info (poll_mpc_data_n_devices refer (poll_eurc_data.n_devices)) like dev_info, 9 63 2 stat_info (poll_mpc_data_n_stats refer (poll_eurc_data.n_stats)) like stat_info; 9 64 9 65 dcl 1 poll_dau_data aligned based (poll_mpc_specp), 9 66 2 fw_rev char (2) unal, /* Firmware revision */ 9 67 2 hw_rev bit (8) unal, /* DAU Revision */ 9 68 2 config unal, 9 69 3 ci_0_online bit (1), 9 70 3 ci_1_online bit (1), 9 71 3 psi0_2trip bit (1), /* 0= 4trip, 1= 2trip */ 9 72 3 psi1_2trip bit (1), 9 73 3 psi2_2trip bit (1), 9 74 3 psi3_2trip bit (1), 9 75 2 pad bit (4) unal, 9 76 2 err_interrupts fixed bin (12) uns unal, 9 77 2 psi_cntr (20) fixed bin (8) unal, 9 78 2 ext_size fixed bin, /* Size of DAU extention info, */ 9 79 /* 0=none, 72=err_int>0 */ 9 80 2 n_devices fixed bin, /* Number of devices with statistics */ 9 81 2 n_stats fixed bin, /* Number of non-zero statistics actually logged */ 9 82 2 err_info (0 refer (poll_dau_data.ext_size)) bit (8) unal, 9 83 2 dev_info (poll_mpc_data_n_devices refer (poll_dau_data.n_devices)) like dev_info, 9 84 2 stat_info (poll_mpc_data_n_stats refer (poll_dau_data.n_stats)) like stat_info; 9 85 9 86 dcl dev_info_ptr ptr; 9 87 9 88 dcl 1 dev_info based (dev_info_ptr), 9 89 2 subsystem char (1) unal, /* X from tapX */ 9 90 2 driveno fixed bin (6) uns unal, /* Drive number */ 9 91 2 opi bit (1) unal, /* Powered on Bit */ 9 92 2 ca fixed bin (2) uns unal, /* CA or TCA number */ 9 93 2 port fixed bin (4) uns unal, /* Port number */ 9 94 2 dev_model char (6) unal, /* Model number */ 9 95 2 dev_name char (7) unal; /* Name of the dev */ 9 96 9 97 dcl stat_info_ptr ptr; 9 98 9 99 dcl 1 stat_info based (stat_info_ptr), 9 100 2 dev_index fixed bin (9) uns unal, /* Index in dev_info, above */ 9 101 2 stat_index fixed bin (9) uns unal, /* Which statistic for that device (1 to 16) */ 9 102 2 pad bit (2) unal, 9 103 2 value fixed bin (16) uns unal; /* Actual value of that stat */ 9 104 9 105 9 106 /* Start of MPC Summary Declarations */ 9 107 9 108 dcl mpc_data_summaryp ptr; 9 109 dcl mpc_data_specp ptr; /* addr(mpc_data_summary.specific) */ 9 110 dcl mpc_data_summary_version_2 fixed bin int static options (constant) init (2); 9 111 dcl mpc_summary_n_devices fixed bin; 9 112 9 113 dcl 1 mpc_data_summary aligned based (mpc_data_summaryp), 9 114 2 version fixed bin, 9 115 2 name char (4), /* Name of MPC */ 9 116 2 model fixed bin, 9 117 2 firmware_rev char (2), /* Firmware revision */ 9 118 9 119 /* *old* MSP, MTP and URP specific data */ 9 120 9 121 2 config_sw bit (16), /* Configuration switches */ 9 122 2 polled_stat_counters (12) fixed bin, /* LA-PSI error counters */ 9 123 2 interrupt_counter fixed bin (35), /* the error interrupt counter */ 9 124 2 register bit (16), /* the MPC's error data register */ 9 125 2 AUXAR bit (16), /* the auxilliary mpc addr at time of last error */ 9 126 2 INTAR bit (16), /* thar addr at which the error occurred */ 9 127 9 128 /* EURC Specific data */ 9 129 9 130 2 eurc_specifics, 9 131 3 uptime_clock fixed bin (32) uns, 9 132 3 prom_revision, 9 133 4 core bit (8), 9 134 4 iom bit (8), 9 135 4 special_controller bit (8), 9 136 4 link_edit bit (8), 9 137 4 pdsi_application bit (8), 9 138 4 self_test bit (8), 9 139 4 dai_application bit (8), 9 140 9 141 /* DAU specific data */ 9 142 9 143 2 hw_rev bit (8) unal, /* DAU Revision */ 9 144 2 config unal, 9 145 3 ci_0_online bit (1), 9 146 3 ci_1_online bit (1), 9 147 3 psi0_2trip bit (1), /* 0= 4trip, 1= 2trip */ 9 148 3 psi1_2trip bit (1), 9 149 3 psi2_2trip bit (1), 9 150 3 psi3_2trip bit (1), 9 151 2 err_interrupts fixed bin (35), 9 152 2 err_info (72) bit (8) unal, 9 153 2 psi_cntr (20) fixed bin (35), 9 154 9 155 /* Device statistical data */ 9 156 9 157 2 n_devices fixed bin, /* Number of devices with statistics */ 9 158 2 dev_stat (mpc_summary_n_devices refer (mpc_data_summary.n_devices)) like dev_stat; 9 159 9 160 dcl dev_stat_ptr ptr; 9 161 9 162 dcl 1 dev_stat based (dev_stat_ptr), 9 163 2 subsystem char (1) unal, /* X from tapX */ 9 164 2 driveno fixed bin (6) uns unal, /* Drive number */ 9 165 2 opi bit (1) unal, /* Powered on Bit */ 9 166 2 ca fixed bin (2) uns unal, /* CA or TCA number */ 9 167 2 port fixed bin (4) uns unal, /* Port number */ 9 168 2 pad bit (5) unal, 9 169 2 dev_model char (6) unal, /* Model number */ 9 170 2 prev_driveno fixed bin (6) uns unal, 9 171 2 pad1 bit (3) unal, 9 172 2 dev_name char (6) unal, /* Name of the dev */ 9 173 2 value (16) fixed bin (35); /* Actual value of that stat */ 9 174 9 175 dcl dev_sum_ptr ptr; 9 176 9 177 dcl 1 dev_sum like dev_stat based (dev_sum_ptr); 9 178 9 179 9 180 /* Note: except for the MPC registers only non-zero statistics are logged. 9 181* An entry is made in the stat_info array for each non-zero statistics noting 9 182* which device, and which of the counters was non-zero */ 9 183 9 184 /* End include file . . . . . poll_mpc_data.incl.pl1 */ 1746 1747 10 1 /* BEGIN INCLUDE FILE .. syserr_binary_def.incl.pl1 */ 10 2 10 3 /* This include file has an ALM version, keep 'em in sync. */ 10 4 10 5 /* format: off */ 10 6 10 7 /* Modified January 1984 by Paul Farley to add an array of entry values 10 8* to be examined by display_cpu_error. */ 10 9 /* Modified October 1984 by EJ Sharpe to include SB_audit_message */ 10 10 /* Modified January 1985 by EJ Sharpe for SB_char_data_classes */ 10 11 /* Modified 1985-01-25, BIM: added ring alarm audit support. */ 10 12 /* Modified 1985-02-20, EJ Sharpe: added SB_ibm3270_mde, syserr_binary_(seg vol)damage_class, 10 13* also changed some codes to "SB_unused_NN" - see line comments */ 10 14 10 15 /* In the future, these will be the only constants needed in this include 10 16*file. They are the binary data class strings for messages in the new format 10 17*syserr logs. The names are all of the form SB_ZZZZZZZ_data_class where 10 18*ZZZZZZZ is the value of the data class string. Message expanders are named 10 19*expand_ZZZZZZZ_msg_ and are referenced by the log perusal tools. */ 10 20 10 21 dcl ( /* include file name */ 10 22 SB_io_status_data_class init ("io_status"), /* io_syserr_msg */ 10 23 SB_hwfault_data_class init ("hwfault"), /* syserr_fault_msg */ 10 24 SB_mos_data_class init ("mos"), /* scr */ 10 25 SB_segdamage_data_class init ("segdamage"), /* segdamage_msg */ 10 26 SB_voldamage_data_class init ("voldamage"), /* segdamage_msg (first two words) */ 10 27 SB_mdc_del_uidpath_data_class init ("mdc_del_uidpath"), /* none - 16 word UID path */ 10 28 SB_mmdam_data_class init ("mmdam"), /* syserr_mmdam_msg */ 10 29 SB_mpc_poll_data_class init ("mpc_poll"), /* poll_mpc_data */ 10 30 SB_fnp_poll_data_class init ("fnp_poll"), /* poll_fnp_data */ 10 31 SB_config_deck_data_class init ("config_deck"), /* config_deck */ 10 32 SB_vtoce_data_class init ("vtoce"), /* vtoce */ 10 33 SB_access_audit_data_class init ("access_audit"), /* access_audit_bin_header */ 10 34 SB_ibm3270_mde_data_class init ("ibm3270_mde") /* ibm3270_mpx_data */ 10 35 ) static internal char (16) varying options (constant); 10 36 10 37 10 38 /************************ 10 39*Once the syserr$binary is replaced with something that takes real data classes 10 40*and all system modules and tools are upgraded to use the new interface, the 10 41*rest of this include file may be discarded. 10 42*************************/ 10 43 10 44 /* The limit of 36 is arbitrary- there is no reason that it can not be 10 45* extended at any time. */ 10 46 10 47 dcl ( 10 48 SB_disk_err init (1), SBL_disk_err init (5), 10 49 SB_hw_fault init (2), SBL_hw_fault init (176), 10 50 SB_io_err init (3), SBL_io_err init (5), 10 51 SB_unused_4 init (4), SBL_unused_4 init (1), /* was "mos_poll" (mos poll time) */ 10 52 SB_mos_err init (5), SBL_mos_err init (2), /* mos memory error data */ 10 53 SB_unused_6 init (6), SBL_unused_6 init (1), /* was "bulk_status" (bulk dcb status) */ 10 54 SB_unused_7 init (7), SBL_unused_7 init (1), /* was "bulk_csb" (bulk csb status) */ 10 55 SB_unused_8 init (8), SBL_unused_8 init (3), /* was "free_st_1" */ 10 56 SB_unused_9 init (9), SBL_unused_9 init (2), /* was "free_st_2" */ 10 57 SB_unused_10 init (10), SBL_unused_10 init (21), /* was "unpr_add" */ 10 58 SB_zerpag init (11), SBL_zerpag init (20), 10 59 SB_unused_12 init (12), SBL_unused_12 init (20), /* was "unpr_add" */ 10 60 SB_vtoc_salv_dam init (13), SBL_vtoc_salv_dam init (20), 10 61 SB_unused_14 init (14), SBL_unused_14 init (20), /* was "page_rw_err" */ 10 62 SB_unused_15 init (15), SBL_unused_15 init (3), /* was "ruad" */ 10 63 SB_random_segdamage init (16), SBL_random_segdamage init (20), 10 64 SB_read_nc init (17), SBL_read_nc init (2), 10 65 SB_unused_18 init (18), SBL_unused_18 init (2), /* was "vtoc_err" */ 10 66 SB_mdc_del_uidpath init (19), SBL_mdc_del_uidpath init (16), 10 67 SB_ocdcm_err init (20), SBL_ocdcm_err init (5), 10 68 SB_mmdam init (21), SBL_mmdam init (2), 10 69 SB_verify_lock init (22), SBL_verify_lock init (176), 10 70 SB_io_err_detail init (23), SBL_io_err_detail init (11), 10 71 SB_mpc_poll init (24), SBL_mpc_poll init (256) /* max */, 10 72 SB_fnp_poll init (25), SBL_fnp_poll init (256) /* max */, 10 73 SB_config_deck init (26), SBL_config_deck init (256) /* 16 cards at 16 words */, 10 74 SB_vtoce init (27), SBL_vtoce init (192), /* 1 VTOCE */ 10 75 SB_access_audit init (28), SBL_access_audit init (256), /* max */ 10 76 SB_ibm3270_mde init (35), SBL_ibm3270_mde init (256), /* max */ 10 77 SB_end_of_table init (36), SBL_end_of_table init (1) 10 78 ) internal static options (constant) fixed bin; 10 79 10 80 10 81 /* The following array is a mapping of the old syserr$binary codes into the 10 82*new data classes for MR11. It is primarily used by syserr_copy to translate 10 83*the binary data codes stored in the wired syserr log (see above) into the data 10 84*classes needed by the ring-0 paged syserr log which is a new format log. It 10 85*is also used by syserr_log_util_ to translate the data classes back into the 10 86*corresponding binary code (for tools not yet upgraded to deal with the new 10 87*format log messages). */ 10 88 10 89 dcl SB_char_data_classes (36) char (16) varying internal static options (constant) 10 90 init ( "io_status", /* 1 */ 10 91 "hwfault", /* 2 */ 10 92 "io_status", /* 3 */ 10 93 "unused_4", /* 4 */ 10 94 "mos", /* 5 */ 10 95 10 96 "unused_6", /* 6 */ 10 97 "unused_7", /* 7 */ 10 98 "unused_8", /* 8 */ 10 99 "unused_9", /* 9 */ 10 100 "unused_10", /* 10 */ 10 101 10 102 "segdamage", /* 11 */ 10 103 "unused_12", /* 12 */ 10 104 "segdamage", /* 13 */ 10 105 "unused_14", /* 14 */ 10 106 "unused_15", /* 15 */ 10 107 10 108 "segdamage", /* 16 */ 10 109 "voldamage", /* 17 */ 10 110 "unused_18", /* 18 */ 10 111 "mdc_del_uidpath", /* 19 */ 10 112 "io_status", /* 20 */ 10 113 10 114 "mmdam", /* 21 */ 10 115 "hwfault", /* 22 */ 10 116 "io_status", /* 23 */ 10 117 "mpc_poll", /* 24 */ 10 118 "fnp_poll", /* 25 */ 10 119 10 120 "config_deck", /* 26 */ 10 121 "vtoce", /* 27 */ 10 122 "access_audit", /* 28 */ 10 123 "unused_29", /* 29 */ 10 124 "unused_30", /* 30 */ 10 125 "unused_31", /* 31 */ 10 126 "unused_32", /* 32 */ 10 127 "unused_33", /* 33 */ 10 128 "unused_34", /* 34 */ 10 129 "ibm3270_mde", /* 35 */ 10 130 "unused_36" /* 36 */ 10 131 ); 10 132 10 133 10 134 /* format: on */ 10 135 10 136 /* These constants are used by various tools which analyze syserr messages and 10 137*still call the old interface "syserr_log_util_". */ 10 138 10 139 dcl syserr_binary_mos_mask init ("060000000000"b3) bit (36) static options (constant); 10 140 dcl syserr_binary_seg_damage_mask init ("000374000000"b3) bit (36) static options (constant); 10 141 dcl syserr_binary_vol_damage_mask init ("003413000000"b3) bit (36) static options (constant); 10 142 dcl syserr_binary_address_damage_mask init ("002010000000"b3) bit (36) static options (constant); 10 143 10 144 dcl display_cpu_error_binary_defs (2) init ( 10 145 2, /** SB_hw_fault */ 10 146 22 /** SB_verify_lock */ 10 147 ) internal static options (constant) fixed bin; 10 148 10 149 /* END INCLUDE FILE syserr_binary_def.incl.pl1 */ 1748 1749 11 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 11 2 11 3 /* T. Casey, May 1978 */ 11 4 11 5 dcl event_wait_info_ptr ptr; 11 6 11 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 11 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 11 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 11 10 2 sender bit (36), /* process id of sender */ 11 11 2 origin, 11 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 11 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 11 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 11 15 11 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 1750 1751 12 1 /* BEGIN INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... 11/13/81 E. N. Kittlitz */ 12 2 12 3 dcl eurc_model_numbers (4) fixed bin internal static init (8001, 8002, 8003, 8004); 12 4 12 5 /* END INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... */ 1752 1753 13 1 /* Begin include file ...... io_special_status.incl.pl1 */ 13 2 /* Written February 1981 by Chris Jones (from iom_stat.incl.pl1) */ 13 3 13 4 13 5 /****^ HISTORY COMMENTS: 13 6* 1) change(88-01-06,Farley), approve(88-03-01,MCR7831), 13 7* audit(88-03-01,Parisek), install(88-03-08,MR12.2-1032): 13 8* Corrected channel size to 6 bits, was incorrectly set to 8. 13 9* END HISTORY COMMENTS */ 13 10 13 11 13 12 dcl io_special_status_ptr ptr; /* pointer to status */ 13 13 13 14 dcl 1 io_special_status based (io_special_status_ptr) aligned, 13 15 /* special status from PSIA */ 13 16 ( 13 17 2 t bit (1), /* entry present bit */ 13 18 2 pad bit (2), 13 19 2 channel bit (6), /* channel number */ 13 20 2 pad1 bit (3), 13 21 2 device bit (6), /* device address */ 13 22 2 pad2 bit (1), 13 23 2 byte2 bit (8), /* device dependent information */ 13 24 2 pad3 bit (1), 13 25 2 byte3 bit (8) 13 26 ) unal; /* device dependent information */ 13 27 13 28 /* End of include file io_special_status.incl.pl1 */ 1754 1755 1756 end poll_mpc; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/08/88 0930.0 poll_mpc.pl1 >special_ldd>install>MR12.2-1032>poll_mpc.pl1 1730 1 08/11/80 1844.3 attach_mpc_data.incl.pl1 >ldd>include>attach_mpc_data.incl.pl1 1732 2 05/08/81 1853.6 config_mpc_card.incl.pl1 >ldd>include>config_mpc_card.incl.pl1 1734 3 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 1736 4 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 1738 5 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 1740 6 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 1742 7 10/08/84 1326.0 dump_mpc_data.incl.pl1 >ldd>include>dump_mpc_data.incl.pl1 1744 8 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 1746 9 04/02/85 1114.7 poll_mpc_data.incl.pl1 >ldd>include>poll_mpc_data.incl.pl1 1748 10 03/15/85 0953.1 syserr_binary_def.incl.pl1 >ldd>include>syserr_binary_def.incl.pl1 1750 11 06/29/79 1727.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 1752 12 05/27/82 1525.6 eurc_model_numbers.incl.pl1 >ldd>include>eurc_model_numbers.incl.pl1 1754 13 03/08/88 0926.7 io_special_status.incl.pl1 >special_ldd>install>MR12.2-1032>io_special_status.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. ATTACH_MPC constant fixed bin(17,0) initial dcl 89 ref 533 ATT_ERR 000111 internal static fixed bin(17,0) initial dcl 98 set ref 537* CMD_EXIT 000010 internal static label variable dcl 75 set ref 260* 440* 606* 765* 936 CODE 004664 automatic fixed bin(35,0) dcl 1039 in procedure "do_tape_io" set ref 1043* 1047* 1048 1056* 1057 1059* 1060 1062* 1063 1065* 1066 1070* 1072 1088* 1090* 1096* 1097 1098 1099 1102* 1103 1104 1108* 1109 1110 1111 1116* 1117 1118 1119 1123* 1125 1126 1132* 1133 1134 1135 1139* 1141 1150 1154* 1156* CODE parameter fixed bin(35,0) dcl 1576 in procedure "suspend_mtp" set ref 1573 1582* 1593* 1598* CONN_ERR 000116 internal static fixed bin(17,0) initial dcl 103 set ref 1024* DETACH_MPC constant fixed bin(17,0) initial dcl 96 ref 948 HINT 15 based varying char(21) array level 3 dcl 7-69 ref 1265 1269 1269 IOI_REL_MTP constant fixed bin(17,0) initial dcl 95 ref 1421 IOI_SUS_MTP constant fixed bin(17,0) initial dcl 91 ref 1611 IOI_WRKSP 000112 internal static fixed bin(17,0) initial dcl 99 set ref 581* IO_ERR 000113 internal static fixed bin(17,0) initial dcl 100 set ref 630* 1591* IPC_ERR 000115 internal static fixed bin(17,0) initial dcl 102 set ref 1011* OP 000110 internal static fixed bin(17,0) initial dcl 88 set ref 533* 543 588* 590* 634 674 731 733* 843 864 898 948* 967 1016 1050 1385* 1387 1421* 1423 1517 1530 1586* 1611* 1613 1624* OPERATION 000005 constant varying char(20) initial array dcl 69 set ref 543* 967* 1016* 1050* 1387* 1423* 1613* READ_DAU constant fixed bin(17,0) initial dcl 97 ref 588 634 READ_MPC_MEM constant fixed bin(17,0) initial dcl 90 ref 590 674 731 843 864 REL_MTP constant fixed bin(17,0) initial dcl 94 ref 1385 1530 SB_mpc_poll 000004 constant fixed bin(17,0) initial dcl 10-47 set ref 666* 721* STAT_ERR 000114 internal static fixed bin(17,0) initial dcl 101 set ref 660* 712* SUS_ERR 000117 internal static fixed bin(17,0) initial dcl 104 set ref 767* 991 1592* 1639* 1643* 1645* SUS_MTP constant fixed bin(17,0) initial dcl 92 ref 898 1517 1624 Stream_output 000205 constant fixed bin(17,0) initial dcl 8-15 set ref 491* WRITE_MPC_MEM constant fixed bin(17,0) initial dcl 93 ref 733 1586 absolute_pathname_ 000130 constant entry external dcl 189 ref 294 acode parameter fixed bin(35,0) dcl 1163 in procedure "drain" set ref 1161 1165* 1168* 1170 1174* 1176 1179* acode parameter fixed bin(35,0) dcl 1003 in procedure "do_io" set ref 1000 1012* 1025* 1030* acode parameter fixed bin(35,0) dcl 1548 in procedure "terminate" set ref 1545 1550* 1558* 1564* acode parameter fixed bin(35,0) dcl 1497 in procedure "special" set ref 1495 1499* 1502* 1506* 1507 1508* 1514* 1525* 1526* 1538* 1539* acode parameter fixed bin(35,0) dcl 1608 in procedure "suspend_tape_mpc" set ref 1605 1630* 1646* acode parameter fixed bin(35,0) dcl 1374 in procedure "release_tape_mpc" set ref 1371 1376 1441* acode parameter fixed bin(35,0) dcl 1039 in procedure "do_tape_io" set ref 1036 1043* 1146* 1150* addr 4 based bit(16) level 3 in structure "buf" packed packed unaligned dcl 144 in procedure "poll_mpc" set ref 866* 873* addr builtin function dcl 243 in procedure "poll_mpc" ref 341 385 454 461 520 527 614 615 621 636 645 645 650 650 655 656 656 676 693 693 698 698 700 700 705 706 706 708 708 763 764 778 786 788 791 797 799 810 817 819 822 827 829 840 850 852 854 858 860 861 896 904 906 923 1044 1045 1075 1079 1174 1174 1483 1512 1663 address based bit(18) level 2 packed packed unaligned dcl 5-7 set ref 788* 799* 819* 829* 852* 860* 906* alarm 4 based bit(1) level 2 dcl 133 set ref 1231 1255* 1318 1329* analyze_device_stat_$rsnnl 000120 constant entry external dcl 185 ref 1087 1563 analyze_ioi_imess_ 000250 constant entry external dcl 231 ref 625 arg based char packed unaligned dcl 108 set ref 265 272 274 274 276* 282 285* 291 291 294* 296* 301 302 302 306 306 310 311 311 313* arg_event_call_info_ptr parameter pointer dcl 33 ref 437 442 603 608 arg_list_ptr 000110 automatic pointer dcl 43 set ref 248* 1187* argl 000104 automatic fixed bin(17,0) dcl 39 set ref 265 272 274 274 276 276 282 285 285 291 291 294 294 296 296 301 302 302 306 306 310 311 311 313 313 1187* argno 000105 automatic fixed bin(17,0) dcl 40 set ref 249* 250 1187* 1192* 1192 1193 1199* 1199 1200 argp 000102 automatic pointer dcl 38 set ref 265 272 274 274 276 282 285 291 291 294 296 301 302 302 306 306 310 311 311 313 1187* attach_data 126 based structure level 2 dcl 110 set ref 527 615 764 923 1075 attach_desc 25 based varying char(256) level 2 dcl 110 set ref 333* 396* 485 attach_mpc_ 000176 constant entry external dcl 210 ref 534 attach_mpc_data based structure level 1 dcl 1-9 set ref 528* attach_mpc_data_version_1 constant fixed bin(17,0) initial dcl 1-7 ref 529 attach_mpc_datap 004544 automatic pointer dcl 1-6 set ref 527* 528 529 530 531 532 534* 543 543 558 563 567 570 573 578 580 615* 616 625 637 638 639 646 677 678 679 694 764* 923* 924 924 925 926 926 927 950* 960 967 967 1006 1016 1016 1020 1046 1050 1050 1056 1062 1065 1075* 1087 1139 1379 1387 1387 1401 1406 1423 1423 1427 1434 1506 1518 1531 1553 1563 1613 1613 1618 auto_event_wait_info 004666 automatic structure level 1 unaligned dcl 1041 set ref 1045 auto_mpc_data 000242 automatic structure level 1 dcl 49 set ref 636 676 bin builtin function dcl 243 ref 282 861 861 867 873 877 880 883 bit builtin function dcl 243 ref 861 867 873 877 880 883 buf based structure level 1 dcl 144 set ref 578 578 861 buf1 based structure level 1 dcl 155 caller_name 11 based char(32) level 2 dcl 1-9 set ref 531* cf_dcw 1 based bit(36) level 2 dcl 175 set ref 817 818* cf_idcw based bit(36) level 2 dcl 175 set ref 810 811* chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 783* 795* 815* 849* 857* 902* channel_id 2 004522 automatic fixed bin(71,0) array level 2 in structure "my_event_wait_list" dcl 57 in procedure "poll_mpc" set ref 1046* 1047* 1166* 1168* 1171* 1177 channel_id based fixed bin(71,0) level 2 in structure "event_wait_info" dcl 11-7 in procedure "poll_mpc" ref 1177 channel_id based fixed bin(71,0) level 2 in structure "event_call_info" dcl 3-7 in procedure "poll_mpc" ref 447 616 char8 000240 automatic char(8) dcl 48 set ref 354* 355 417* 418 450* 452* char_mpc_ 000216 constant entry external dcl 218 ref 645 693 cleanup 004530 stack reference condition dcl 241 ref 375 441 607 clock builtin function dcl 243 ref 419 474 504 525 code 000100 automatic fixed bin(35,0) dcl 943 in procedure "DETACH_MPC_" set ref 950* 953 960* code 005021 automatic fixed bin(35,0) dcl 1374 in procedure "release_tape_mpc" set ref 1376* 1379* 1393* 1395 1401* 1406* 1427* 1429 1430* 1434* code 000100 automatic fixed bin(35,0) dcl 37 in procedure "poll_mpc" set ref 294* 295 296* 353* 356* 357 358* 359* 403* 404 405* 406* 409* 411 412* 413* 420* 421 422* 423* 485* 486 487* 491* 492 493* 494* 507* 508* 513* 534* 536 578* 579 580* 594* 595 654* 656* 658 659* 670* 704* 706* 708* 710 711* 725* 735* 736 741* 742 924* 926* 928* 1187* 1188 1189* code 0(18) based bit(3) level 2 in structure "idcw" packed packed unaligned dcl 4-21 in procedure "poll_mpc" set ref 781* 794* 813* 825* 847* 856* 901* code 005064 automatic fixed bin(35,0) dcl 1608 in procedure "suspend_tape_mpc" set ref 1618* 1621 1626* 1629 1637 1645* codeptr builtin function dcl 243 ref 409 409 1006 1006 com_err_ 000124 constant entry external dcl 187 ref 267 276 285 296 313 323 327 359 369 406 413 423 462 467 487 493 580 626 659 711 960 985 1010 1023 1090 1156 1189 1379 1401 1430 1434 1468 1508 1526 1539 1666 command based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 780* 793* 812* 824* 843* 845* 865* 872* 898* 900* completion based structure level 2 in structure "imess" packed packed unaligned dcl 6-21 in procedure "poll_mpc" completion based structure level 2 in structure "istat" dcl 6-7 in procedure "poll_mpc" config_$find 000122 constant entry external dcl 186 ref 1460 1465 1478 control 4 based structure level 2 in structure "stat_buf" dcl 164 in procedure "poll_mpc" set ref 788 control 2 based structure level 2 in structure "buf1" dcl 155 in procedure "poll_mpc" set ref 906 control 0(22) based bit(2) level 2 in structure "idcw" packed packed unaligned dcl 4-21 in procedure "poll_mpc" set ref 782* 814* 848* control 4 based structure level 2 in structure "buf" dcl 144 in procedure "poll_mpc" set ref 852 conversion 004536 stack reference condition dcl 241 ref 281 283 convert_ipc_code_ 000142 constant entry external dcl 194 ref 358 405 412 422 1009 count 0(30) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 784* cu_$arg_count 000126 constant entry external dcl 188 ref 247 cu_$arg_list_ptr 000132 constant entry external dcl 190 ref 248 cu_$arg_ptr_rel 000134 constant entry external dcl 191 ref 1187 currentsize builtin function dcl 243 ref 666 666 721 721 d451_stat_size constant fixed bin(17,0) initial dcl 64 ref 877 d600_stat_size constant fixed bin(17,0) initial dcl 65 ref 880 data 4 based bit(18) array level 2 packed packed unaligned dcl 175 set ref 642 643 819 829 data_ptr 6 based pointer level 2 dcl 3-7 ref 443 609 dau_buf based structure level 1 dcl 175 dau_data 003773 automatic bit(16) array packed unaligned dcl 53 set ref 642* 643* 645 645 650 650 656 656 dau_rev 23 based bit(8) level 2 dcl 7-14 set ref 646* dau_sw 000023 internal static bit(1) initial packed unaligned dcl 78 set ref 559* 569* 570* 575* 588 592 731 970* dcw based structure level 1 dcl 5-7 dcw1 1 based bit(36) level 2 in structure "buf1" dcl 155 in procedure "poll_mpc" set ref 904 905* dcw1 1 based bit(36) level 2 in structure "buf" dcl 144 in procedure "poll_mpc" set ref 850 851* dcw1 1 based bit(36) level 2 in structure "stat_buf" dcl 164 in procedure "poll_mpc" set ref 786 787* dcw2 3 based bit(36) level 2 in structure "buf" dcl 144 in procedure "poll_mpc" set ref 858 859* dcw2 3 based bit(36) level 2 in structure "stat_buf" dcl 164 in procedure "poll_mpc" set ref 797 798* dcwp 004554 automatic pointer dcl 5-4 set ref 786* 788 789 797* 799 800 817* 819 820 827* 829 830 850* 852 853 858* 860 861 904* 906 907 debug 24 based bit(1) level 3 packed packed unaligned dcl 110 set ref 331* 345 380* 451 543 646 694 967 1016 1050 1387 1423 1518 1531 1553 1613 debug_sw 000103 internal static bit(1) packed unaligned dcl 87 set ref 253* 311* 331 380 decode_mpc_stats_$err_data_ 000202 constant entry external dcl 212 ref 1260 detach_count 000101 automatic fixed bin(17,0) dcl 944 set ref 949* 954* 954 955 detach_mpc_ 000200 constant entry external dcl 211 ref 950 dev_info based structure level 1 packed packed unaligned dcl 9-88 dev_stat based structure level 1 unaligned dcl 9-162 dev_stat_addr 21 based fixed bin(17,0) level 2 dcl 7-14 ref 873 dev_stat_info based structure level 1 dcl 7-58 device_name 44 based char(32) level 2 dcl 1-9 set ref 543* 967* 1016* 1050* 1387* 1423* 1613* disk_sw 000020 internal static bit(1) initial packed unaligned dcl 78 set ref 559* 568* 575* 731 876 970* er 0(01) based bit(1) level 3 packed packed unaligned dcl 6-21 ref 624 1086 1562 err_code parameter fixed bin(17,0) dcl 1373 in procedure "release_tape_mpc" ref 1371 1379 err_code parameter fixed bin(17,0) dcl 980 in procedure "detach_and_count" ref 977 991 err_interrupts 1 based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 9-65 ref 664 1319 1322 1322 1324 1324 1328 1331 err_sum 005005 automatic fixed bin(17,0) dcl 1344 set ref 1346* 1351 1352 1355 1358 1359 error_message 000040 internal static varying char(128) dcl 86 set ref 625* 626* 627* 1081* 1087* 1090* 1093* 1156* 1500* 1551* 1563* error_table_$badopt 000262 external static fixed bin(35,0) dcl 237 set ref 313* error_table_$inconsistent 000264 external static fixed bin(35,0) dcl 238 set ref 369* error_table_$noarg 000260 external static fixed bin(35,0) dcl 236 set ref 276* 327* error_table_$too_many_args 000256 external static fixed bin(35,0) dcl 235 set ref 267* error_table_$unable_to_do_io 000266 external static fixed bin(35,0) dcl 239 ref 1088 1154 1525 1538 eurc_model_numbers 000000 constant fixed bin(17,0) initial array dcl 12-3 ref 562 563 eurc_stats 003725 automatic bit(16) array packed unaligned dcl 52 set ref 689* 690* 698 698 706 706 eurc_sw 000022 internal static bit(1) initial packed unaligned dcl 78 set ref 561* 562 563* 569* 575* 591 681 687 698 706 706* 708* 716 970* event_call_info based structure level 1 dcl 3-7 event_call_info_ptr 004550 automatic pointer dcl 3-5 set ref 442* 443 447 450 608* 609 616 621 event_message 000266 automatic fixed bin(71,0) dcl 50 set ref 355* 356* 418* 420* event_wait_info based structure level 1 dcl 11-7 event_wait_info_ptr 004570 automatic pointer dcl 11-5 set ref 1045* 1070* 1079 1174* 1177 fail_count 3 based fixed bin(17,0) level 2 dcl 133 set ref 344* 748* 983* 983 984 fill 4(32) based bit(4) level 3 packed packed unaligned dcl 144 set ref 886* finish 24(03) based bit(1) level 3 packed packed unaligned dcl 110 set ref 322 361* 466* 472 511 985 finish_sw 000107 internal static bit(1) packed unaligned dcl 87 set ref 257* 310* 351 368 flags 21 based structure level 2 in structure "attach_mpc_data" packed packed unaligned dcl 1-9 in procedure "poll_mpc" flags 24 based structure level 2 in structure "log_mpc_data" packed packed unaligned dcl 110 in procedure "poll_mpc" fw_rev 12 based char(2) level 2 dcl 7-14 set ref 646* 694* get_process_id_ 000140 constant entry external dcl 193 ref 356 356 420 420 get_temp_segment_ 000252 constant entry external dcl 232 ref 654 704 hbound builtin function dcl 243 ref 266 267 267 562 hcs_$wakeup 000136 constant entry external dcl 192 ref 356 420 hint 004734 automatic bit(1) initial packed unaligned dcl 1228 set ref 1228* 1265* 1267* 1269* hphcs_$syserr 000246 constant entry external dcl 230 ref 627 1269 1303 1333 1361 hphcs_$syserr_binary 000244 constant entry external dcl 229 ref 666 721 i 000175 automatic fixed bin(17,0) dcl 45 in procedure "poll_mpc" set ref 340* 341* 384* 385* 453* 454* 501* 503 519 520 562* 563* 641* 642 642 643 643* 681* 683 683 684 684* 687* 689 689 690 690* i 005074 automatic fixed bin(17,0) dcl 1659 in procedure "validate_mpc_list" set ref 1661* 1664 1666 1667* i 004772 automatic fixed bin(17,0) initial dcl 1316 in procedure "dau_err_alarm" set ref 1316* i 005030 automatic fixed bin(17,0) dcl 1454 in procedure "setup_static_data" set ref 1477* 1483* i 004720 automatic fixed bin(17,0) dcl 1212 in procedure "listed_mpc" set ref 1215* 1216* i 004730 automatic fixed bin(17,0) initial dcl 1227 in procedure "mpc_reg_alarm" set ref 1227* 1261* 1262 1265 1269 1269 1269 1269* icode 004654 automatic fixed bin(35,0) dcl 1003 set ref 1006* 1008 1009* 1010* 1012 1020* 1022 1023* 1025 idcw based structure level 1 dcl 4-21 idcw1 based bit(36) level 2 in structure "stat_buf" dcl 164 in procedure "poll_mpc" set ref 778 779* idcw1 based bit(36) level 2 in structure "buf" dcl 144 in procedure "poll_mpc" set ref 840 841* idcw1 based bit(36) level 2 in structure "buf1" dcl 155 in procedure "poll_mpc" set ref 896 897* idcw2 2 based bit(36) level 2 in structure "buf" dcl 144 in procedure "poll_mpc" set ref 854 855* idcw2 2 based bit(36) level 2 in structure "stat_buf" dcl 164 in procedure "poll_mpc" set ref 791 792* idcwp 004552 automatic pointer dcl 4-19 set ref 778* 780 781 782 783 784 791* 793 794 795 810* 812 813 814 815 822* 824 825 840* 843 845 847 848 849 854* 856 857 865 872 896* 898 900 901 902 imess based structure level 1 dcl 6-21 imp 004556 automatic pointer dcl 6-19 set ref 621* 624 624 625* 1079* 1080 1086 1087 1095 1115 1129 1145 1156 1501 1553 1553 1557 1562 1563 index 1 based fixed bin(17,0) level 2 dcl 110 set ref 460 461 480 501 505* 519* 613 614 762 763 interpretation 1 based structure array level 2 unaligned dcl 7-69 interrupt_counter 16 based fixed bin(8,0) level 3 unsigned dcl 9-27 ref 1232 1237 1238 1238 1241 1241 1253 1257 interval 16 based fixed bin(71,0) level 2 dcl 110 set ref 330* 401* 473 475 io_in_progress 24(04) based bit(1) level 3 packed packed unaligned dcl 110 set ref 612 618* 761 1029* 1076* io_special_status based structure level 1 dcl 13-14 io_special_status_ptr 004572 automatic pointer dcl 13-12 set ref 1512* 1513 ioa_ 000144 constant entry external dcl 195 ref 345 457 512 543 646 694 967 1016 1050 1387 1423 1518 1531 1553 1613 ioa_$nnl 000146 constant entry external dcl 195 ref 452 455 iocbp 20 based pointer level 2 dcl 110 set ref 379* 485* 488* 491* 494* 495* 506 507* 508* 509* 650 650* 697 698* 700* ioi_$connect 000214 constant entry external dcl 217 ref 1020 1065 ioi_$get_special_status 000204 constant entry external dcl 213 ref 1506 ioi_$release_devices 000210 constant entry external dcl 215 ref 1406 1427 ioi_$suspend_devices 000206 constant entry external dcl 214 ref 1618 ioi_$workspace 000212 constant entry external dcl 216 ref 578 ioi_channel 26 based fixed bin(71,0) level 2 dcl 1-9 set ref 616 926 926* 927* 1006* 1046 1056* 1062* 1139* ioi_index 24 based fixed bin(17,0) level 2 dcl 1-9 set ref 578* 1020* 1065* 1406* 1427* 1506* 1618* iox_$attach_name 000232 constant entry external dcl 224 ref 485 iox_$close 000236 constant entry external dcl 226 ref 507 iox_$detach_iocb 000240 constant entry external dcl 227 ref 494 508 iox_$open 000234 constant entry external dcl 225 ref 491 ipc_$block 000174 constant entry external dcl 209 ref 1070 1174 ipc_$create_ev_chn 000150 constant entry external dcl 199 ref 403 1047 ipc_$decl_ev_call_chn 000152 constant entry external dcl 200 ref 409 1006 ipc_$decl_ev_wait_chn 000154 constant entry external dcl 201 ref 1056 ipc_$delete_ev_chn 000170 constant entry external dcl 207 ref 513 926 928 ipc_$drain_chn 000160 constant entry external dcl 203 ref 353 1062 1139 1168 ipc_$set_wait_prior 000172 constant entry external dcl 208 ref 1059 istat based structure level 1 dcl 6-7 j 004731 automatic fixed bin(17,0) initial dcl 1227 in procedure "mpc_reg_alarm" set ref 1227* j 005075 automatic fixed bin(17,0) dcl 1659 in procedure "validate_mpc_list" set ref 1662* 1663* j 004773 automatic fixed bin(17,0) initial dcl 1316 in procedure "dau_err_alarm" set ref 1316* k 004746 automatic fixed bin(17,0) dcl 1283 in procedure "mpc_stat_alarm" set ref 1296* 1299 1303* k 004774 automatic fixed bin(17,0) initial dcl 1316 in procedure "dau_err_alarm" set ref 1316* 1322* 1324* 1328 1328* 1333* 1333 k 004732 automatic fixed bin(17,0) initial dcl 1227 in procedure "mpc_reg_alarm" set ref 1227* 1238* 1241* 1253 1253* 1254 1269* k 005004 automatic fixed bin(17,0) dcl 1344 in procedure "dau_stat_alarm" set ref 1358* 1361* 1361 l 004733 automatic fixed bin(17,0) initial dcl 1227 in procedure "mpc_reg_alarm" set ref 1227* l 004775 automatic fixed bin(17,0) initial dcl 1316 in procedure "dau_err_alarm" set ref 1316* level 0(15) based bit(3) level 2 packed packed unaligned dcl 6-21 set ref 624 1095 1115 1129 1145 1156* 1501 1553* 1557 log 24(01) based bit(1) level 3 packed packed unaligned dcl 110 set ref 336* 394* 627 653 703 729 log_mpc_data based structure level 1 dcl 110 set ref 934 1472 1473* log_mpc_data_n_mpcs 000034 internal static fixed bin(17,0) dcl 84 set ref 932* 1458* 1462* 1462 1467 1472 1472 1474 log_mpc_datap 000030 internal static pointer initial dcl 82 set ref 321* 322 330 331 333 334 336 340 341 345 352 353 356 361 379 380 384 385 394 396 397 401 403 409 409* 419 420 426 443* 445 447 451 453 454 460 461 461 464 464 465 466 470 472 473 473 473 474 475 475 475 477 477 480 484 485 485 488 491 494 495 501 503 504 505 506 507 508 509 511 513 519 520 525 527 543 585 609* 610 612 613 614 614 615 618 620 627 646 650 650 653 694 697 698 700 703 729 760* 761 762 763 763 764 923 928 928 934 934 967 985 1006* 1016 1029 1050 1075 1076 1077 1387 1423 1472* 1473 1474 1477 1483 1518 1531 1553 1613 1662 1663 log_mpc_entry based structure level 1 dcl 133 log_mpc_entryp 000032 internal static pointer dcl 83 set ref 341* 343 344 345 385* 387 388 389 390 454* 455 455 461* 462 520* 521 526 526 530 614* 626 627 659 666 711 721 748 763* 982 982 983 983 984 985 988 1216 1231 1232 1232 1235 1237 1238 1238 1241 1255 1256 1257 1269 1287 1293 1296 1297 1303 1318 1319 1322 1322 1324 1329 1330 1331 1333 1352 1355 1358 1359 1361 1483* 1484 1663* 1664 log_sw 000104 internal static bit(1) packed unaligned dcl 87 set ref 254* 301* 336 373 373* 394 mem 5 based bit(18) array level 2 packed packed unaligned dcl 144 set ref 683 684 860 861 871* message 1 based varying char(43) array level 3 in structure "mpc_stat_anal" dcl 7-69 in procedure "poll_mpc" ref 1262 1269 1269 message 2 based fixed bin(71,0) level 2 in structure "event_wait_info" dcl 11-7 in procedure "poll_mpc" set ref 1079 message 2 based fixed bin(71,0) level 2 in structure "event_call_info" dcl 3-7 in procedure "poll_mpc" set ref 450 621 model 34 based fixed bin(17,0) level 2 in structure "attach_mpc_data" dcl 1-9 in procedure "poll_mpc" set ref 563 570 638 678 model 11 based fixed bin(17,0) level 2 in structure "mpc_data" dcl 7-14 in procedure "poll_mpc" set ref 638* 678* 877 more_args 000107 automatic bit(1) packed unaligned dcl 42 set ref 250* 263 275 292 1193* 1200* mpc_attached 000024 internal static bit(1) initial packed unaligned dcl 79 set ref 541* 931* 946 965* mpc_card based structure level 1 dcl 2-5 mpc_cardp 004546 automatic pointer dcl 2-3 set ref 1459* 1460* 1461 1462 1462 1462 1465* 1476* 1478* 1480 1480 1480 1484 mpc_cnt 000176 automatic fixed bin(17,0) dcl 46 set ref 258* 266 271* 271 272 337 338 382 1214 1215 1661 1668* 1668 mpc_data based structure level 1 dcl 7-14 mpc_datap 004560 automatic pointer dcl 7-12 set ref 636* 637 638 639 645* 646 646 650* 656* 676* 677 678 679 693* 694 698* 700* 706* 708* 873 877 mpc_entry 202 based structure array level 2 dcl 110 set ref 341 385 454 461 520 614 763 1483 1663 mpc_list 000177 automatic char(4) array packed unaligned dcl 47 set ref 259* 266 267 267 272* 1216 1664 1666* 1667* mpc_mem_bin 000270 automatic bit(16) array packed unaligned dcl 51 set ref 683* 684* 693 693 700 700 708 708 mpc_memory_size constant fixed bin(17,0) initial dcl 67 ref 144 681 867 mpc_name 1 based char(32) level 2 in structure "attach_mpc_data" dcl 1-9 in procedure "poll_mpc" set ref 530* 543* 558 567 573 580* 639 646* 679 694* 960* 967* 1016* 1050* 1379* 1387* 1401* 1423* 1434* 1518* 1531* 1553* 1613* mpc_name based char(4) level 2 in structure "log_mpc_entry" dcl 133 in procedure "poll_mpc" set ref 345* 455* 462* 530 626* 627* 659* 666* 711* 721* 985* 1216 1269* 1303* 1333* 1361* 1484* 1664 mpc_stat_anal based structure level 1 unaligned dcl 7-69 ref 1251 mpc_stat_analp 004562 automatic pointer dcl 7-67 set ref 1251* 1260* 1261 1262 1265 1269 1269 1269 1269 mtp_suspended 000026 internal static bit(1) initial packed unaligned dcl 81 set ref 1384 1413* 1522* 1535* 1610* 1631* my_event_wait_list 004522 automatic structure level 1 dcl 57 set ref 1044 1174 1174 my_event_wait_list_ptr 004520 automatic pointer dcl 56 set ref 1044* 1070* n_args 000106 automatic fixed bin(17,0) dcl 41 set ref 247* 250 326 1193 1200 n_channels 004522 automatic fixed bin(17,0) initial level 2 dcl 57 set ref 57* 1173* n_mpcs based fixed bin(17,0) level 2 dcl 110 set ref 340 384 453 503 934 1472* 1473 1474* 1477 1662 n_words 3 based fixed bin(17,0) level 2 dcl 9-19 ref 666 666 721 721 name 1 based char(32) level 2 in structure "mpc_data" dcl 7-14 in procedure "poll_mpc" set ref 639* 679* name 000074 constant char(8) initial packed unaligned dcl 68 in procedure "poll_mpc" set ref 267* 276* 285* 296* 313* 323* 327* 345* 359* 369* 406* 413* 423* 462* 467* 487* 493* 512* 531 543* 580* 626* 646* 659* 694* 711* 960* 967* 985* 1010* 1016* 1023* 1050* 1090* 1156* 1189* 1379* 1387* 1401* 1423* 1430* 1434* 1468* 1508* 1518* 1526* 1531* 1539* 1553* 1613* 1666* name 1 based char(4) level 2 in structure "mpc_card" dcl 2-5 in procedure "poll_mpc" ref 1462 1462 1462 1480 1480 1480 1484 next_cycle_sched 14 based fixed bin(71,0) level 2 dcl 110 set ref 419* 473* 473 474 475* 475 477* null builtin function dcl 243 ref 320 379 485 485 488 495 506 509 650 669 697 724 922 928 933 934 934 1459 1461 1476 num_interps based fixed bin(17,0) level 2 dcl 7-69 ref 1261 off_sw 000105 internal static bit(1) packed unaligned dcl 87 set ref 255* 303* 308* 337 339 368 on 10 based bit(1) level 2 dcl 133 set ref 343* 387* 455 521 988* on_sw 000106 internal static bit(1) packed unaligned dcl 87 set ref 256* 304* 307* 337 339 339* 343 344 345* 368 output_file 000112 automatic char(201) packed unaligned dcl 44 in procedure "poll_mpc" set ref 294* 333 396 output_file 24(02) based bit(1) level 3 in structure "log_mpc_data" packed packed unaligned dcl 110 in procedure "poll_mpc" set ref 334* 397* 484 output_file_sw 000102 internal static bit(1) packed unaligned dcl 87 set ref 252* 299* 332 373 395 overrun_count 2 based fixed bin(17,0) level 2 dcl 110 set ref 464* 464 465 470* plural_sw 004747 automatic bit(1) initial packed unaligned dcl 1284 in procedure "mpc_stat_alarm" set ref 1284* 1299* 1301* 1303* plural_sw 004735 automatic bit(1) initial packed unaligned dcl 1228 in procedure "mpc_reg_alarm" set ref 1228* 1254* 1269* poll_dau_data based structure level 1 dcl 9-65 poll_mpc_data based structure level 1 dcl 9-19 set ref 666 666 721 721 poll_mpc_datap 004564 automatic pointer dcl 9-13 set ref 654* 655 656* 666* 666 666 670* 704* 705 706* 708* 721* 721 721 725* 1260* poll_mpc_specp 004566 automatic pointer dcl 9-14 set ref 655* 664 665 669* 705* 717 719 724* 1232 1232 1235 1237 1238 1238 1241 1241 1253 1256 1257 1287 1290 1293 1296 1297 1319 1322 1322 1324 1324 1328 1331 1346 1346 1346 1346 1346 poll_mtp_data based structure level 1 dcl 9-27 polled_error_data 15 based structure level 2 dcl 9-27 polled_stat_counters 1 based fixed bin(17,0) array level 2 dcl 9-27 ref 719 1287 1290 1293 1296 1297 prev_cycle_end 12 based fixed bin(71,0) level 2 dcl 110 set ref 504* prev_err_ctr 6 based fixed bin(17,0) level 2 dcl 133 set ref 389* 1232 1237 1238 1238 1241 1257* 1319 1322 1322 1324 1331* prev_err_reg 5 based bit(16) level 2 dcl 133 set ref 388* 1232 1235 1256* 1330* prev_mpc_start 10 based fixed bin(71,0) level 2 dcl 110 set ref 525* prev_stat_ctr_cnt 7 based fixed bin(17,0) level 2 dcl 133 set ref 390* 1287 1293 1296 1297* 1352 1355 1358 1359* psi_cntr 1(12) based fixed bin(8,0) array level 2 packed packed unaligned dcl 9-65 ref 665 1346 1346 1346 1346 1346 rcp_$detach 000242 constant entry external dcl 228 ref 924 rcp_id 25 based bit(36) level 2 dcl 1-9 set ref 924 924* 925* register 17 based bit(16) level 3 dcl 9-27 ref 717 1232 1235 1256 rel builtin function dcl 243 ref 788 799 819 829 852 860 861 906 rel_count 005020 automatic fixed bin(17,0) dcl 1373 set ref 1377* 1396* 1396 1397 release_temp_segment_ 000254 constant entry external dcl 233 ref 670 725 report 21(02) based bit(1) level 3 packed packed unaligned dcl 1-9 set ref 532* rtrim builtin function dcl 243 ref 333 396 1269 1269 1269 1269 saved_code 005065 automatic fixed bin(35,0) dcl 1608 set ref 1637* 1646 scode 005054 automatic fixed bin(35,0) dcl 1576 set ref 1578* 1580 1582 1588* 1590 1591* 1593 size builtin function dcl 243 ref 578 578 861 spec_sw parameter bit(1) packed unaligned dcl 1040 ref 1036 1094 1145 special_status_flag 004515 automatic bit(1) dcl 54 set ref 1506* 1513 special_status_word 004516 automatic bit(36) dcl 55 set ref 1506* 1512 1518* 1522 1531* 1535 specific 4 based fixed bin(35,0) array level 2 dcl 9-19 set ref 655 705 st_dcw 3 based bit(36) level 2 dcl 175 set ref 827 828* st_idcw 2 based bit(36) level 2 dcl 175 set ref 822 823* stat_buf based structure level 1 dcl 164 stat_info based structure level 1 packed packed unaligned dcl 9-99 stat_mpc_ 000220 constant entry external dcl 219 ref 700 stat_mpc_$dau 000230 constant entry external dcl 223 ref 650 stat_mpc_$eurc 000226 constant entry external dcl 222 ref 698 stat_mpc_$return_dau_data 000222 constant entry external dcl 220 ref 656 stat_mpc_$return_mpc_data 000224 constant entry external dcl 221 ref 706 708 static_log_mpc_datap 000014 internal static pointer initial dcl 76 set ref 320 321 426* 445 610 760 922 933* 934 stats 5 based bit(18) array level 2 packed packed unaligned dcl 164 set ref 689 690 799 status 1 based bit(36) level 2 packed packed unaligned dcl 6-21 set ref 1087 1553* 1563 status_tablep 42 based pointer level 2 dcl 1-9 set ref 625* 1087* 1563* stopped_io 000025 internal static bit(1) initial packed unaligned dcl 80 set ref 1420 1440* 1610* 1623* substr builtin function dcl 243 set ref 265 558 567 573 642* 642 643* 643 683* 683 684* 684 689* 689 690* 690 1262 1265 1462 1462 1462 1480 1480 1480 1522 1535 sum builtin function dcl 243 ref 665 719 1287 1290 1293 1296 1297 1346 t based bit(1) level 2 packed packed unaligned dcl 13-14 ref 1513 tally 0(24) based bit(12) level 2 in structure "dcw" packed packed unaligned dcl 5-7 in procedure "poll_mpc" set ref 789* 800* 820* 830* 853* 861* 907* tally 4(16) based bit(16) level 3 in structure "buf" packed packed unaligned dcl 144 in procedure "poll_mpc" set ref 867* 877* 880* 883* tape_stat_size constant fixed bin(17,0) initial dcl 66 ref 883 tape_sw 000017 internal static bit(1) initial packed unaligned dcl 78 set ref 559* 569* 574* 740 883 970* time_int 000016 internal static fixed bin(17,0) initial dcl 77 set ref 282* 284 330 400* 401 time_out 0(03) based bit(1) level 3 packed packed unaligned dcl 6-21 ref 1080 time_sw 000101 internal static bit(1) packed unaligned dcl 87 set ref 251* 289* 330 400 timer_event 4 based fixed bin(71,0) level 2 dcl 110 set ref 352* 353* 356* 403* 409* 420* 447 477* 513* 928* timer_manager_$alarm_call 000166 constant entry external dcl 206 ref 1068 timer_manager_$alarm_wakeup 000162 constant entry external dcl 204 ref 477 1171 timer_manager_$reset_alarm_call 000164 constant entry external dcl 205 ref 1071 timer_manager_$reset_alarm_wakeup 000156 constant entry external dcl 202 ref 352 1166 times_dumped 1 based fixed bin(35,0) level 2 dcl 133 set ref 526* 526 times_failed 2 based fixed bin(35,0) level 2 dcl 133 set ref 982* 982 type 33 based char(4) level 2 in structure "attach_mpc_data" dcl 1-9 in procedure "poll_mpc" set ref 637 677 type based char(4) level 2 in structure "mpc_data" dcl 7-14 in procedure "poll_mpc" set ref 637* 677* unspec builtin function dcl 243 set ref 355* 355 418* 418 450* 450 528* 1473* urp_sw 000021 internal static bit(1) initial packed unaligned dcl 78 set ref 560* 569* 575* 970* version based fixed bin(17,0) level 2 dcl 1-9 set ref 529* workp 000036 internal static pointer dcl 85 in procedure "poll_mpc" set ref 578* 578 578 585 620* 642 643 683 684 689 690 778 779 786 787 788 791 792 797 798 799 810 811 817 818 819 822 823 827 828 829 840 841 850 851 852 854 855 858 859 860 861 861 866 867 871 873 877 880 883 886 896 897 904 905 906 1077* workp 22 based pointer level 2 in structure "log_mpc_data" dcl 110 in procedure "poll_mpc" set ref 585* 620 1077 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 8-15 Direct_output internal static fixed bin(17,0) initial dcl 8-15 Direct_update internal static fixed bin(17,0) initial dcl 8-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 8-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 8-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 8-15 MPC_CARD_WORD internal static char(4) initial dcl 2-26 SBL_access_audit internal static fixed bin(17,0) initial dcl 10-47 SBL_config_deck internal static fixed bin(17,0) initial dcl 10-47 SBL_disk_err internal static fixed bin(17,0) initial dcl 10-47 SBL_end_of_table internal static fixed bin(17,0) initial dcl 10-47 SBL_fnp_poll internal static fixed bin(17,0) initial dcl 10-47 SBL_hw_fault internal static fixed bin(17,0) initial dcl 10-47 SBL_ibm3270_mde internal static fixed bin(17,0) initial dcl 10-47 SBL_io_err internal static fixed bin(17,0) initial dcl 10-47 SBL_io_err_detail internal static fixed bin(17,0) initial dcl 10-47 SBL_mdc_del_uidpath internal static fixed bin(17,0) initial dcl 10-47 SBL_mmdam internal static fixed bin(17,0) initial dcl 10-47 SBL_mos_err internal static fixed bin(17,0) initial dcl 10-47 SBL_mpc_poll internal static fixed bin(17,0) initial dcl 10-47 SBL_ocdcm_err internal static fixed bin(17,0) initial dcl 10-47 SBL_random_segdamage internal static fixed bin(17,0) initial dcl 10-47 SBL_read_nc internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_10 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_12 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_14 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_15 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_18 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_4 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_6 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_7 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_8 internal static fixed bin(17,0) initial dcl 10-47 SBL_unused_9 internal static fixed bin(17,0) initial dcl 10-47 SBL_verify_lock internal static fixed bin(17,0) initial dcl 10-47 SBL_vtoc_salv_dam internal static fixed bin(17,0) initial dcl 10-47 SBL_vtoce internal static fixed bin(17,0) initial dcl 10-47 SBL_zerpag internal static fixed bin(17,0) initial dcl 10-47 SB_access_audit internal static fixed bin(17,0) initial dcl 10-47 SB_access_audit_data_class internal static varying char(16) initial dcl 10-21 SB_char_data_classes internal static varying char(16) initial array dcl 10-89 SB_config_deck internal static fixed bin(17,0) initial dcl 10-47 SB_config_deck_data_class internal static varying char(16) initial dcl 10-21 SB_disk_err internal static fixed bin(17,0) initial dcl 10-47 SB_end_of_table internal static fixed bin(17,0) initial dcl 10-47 SB_fnp_poll internal static fixed bin(17,0) initial dcl 10-47 SB_fnp_poll_data_class internal static varying char(16) initial dcl 10-21 SB_hw_fault internal static fixed bin(17,0) initial dcl 10-47 SB_hwfault_data_class internal static varying char(16) initial dcl 10-21 SB_ibm3270_mde internal static fixed bin(17,0) initial dcl 10-47 SB_ibm3270_mde_data_class internal static varying char(16) initial dcl 10-21 SB_io_err internal static fixed bin(17,0) initial dcl 10-47 SB_io_err_detail internal static fixed bin(17,0) initial dcl 10-47 SB_io_status_data_class internal static varying char(16) initial dcl 10-21 SB_mdc_del_uidpath internal static fixed bin(17,0) initial dcl 10-47 SB_mdc_del_uidpath_data_class internal static varying char(16) initial dcl 10-21 SB_mmdam internal static fixed bin(17,0) initial dcl 10-47 SB_mmdam_data_class internal static varying char(16) initial dcl 10-21 SB_mos_data_class internal static varying char(16) initial dcl 10-21 SB_mos_err internal static fixed bin(17,0) initial dcl 10-47 SB_mpc_poll_data_class internal static varying char(16) initial dcl 10-21 SB_ocdcm_err internal static fixed bin(17,0) initial dcl 10-47 SB_random_segdamage internal static fixed bin(17,0) initial dcl 10-47 SB_read_nc internal static fixed bin(17,0) initial dcl 10-47 SB_segdamage_data_class internal static varying char(16) initial dcl 10-21 SB_unused_10 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_12 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_14 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_15 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_18 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_4 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_6 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_7 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_8 internal static fixed bin(17,0) initial dcl 10-47 SB_unused_9 internal static fixed bin(17,0) initial dcl 10-47 SB_verify_lock internal static fixed bin(17,0) initial dcl 10-47 SB_voldamage_data_class internal static varying char(16) initial dcl 10-21 SB_vtoc_salv_dam internal static fixed bin(17,0) initial dcl 10-47 SB_vtoce internal static fixed bin(17,0) initial dcl 10-47 SB_vtoce_data_class internal static varying char(16) initial dcl 10-21 SB_zerpag internal static fixed bin(17,0) initial dcl 10-47 Sequential_input internal static fixed bin(17,0) initial dcl 8-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 8-15 Sequential_output internal static fixed bin(17,0) initial dcl 8-15 Sequential_update internal static fixed bin(17,0) initial dcl 8-15 Stream_input internal static fixed bin(17,0) initial dcl 8-15 Stream_input_output internal static fixed bin(17,0) initial dcl 8-15 dev_info_ptr automatic pointer dcl 9-86 dev_stat_infop automatic pointer dcl 7-56 dev_stat_ptr automatic pointer dcl 9-160 dev_sum based structure level 1 unaligned dcl 9-177 dev_sum_ptr automatic pointer dcl 9-175 display_cpu_error_binary_defs internal static fixed bin(17,0) initial array dcl 10-144 iox_modes internal static char(24) initial array dcl 8-6 isp automatic pointer dcl 6-5 mpc_card_array based structure level 1 dcl 2-19 mpc_data_specp automatic pointer dcl 9-109 mpc_data_summary based structure level 1 dcl 9-113 mpc_data_summary_version_2 internal static fixed bin(17,0) initial dcl 9-110 mpc_data_summaryp automatic pointer dcl 9-108 mpc_stat_info based structure level 1 dcl 7-34 mpc_stat_infop automatic pointer dcl 7-32 mpc_summary_n_devices automatic fixed bin(17,0) dcl 9-111 pcw based structure level 1 dcl 4-6 pcwp automatic pointer dcl 4-4 poll_eurc_data based structure level 1 dcl 9-50 poll_mpc_data_n_devices automatic fixed bin(17,0) dcl 9-16 poll_mpc_data_n_stats automatic fixed bin(17,0) dcl 9-17 poll_mpc_data_version_2 internal static fixed bin(17,0) initial dcl 9-15 poll_msp_data based structure level 1 dcl 9-43 poll_urp_data based structure level 1 dcl 9-45 short_iox_modes internal static char(4) initial array dcl 8-12 stat_info_ptr automatic pointer dcl 9-97 syserr_binary_address_damage_mask internal static bit(36) initial packed unaligned dcl 10-142 syserr_binary_mos_mask internal static bit(36) initial packed unaligned dcl 10-139 syserr_binary_seg_damage_mask internal static bit(36) initial packed unaligned dcl 10-140 syserr_binary_vol_damage_mask internal static bit(36) initial packed unaligned dcl 10-141 tdcw based structure level 1 dcl 5-14 tdcwp automatic pointer dcl 5-4 NAMES DECLARED BY EXPLICIT CONTEXT. DETACH 006616 constant label dcl 950 ref 955 DETACH_MPC_ 006603 constant entry internal dcl 941 ref 745 921 991 1581 IOI_SUS_ERR 012626 constant label dcl 1637 ref 1621 RETRY_REL 011335 constant label dcl 1391 ref 1397 SUS_MTP_ERR 012637 constant label dcl 1643 ref 1634 bad_time 001601 constant label dcl 285 ref 281 blocked_too_long 005772 constant entry external dcl 757 ref 1068 1068 1071 1071 build_dau_idcw 006115 constant entry internal dcl 805 ref 592 build_eurc_idcw 006040 constant entry internal dcl 773 ref 591 build_idcw 006166 constant entry internal dcl 835 ref 593 734 1587 build_sus_rel_idcw 006401 constant entry internal dcl 892 ref 1391 1625 com_err_ret 012657 constant label dcl 1646 ref 1640 command_cleanup 006436 constant entry internal dcl 917 ref 375 431 441 514 607 961 1408 1436 common_ret 007776 constant label dcl 1150 set ref 1048 1057 1060 1063 1066 1072 1091 1100 1106 1112 1120 1127 1136 1141 1157 dau_err_alarm 010756 constant entry internal dcl 1313 ref 664 dau_stat_alarm 011063 constant entry internal dcl 1342 ref 665 detach_and_count 006755 constant entry internal dcl 977 ref 537 581 630 660 712 767 1011 1024 1592 1639 1643 do_io 007041 constant entry internal dcl 1000 ref 594 735 do_tape_io 007266 constant entry internal dcl 1036 ref 1393 1588 1626 done 003155 constant label dcl 428 ref 260 363 440 606 765 drain 010043 constant entry internal dcl 1161 ref 1102 1123 err_mess 007574 constant label dcl 1088 ref 1083 1098 1110 1118 1134 error_return 003156 constant label dcl 431 ref 269 278 287 297 314 324 328 371 407 414 424 1190 1469 1669 get_arg 010145 constant entry internal dcl 1184 ref 264 280 293 io_wakeup 004332 constant entry external dcl 603 ref 1006 1006 listed_mpc 010233 constant entry internal dcl 1209 ref 342 386 missing 001507 constant label dcl 276 ref 292 mpc_ok 012756 constant label dcl 1670 ref 1664 mpc_reg_alarm 010275 constant entry internal dcl 1224 ref 717 mpc_stat_alarm 010557 constant entry internal dcl 1281 ref 719 no_special 012037 constant label dcl 1508 poll_mpc 001335 constant entry external dcl 28 process_next_mpc 003661 constant label dcl 501 ref 489 521 538 582 595 631 661 713 736 742 750 768 put_arg 010223 constant entry internal dcl 1196 release_tape_mpc 011224 constant entry internal dcl 1371 ref 766 1591 1597 1645 send_alarm 010340 constant label dcl 1251 ref 1244 setup_static_data 011575 constant entry internal dcl 1451 ref 377 skip_mpc 011735 constant label dcl 1478 ref 1480 spec_drain 007720 constant label dcl 1123 ref 1129 special 011775 constant entry internal dcl 1495 ref 1108 1116 suspend_mtp 012433 constant entry internal dcl 1573 ref 741 suspend_tape_mpc 012516 constant entry internal dcl 1605 ref 1578 terminate 012302 constant entry internal dcl 1545 ref 1096 1132 time_err 007530 constant label dcl 1081 ref 1104 1126 timer_wakeup 003166 constant entry external dcl 437 ref 409 409 update_count 010325 constant label dcl 1238 ref 1235 validate_mpc_list 012663 constant entry internal dcl 1656 ref 338 382 wakeup_end 005761 constant label dcl 745 ref 729 wrong_stat 010002 constant label dcl 1154 ref 1099 1111 1119 1135 1145 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 13752 14242 13056 13762 Length 15270 13056 270 1012 673 110 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME poll_mpc 3546 external procedure is an external procedure. on unit on line 281 64 on unit on unit on line 375 64 on unit on unit on line 441 64 on unit on unit on line 607 64 on unit build_eurc_idcw internal procedure shares stack frame of external procedure poll_mpc. build_dau_idcw internal procedure shares stack frame of external procedure poll_mpc. build_idcw internal procedure shares stack frame of external procedure poll_mpc. build_sus_rel_idcw internal procedure shares stack frame of external procedure poll_mpc. command_cleanup 90 internal procedure is called by several nonquick procedures. DETACH_MPC_ 112 internal procedure is called by several nonquick procedures. detach_and_count internal procedure shares stack frame of external procedure poll_mpc. do_io internal procedure shares stack frame of external procedure poll_mpc. do_tape_io internal procedure shares stack frame of external procedure poll_mpc. drain internal procedure shares stack frame of external procedure poll_mpc. get_arg internal procedure shares stack frame of external procedure poll_mpc. listed_mpc internal procedure shares stack frame of external procedure poll_mpc. mpc_reg_alarm internal procedure shares stack frame of external procedure poll_mpc. mpc_stat_alarm internal procedure shares stack frame of external procedure poll_mpc. dau_err_alarm internal procedure shares stack frame of external procedure poll_mpc. dau_stat_alarm internal procedure shares stack frame of external procedure poll_mpc. release_tape_mpc internal procedure shares stack frame of external procedure poll_mpc. setup_static_data internal procedure shares stack frame of external procedure poll_mpc. special internal procedure shares stack frame of external procedure poll_mpc. terminate internal procedure shares stack frame of external procedure poll_mpc. suspend_mtp internal procedure shares stack frame of external procedure poll_mpc. suspend_tape_mpc internal procedure shares stack frame of external procedure poll_mpc. validate_mpc_list internal procedure shares stack frame of external procedure poll_mpc. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 CMD_EXIT poll_mpc 000014 static_log_mpc_datap poll_mpc 000016 time_int poll_mpc 000017 tape_sw poll_mpc 000020 disk_sw poll_mpc 000021 urp_sw poll_mpc 000022 eurc_sw poll_mpc 000023 dau_sw poll_mpc 000024 mpc_attached poll_mpc 000025 stopped_io poll_mpc 000026 mtp_suspended poll_mpc 000030 log_mpc_datap poll_mpc 000032 log_mpc_entryp poll_mpc 000034 log_mpc_data_n_mpcs poll_mpc 000036 workp poll_mpc 000040 error_message poll_mpc 000101 time_sw poll_mpc 000102 output_file_sw poll_mpc 000103 debug_sw poll_mpc 000104 log_sw poll_mpc 000105 off_sw poll_mpc 000106 on_sw poll_mpc 000107 finish_sw poll_mpc 000110 OP poll_mpc 000111 ATT_ERR poll_mpc 000112 IOI_WRKSP poll_mpc 000113 IO_ERR poll_mpc 000114 STAT_ERR poll_mpc 000115 IPC_ERR poll_mpc 000116 CONN_ERR poll_mpc 000117 SUS_ERR poll_mpc STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME DETACH_MPC_ 000100 code DETACH_MPC_ 000101 detach_count DETACH_MPC_ poll_mpc 000100 code poll_mpc 000102 argp poll_mpc 000104 argl poll_mpc 000105 argno poll_mpc 000106 n_args poll_mpc 000107 more_args poll_mpc 000110 arg_list_ptr poll_mpc 000112 output_file poll_mpc 000175 i poll_mpc 000176 mpc_cnt poll_mpc 000177 mpc_list poll_mpc 000240 char8 poll_mpc 000242 auto_mpc_data poll_mpc 000266 event_message poll_mpc 000270 mpc_mem_bin poll_mpc 003725 eurc_stats poll_mpc 003773 dau_data poll_mpc 004515 special_status_flag poll_mpc 004516 special_status_word poll_mpc 004520 my_event_wait_list_ptr poll_mpc 004522 my_event_wait_list poll_mpc 004544 attach_mpc_datap poll_mpc 004546 mpc_cardp poll_mpc 004550 event_call_info_ptr poll_mpc 004552 idcwp poll_mpc 004554 dcwp poll_mpc 004556 imp poll_mpc 004560 mpc_datap poll_mpc 004562 mpc_stat_analp poll_mpc 004564 poll_mpc_datap poll_mpc 004566 poll_mpc_specp poll_mpc 004570 event_wait_info_ptr poll_mpc 004572 io_special_status_ptr poll_mpc 004654 icode do_io 004664 CODE do_tape_io 004666 auto_event_wait_info do_tape_io 004720 i listed_mpc 004730 i mpc_reg_alarm 004731 j mpc_reg_alarm 004732 k mpc_reg_alarm 004733 l mpc_reg_alarm 004734 hint mpc_reg_alarm 004735 plural_sw mpc_reg_alarm 004746 k mpc_stat_alarm 004747 plural_sw mpc_stat_alarm 004772 i dau_err_alarm 004773 j dau_err_alarm 004774 k dau_err_alarm 004775 l dau_err_alarm 005004 k dau_stat_alarm 005005 err_sum dau_stat_alarm 005020 rel_count release_tape_mpc 005021 code release_tape_mpc 005030 i setup_static_data 005054 scode suspend_mtp 005064 code suspend_tape_mpc 005065 saved_code suspend_tape_mpc 005074 i validate_mpc_list 005075 j validate_mpc_list THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_le_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 tra_ext_2 enable_op shorten_stack ext_entry int_entry any_to_any_truncate_alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ analyze_device_stat_$rsnnl analyze_ioi_imess_ attach_mpc_ char_mpc_ com_err_ config_$find convert_ipc_code_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr_rel decode_mpc_stats_$err_data_ detach_mpc_ get_process_id_ get_temp_segment_ hcs_$wakeup hphcs_$syserr hphcs_$syserr_binary ioa_ ioa_$nnl ioi_$connect ioi_$get_special_status ioi_$release_devices ioi_$suspend_devices ioi_$workspace iox_$attach_name iox_$close iox_$detach_iocb iox_$open ipc_$block ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$decl_ev_wait_chn ipc_$delete_ev_chn ipc_$drain_chn ipc_$set_wait_prior rcp_$detach release_temp_segment_ stat_mpc_ stat_mpc_$dau stat_mpc_$eurc stat_mpc_$return_dau_data stat_mpc_$return_mpc_data timer_manager_$alarm_call timer_manager_$alarm_wakeup timer_manager_$reset_alarm_call timer_manager_$reset_alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$too_many_args error_table_$unable_to_do_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 57 001330 28 001334 247 001343 248 001352 249 001361 250 001363 251 001366 252 001370 253 001371 254 001372 255 001373 256 001374 257 001375 258 001376 259 001377 260 001411 263 001415 264 001420 265 001421 266 001426 267 001431 269 001463 271 001464 272 001465 273 001473 274 001474 275 001505 276 001507 278 001543 280 001544 281 001545 282 001564 283 001577 284 001600 285 001601 287 001635 289 001636 290 001640 291 001641 292 001651 293 001653 294 001654 295 001700 296 001702 297 001734 299 001735 300 001740 301 001741 302 001751 303 001761 304 001764 305 001766 306 001767 307 001777 308 002002 309 002003 310 002004 311 002014 313 002030 314 002062 316 002063 320 002064 321 002071 322 002073 323 002077 324 002123 326 002124 327 002126 328 002151 330 002152 331 002157 332 002163 333 002165 334 002230 336 002233 337 002237 338 002246 339 002251 340 002261 341 002271 342 002276 343 002303 344 002310 345 002314 349 002347 351 002351 352 002354 353 002363 354 002375 355 002377 356 002401 357 002435 358 002437 359 002446 361 002472 363 002476 368 002477 369 002506 371 002531 373 002532 375 002540 377 002562 379 002563 380 002567 382 002574 384 002577 385 002607 386 002614 387 002621 388 002625 389 002626 390 002627 392 002630 394 002632 395 002641 396 002643 397 002706 400 002711 401 002715 403 002721 404 002731 405 002733 406 002742 407 002766 409 002767 411 003013 412 003015 413 003024 414 003050 417 003051 418 003053 419 003055 420 003061 421 003114 422 003116 423 003125 424 003151 426 003152 428 003155 431 003156 433 003162 437 003163 440 003174 441 003200 442 003222 443 003226 445 003231 447 003235 450 003240 451 003243 452 003246 453 003265 454 003275 455 003302 456 003322 457 003324 460 003335 461 003341 462 003344 464 003374 465 003377 466 003402 467 003404 469 003430 470 003431 472 003432 473 003437 474 003442 475 003447 476 003452 477 003453 480 003467 484 003473 485 003476 486 003541 487 003544 488 003570 489 003574 491 003575 492 003615 493 003617 494 003643 495 003655 501 003661 503 003666 504 003670 505 003674 506 003675 507 003701 508 003711 509 003723 511 003727 512 003733 513 003753 514 003765 516 003771 519 003772 520 003773 521 003776 525 004000 526 004004 527 004010 528 004012 529 004015 530 004017 531 004022 532 004025 533 004027 534 004031 536 004041 537 004043 538 004052 541 004053 543 004056 558 004120 559 004126 560 004132 561 004134 562 004135 563 004147 564 004156 565 004160 567 004161 568 004163 569 004166 570 004173 571 004200 573 004201 574 004203 575 004206 578 004213 579 004233 580 004235 581 004266 582 004275 585 004276 588 004302 590 004307 591 004311 592 004316 593 004322 594 004323 595 004325 596 004327 603 004330 606 004340 607 004344 608 004366 609 004372 610 004375 612 004401 613 004404 614 004406 615 004411 616 004413 618 004416 620 004420 621 004422 624 004425 625 004435 626 004454 627 004511 630 004547 631 004556 634 004557 636 004562 637 004564 638 004567 639 004571 641 004574 642 004601 643 004614 644 004626 645 004630 646 004643 650 004705 653 004733 654 004740 655 004762 656 004765 658 005004 659 005006 660 005036 661 005045 664 005046 665 005053 666 005103 669 005154 670 005156 672 005201 674 005202 676 005204 677 005206 678 005211 679 005213 681 005216 683 005227 684 005242 685 005254 687 005257 689 005267 690 005302 691 005314 693 005316 694 005331 697 005367 698 005375 700 005421 703 005441 704 005446 705 005470 706 005473 708 005520 710 005540 711 005542 712 005572 713 005601 716 005602 717 005606 719 005612 721 005631 724 005702 725 005704 729 005727 731 005734 733 005743 734 005745 735 005746 736 005750 737 005752 740 005753 741 005755 742 005757 745 005761 748 005765 750 005770 757 005771 760 006000 761 006003 762 006007 763 006013 764 006016 765 006020 766 006023 767 006030 768 006037 773 006040 778 006041 779 006044 780 006045 781 006047 782 006051 783 006055 784 006057 786 006061 787 006064 788 006066 789 006071 791 006073 792 006075 793 006076 794 006100 795 006102 797 006104 798 006106 799 006107 800 006112 801 006114 805 006115 810 006116 811 006121 812 006122 813 006124 814 006126 815 006132 817 006134 818 006137 819 006141 820 006144 822 006146 823 006150 824 006151 825 006153 827 006155 828 006157 829 006160 830 006163 831 006165 835 006166 840 006167 841 006172 843 006173 845 006201 847 006203 848 006205 849 006211 850 006213 851 006216 852 006220 853 006223 854 006225 855 006227 856 006230 857 006232 858 006234 859 006236 860 006237 861 006242 864 006257 865 006263 866 006266 867 006271 868 006301 871 006302 872 006321 873 006324 876 006334 877 006336 880 006352 881 006362 883 006363 886 006375 888 006400 892 006401 896 006402 897 006405 898 006406 900 006414 901 006416 902 006420 904 006422 905 006425 906 006427 907 006432 909 006434 917 006435 921 006443 922 006450 923 006455 924 006461 925 006516 926 006521 927 006534 928 006540 931 006556 932 006560 933 006561 934 006563 936 006577 941 006602 946 006610 948 006612 949 006614 950 006616 953 006630 954 006632 955 006633 960 006636 961 006673 965 006700 967 006702 970 006745 972 006754 977 006755 982 006757 983 006765 984 006766 985 006771 988 007025 991 007030 994 007040 1000 007041 1006 007043 1008 007067 1009 007071 1010 007100 1011 007124 1012 007133 1013 007136 1016 007137 1020 007201 1022 007216 1023 007220 1024 007244 1025 007253 1026 007256 1029 007257 1030 007263 1032 007265 1036 007266 1043 007270 1044 007272 1045 007274 1046 007276 1047 007301 1048 007312 1050 007314 1056 007356 1057 007370 1059 007372 1060 007401 1062 007403 1063 007415 1065 007417 1066 007434 1068 007436 1070 007461 1071 007474 1072 007507 1075 007511 1076 007515 1077 007520 1079 007522 1080 007525 1081 007530 1083 007536 1086 007537 1087 007542 1088 007574 1090 007577 1091 007631 1093 007632 1094 007637 1095 007645 1096 007653 1097 007655 1098 007657 1099 007661 1100 007663 1102 007664 1103 007666 1104 007670 1106 007672 1108 007673 1109 007675 1110 007677 1111 007701 1112 007703 1114 007704 1115 007705 1116 007707 1117 007711 1118 007713 1119 007715 1120 007717 1123 007720 1125 007722 1126 007724 1127 007726 1129 007727 1132 007734 1133 007736 1134 007740 1135 007742 1136 007744 1139 007745 1141 007757 1145 007761 1146 007774 1148 007775 1150 007776 1152 010001 1154 010002 1156 010005 1157 010042 1161 010043 1165 010045 1166 010046 1168 010055 1170 010067 1171 010073 1173 010112 1174 010114 1176 010132 1177 010136 1179 010141 1180 010143 1182 010144 1184 010145 1187 010146 1188 010165 1189 010167 1190 010214 1192 010215 1193 010216 1194 010222 1196 010223 1199 010224 1200 010226 1201 010232 1209 010233 1214 010235 1215 010244 1216 010253 1217 010265 1218 010267 1224 010275 1227 010276 1228 010302 1231 010304 1232 010310 1235 010320 1237 010323 1238 010325 1241 010333 1244 010336 1247 010337 1251 010340 1253 010344 1254 010351 1255 010355 1256 010361 1257 010364 1260 010366 1261 010376 1262 010405 1265 010421 1267 010431 1269 010433 1274 010553 1276 010556 1281 010557 1284 010560 1287 010561 1290 010605 1293 010625 1296 010650 1297 010672 1299 010712 1303 010720 1308 010755 1313 010756 1316 010757 1318 010763 1319 010767 1322 010776 1324 011002 1328 011004 1329 011012 1330 011014 1331 011015 1333 011021 1337 011062 1342 011063 1346 011064 1351 011146 1352 011150 1355 011155 1358 011156 1359 011160 1361 011162 1366 011223 1371 011224 1376 011226 1377 011230 1379 011232 1384 011265 1385 011271 1387 011273 1391 011335 1393 011336 1395 011342 1396 011344 1397 011345 1401 011350 1406 011401 1408 011413 1413 011417 1420 011421 1421 011424 1423 011426 1427 011470 1429 011502 1430 011504 1434 011530 1436 011564 1440 011570 1441 011572 1443 011574 1451 011575 1458 011576 1459 011600 1460 011602 1461 011614 1462 011620 1465 011634 1466 011647 1467 011650 1468 011653 1469 011677 1472 011700 1473 011712 1474 011722 1476 011724 1477 011726 1478 011735 1480 011750 1483 011762 1484 011770 1485 011772 1486 011774 1495 011775 1499 011777 1500 012000 1501 012006 1502 012013 1503 012015 1506 012016 1507 012034 1508 012037 1510 012063 1512 012064 1513 012066 1514 012074 1515 012076 1517 012077 1518 012103 1522 012137 1525 012146 1526 012152 1527 012200 1529 012201 1530 012202 1531 012204 1535 012240 1538 012246 1539 012252 1540 012300 1543 012301 1545 012302 1550 012304 1551 012305 1553 012313 1557 012356 1558 012363 1559 012366 1562 012367 1563 012372 1564 012426 1565 012431 1568 012432 1573 012433 1578 012435 1580 012437 1581 012441 1582 012445 1583 012450 1586 012451 1587 012454 1588 012455 1590 012461 1591 012463 1592 012474 1593 012503 1594 012506 1597 012507 1598 012513 1599 012515 1605 012516 1610 012520 1611 012523 1613 012525 1618 012567 1621 012601 1623 012603 1624 012606 1625 012610 1626 012611 1629 012615 1630 012617 1631 012621 1632 012624 1634 012625 1637 012626 1639 012627 1640 012636 1643 012637 1645 012646 1646 012657 1648 012662 1656 012663 1661 012664 1662 012673 1663 012703 1664 012710 1665 012714 1666 012716 1667 012750 1668 012753 1669 012755 1670 012756 1672 012760 ----------------------------------------------------------- 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