COMPILATION LISTING OF SEGMENT reconfigure Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/17/89 1342.8 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 9 /****^ HISTORY COMMENTS: 10* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 11* audit(85-12-02,CLJones), install(86-03-21,MR12.0-1033): 12* Fixed to continue 13* adding devices if one cannot be added, if the add_all_attachment was 14* given. 15* 2) change(87-06-12,Lippard), approve(87-06-29,MCR7729), 16* audit(87-07-08,Farley), install(86-08-06,MR12.1-1064): 17* Changed to allow -delete_all_attachments for IOMs when some channels 18* have already been deleted. 19* 3) change(87-10-22,Parisek), approve(87-10-29,MCR7790), 20* audit(88-04-28,GDixon), install(88-05-04,MR12.2-1045): 21* Replace a call to com_err_ with a call to ioa_ for reporting an error 22* resulting from attempting to delete a device which is already in the 23* deleted state. 24* 4) change(88-12-07,Parisek), approve(88-12-30,MCR8040), 25* audit(89-01-04,Farley), install(89-01-17,MR12.3-1005): 26* Revise the rc_messages array declaration so the second dimension of the 27* array represents the actual count of 11 messages. The eleventh message 28* was added for MR12.2. 29* END HISTORY COMMENTS */ 30 /* User-ring and operator interface to reconfiguration software. */ 31 /* Written May 1984 by Chris Jones. */ 32 /* Bugfixes from exposure, July 1984, Chris Jones */ 33 /* Modified to add -force, August 1984, Chris Jones */ 34 /* Modified to avoid duplicate messages on operators' console, add sc_reconfigure_request entrypoint, 35* November 1984, Chris Jones */ 36 /* Modified to use ioa_ on non-error messages, parse fnp names correctly, January 1985, Chris Jones */ 37 /* Modified to correctly handle adding and removing disks with "*_all_attachments", May 1985, Chris Jones */ 38 /* Modified to continue adding devices if one cannot be added, if the add_all_attachment was given. Sept 1985, Paul Farley */ 39 40 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 41 42 reconfigure: 43 rcf: 44 proc options (variable); 45 46 dcl action fixed bin; /* says what kind of thing we're doing */ 47 dcl add_all_sw bit (1) aligned; /* set if -add_all_attachments given */ 48 dcl add_del_sw bit (1) aligned; /* indicates add or delete operation */ 49 dcl arg_count fixed bin; /* number of arguments we were invoked with */ 50 dcl arg_idx fixed bin; /* current argument number */ 51 dcl arg_state fixed bin; /* denotes which of operation, type, or name is next */ 52 dcl backing_out bit (1) aligned; /* set if we're backing out what we've done */ 53 dcl backout_list_ptr ptr; /* pointer to list of things to undo if we have problems */ 54 dcl brief_sw bit (1) aligned; /* set if -brief given */ 55 dcl cdtp ptr; 56 dcl channel_idx fixed bin; /* index into io_config_data.channel_table */ 57 dcl code fixed bin (35); /* system status code */ 58 dcl control_arg bit (1) aligned; /* set if current arg is a control arg */ 59 dcl deadline fixed bin (71); /* when Godot has to go it alone */ 60 dcl delete_all_sw bit (1) aligned; /* set if -delete_all_attachments given */ 61 dcl device_idx fixed bin; /* index into device_table */ 62 dcl error_tag fixed bin (3); /* tag of SCU where problem occurred */ 63 dcl first_frame fixed bin; /* first memory frame to play with */ 64 dcl force_sw bit (1) aligned; /* set if -force used */ 65 dcl i fixed bin; /* random index */ 66 dcl iom_idx fixed bin; /* index into iom_table */ 67 dcl interlace bit (1) aligned; /* set if an SCU is externally interlaced */ 68 dcl mpc_idx fixed bin; /* index into controller_table */ 69 dcl n_frames fixed bin; /* number of frames to play with */ 70 dcl name char (32); /* name of the thing we're fiddling with */ 71 dcl reason char (256) varying; /* used for error messages */ 72 dcl sci_ptr ptr; /* info pointer for ssu_ */ 73 dcl standalone_invocation bit (1) aligned; /* On if called as command rather than an ssu request */ 74 dcl switches (4) bit (36) aligned; /* results from rsw's on a CPU */ 75 dcl tag fixed bin (3); /* CPU, IOM, or SCU identifier */ 76 dcl type_idx fixed bin; /* denotes what kind of thing we're playing with */ 77 78 dcl arg char (argl) based (argp); 79 dcl argl fixed bin (21); 80 dcl argp ptr; 81 82 dcl 1 pi like rsw_1_3.port_info based (pip) unal; 83 /* port info for one port (from rsw) */ 84 dcl pip ptr; 85 86 dcl area area based (area_ptr); 87 dcl area_ptr ptr; 88 89 dcl 1 backout_item aligned based (item_ptr), /* what we have to undo when we cleanup */ 90 2 idx fixed bin, /* how we reference it */ 91 2 type char (8), /* "device", "channel", or "iom" */ 92 2 next_item ptr; /* forward pointer */ 93 dcl item_ptr ptr; 94 dcl ADD bit (1) aligned static options (constant) init ("1"b); 95 dcl DELETE bit (1) aligned static options (constant) init ("0"b); 96 97 dcl TYPES (15) char (16) static options (constant) 98 init ("channel", "chan", "chnl", "cpu", "device", "dv", "prph", "iom", "link_adapter", 99 "la", "mpc", "page", "pages", "mem", "scu"); 100 101 dcl ACTIONS (15) fixed bin static options (constant) 102 init (5, 5, 5, 1, 4, 4, 4, 8, 6, 6, 7, 3, 3, 2, 2); 103 dcl ME char (16) static options (constant) init ("reconfigure"); 104 dcl RCF_V1 char (4) static options (constant) init ("1.00"); 105 dcl RANGE_SEPARATOR char (1) static options (constant) init (":"); 106 dcl REASON_SEPARATOR char (2) static options (constant) init (" 107 "); 108 109 dcl TAGS_STRING char (8) static options (constant) init ("abcdefgh"); 110 dcl TAGS_STRING_UPPER_CASE char (8) static options (constant) init ("ABCDEFGH"); 111 dcl TAGS (0:7) char (1) unal defined TAGS_STRING; 112 113 dcl TEN_SECONDS fixed bin (71) static options (constant) init (10000000); 114 115 dcl error_table_$action_not_performed 116 fixed bin (35) ext static; 117 dcl error_table_$bad_arg fixed bin (35) ext static; 118 dcl error_table_$badopt fixed bin (35) ext static; 119 dcl error_table_$chnl_already_deleted 120 fixed bin (35) ext static; 121 dcl error_table_$inconsistent 122 fixed bin (35) ext static; 123 dcl error_table_$io_not_configured 124 fixed bin (35) ext static; 125 dcl error_table_$io_not_defined 126 fixed bin (35) ext static; 127 dcl error_table_$noarg fixed bin (35) ext static; 128 dcl error_table_$not_base_channel 129 fixed bin (35) ext static; 130 dcl error_table_$too_many_args 131 fixed bin (35) ext static; 132 dcl error_table_$unimplemented_version 133 fixed bin (35) ext static; 134 135 dcl rc_messages$rc_messages 136 (0:7, 11) char (64) aligned ext; 137 138 dcl com_err_ entry () options (variable); 139 dcl cu_$arg_list_ptr entry (ptr); 140 dcl cv_integer_string_check_ 141 entry (char (*), fixed bin, fixed bin (35)) returns (fixed bin (35)); 142 dcl hphcs_$add_channel entry (char (8) aligned, fixed bin (35)); 143 dcl hphcs_$add_cpu entry (fixed bin (3), (4) bit (36) aligned, fixed bin (35)); 144 dcl hphcs_$add_iom entry (fixed bin (3), fixed bin (35)); 145 dcl hphcs_$add_main entry (fixed bin, fixed bin, fixed bin (35)); 146 dcl hphcs_$add_scu entry (fixed bin (3), bit (1) aligned, fixed bin (3), fixed bin (35)); 147 dcl hphcs_$del_cpu entry (fixed bin (3), fixed bin (35)); 148 dcl hphcs_$del_scu entry (fixed bin (3), bit (1) aligned, fixed bin (35)); 149 dcl hphcs_$del_main entry (fixed bin, fixed bin, fixed bin (35)); 150 dcl hphcs_$delete_channel entry (char (8) aligned, fixed bin (35)); 151 dcl hphcs_$delete_iom entry (fixed bin (3), fixed bin (35)); 152 dcl ioa_ entry () options (variable); 153 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, 154 bit (1) aligned); 155 dcl rcp_sys_$add_device entry (char (*), fixed bin (35)); 156 dcl rcp_sys_$delete_device entry (char (*), fixed bin (35)); 157 dcl ssu_$abort_line entry () options (variable); 158 dcl ssu_$arg_count entry (ptr, fixed bin); 159 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 160 dcl ssu_$destroy_invocation 161 entry (ptr); 162 dcl ssu_$get_area entry (ptr, ptr, char (*), ptr); 163 dcl ssu_$print_message entry () options (variable); 164 dcl ssu_$release_area entry (ptr, ptr); 165 dcl ssu_$standalone_invocation 166 entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 167 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 168 169 dcl (addr, after, bin, clock, hbound, index, lbound, mod, null, ptr, rtrim, substr, translate) 170 builtin; 171 172 dcl cleanup condition; 173 174 standalone_invocation = "1"b; 175 sci_ptr, sc_subsystem_info_ptr, cdtp, backout_list_ptr, 176 area_ptr = null (); 177 on cleanup begin; 178 call backout_work_so_far; 179 call clean_up; 180 end; 181 call ssu_$standalone_invocation (sci_ptr, ME, RCF_V1, null (), abort_entry, code); 182 if code ^= 0 then do; 183 call com_err_ (code, ME, "Could not create ssu_ invocation."); 184 return; 185 end; 186 goto RECONFIGURE_COMMON; 187 188 sc_reconfigure_request: 189 entry (p_sci_ptr, p_ssu_info_ptr); 190 191 dcl p_sci_ptr ptr; /* invocation structure pointer */ 192 dcl p_ssu_info_ptr ptr; /* pointer to subsystem info */ 193 194 standalone_invocation = "0"b; 195 cdtp = null (); 196 backout_list_ptr, area_ptr = null (); 197 sci_ptr = p_sci_ptr; 198 sc_subsystem_info_ptr = p_ssu_info_ptr; 199 on cleanup begin; 200 call backout_work_so_far; 201 call clean_up; 202 end; 203 204 RECONFIGURE_COMMON: 205 backing_out = "0"b; 206 call ssu_$arg_count (sci_ptr, arg_count); 207 if arg_count = 0 then 208 call quit_with_usage (0); 209 else if arg_count < 3 then 210 call quit_with_usage (error_table_$noarg); 211 call ssu_$get_area (sci_ptr, null (), "undo list", area_ptr); 212 213 add_all_sw, delete_all_sw = "0"b; 214 brief_sw = "0"b; 215 force_sw = "0"b; 216 arg_state = 0; /* have seen no non-control arguments */ 217 reason = ""; 218 do arg_idx = 1 to arg_count; 219 call ssu_$arg_ptr (sci_ptr, arg_idx, argp, argl); 220 if argl > 0 then 221 if substr (arg, 1, 1) = "-" then 222 control_arg = "1"b; 223 else control_arg = "0"b; 224 else control_arg = "0"b; 225 226 if control_arg then do; 227 if arg = "-add_all_attachments" then 228 add_all_sw = "1"b; 229 else if arg = "-brief" | arg = "-bf" then 230 brief_sw = "1"b; 231 else if arg = "-delete_all_attachments" then 232 delete_all_sw = "1"b; 233 else if arg = "-long" | arg = "-lg" then 234 brief_sw = "0"b; 235 else if arg = "-force" | arg = "-fc" then 236 force_sw = "1"b; 237 else if arg = "-no_force" | arg = "-nfc" then 238 force_sw = "0"b; 239 else call quit (error_table_$badopt, arg); 240 end; 241 else do; /* non-control arg */ 242 arg_state = arg_state + 1; /* one more non-control argument */ 243 244 if arg_state = 1 then do; 245 if arg = "add" then 246 add_del_sw = ADD; 247 else if arg = "delete" | arg = "dl" then 248 add_del_sw = DELETE; 249 else call quit (error_table_$bad_arg, arg); 250 end; 251 else if arg_state = 2 then do; 252 do type_idx = lbound (TYPES, 1) to hbound (TYPES, 1) while (TYPES (type_idx) ^= arg); 253 end; 254 if type_idx > hbound (TYPES, 1) then 255 call quit (error_table_$bad_arg, arg); 256 action = ACTIONS (type_idx); 257 end; 258 else if arg_state = 3 then do; 259 name = arg; /* we'll accept anything for the name at this point */ 260 end; 261 else call quit (error_table_$too_many_args); 262 end; 263 end; 264 265 if arg_state ^= 3 then /* don't have all the pieces */ 266 call quit_with_usage (error_table_$noarg); 267 if (add_all_sw & add_del_sw = DELETE) | (delete_all_sw & add_del_sw = ADD) then 268 call quit (error_table_$inconsistent); 269 270 /**** At this point, we know what we want to do. Now, go do it. ****/ 271 272 goto ACTION_LABEL (action); /* n-way branch on type of thing to reconfigure */ 273 274 ACTION_LABEL (0): 275 call quit (error_table_$bad_arg, "The request is not yet implemented."); 276 277 /**** CPUs ****/ 278 279 ACTION_LABEL (1): /* CPU */ 280 tag = get_tag_from_name (name) - 1; 281 name = "CPU " || rtrim (name); /* for better error messages */ 282 if add_del_sw = ADD then do; /* add case */ 283 call hphcs_$add_cpu (tag, switches, code); 284 if code = rcerr_addcpu_bad_switches then do; /* If config switches in error ... */ 285 rswp = addr (switches (2)); 286 if dps_rsw_2.fault_base then 287 call generate_switch_message ("Fault Base"); 288 if dps_rsw_2.cpu_num ^= 0 then 289 call generate_switch_message ("Processor Number"); 290 291 rswp = addr (switches (4)); 292 do i = 0 to 7; 293 if i < 4 then 294 pip = addr (addr (switches (1)) -> rsw_1_3.port_info (i)); 295 else pip = addr (addr (switches (3)) -> rsw_1_3.port_info (i - 4)); 296 297 if pi.port_assignment then 298 call generate_switch_memory_message ("Port Assignment"); 299 if pi.port_enable then 300 call generate_switch_memory_message ("Port Enable"); 301 if pi.interlace_enable | rsw_4.four (i) then 302 call generate_switch_memory_message ("Interlace"); 303 if pi.mem_size ^= 0 then 304 call generate_switch_memory_message ("Size"); 305 if rsw_4.half (i) then 306 call generate_switch_memory_message ("Half/Full"); 307 end; 308 end; 309 310 else if code = rcerr_addcpu_enable then do; 311 reason = TAGS (bin (switches (1))); /* Get offending SCU tag. */ 312 end; 313 if code ^= 0 then 314 call quit_if_rc_error (code); 315 316 if message_is_called_for () then 317 call ioa_ ("^a is now running.", name); 318 end; 319 else do; /* delete a CPU */ 320 call hphcs_$del_cpu (tag, code); 321 if code ^= 0 then 322 call quit_if_rc_error (code); 323 if message_is_called_for () then 324 call ioa_ ("Deleted ^a.", name); 325 end; 326 goto DONE; 327 328 generate_switch_message: 329 proc (aspect); 330 331 dcl aspect char (*) parameter; 332 333 reason = reason || REASON_SEPARATOR; 334 reason = reason || aspect; 335 return; 336 337 generate_switch_memory_message: 338 entry (aspect); 339 340 reason = reason || REASON_SEPARATOR; 341 reason = reason || "MEM "; 342 reason = reason || TAGS (i); 343 reason = reason || " "; 344 reason = reason || aspect; 345 346 end generate_switch_message; 347 348 ACTION_LABEL (2): /* SCU */ 349 tag = get_tag_from_name (name) - 1; 350 name = "MEM " || rtrim (name); /* for better error messages */ 351 if add_del_sw = ADD then do; /* adding an SCU */ 352 call hphcs_$add_scu (tag, interlace, error_tag, code); 353 if code ^= rcerr_addscu_size & code ^= rcerr_addscu_manual & code ^= 0 & code ^= rcerr_addscu_bigconfig 354 then 355 reason = TAGS (error_tag); 356 if code ^= 0 then 357 call quit_if_rc_error (code); 358 call print_scu_message; 359 end; 360 else do; /* deleting an SCU */ 361 call hphcs_$del_scu (tag, interlace, code); 362 if code ^= 0 then 363 call quit_if_rc_error (code); 364 call print_scu_message; 365 end; 366 goto DONE; 367 368 print_scu_message: 369 proc; 370 371 if message_is_called_for () then 372 call ioa_ ("^[Added^;Removed^] SCU^[s ^s^a and ^a (interlaced)^; ^a^2s^] and ^[their^;its^] memory.", 373 add_del_sw = ADD, interlace, TAGS (tag), TAGS (tag - mod (tag, 2)), TAGS (tag + 1 - mod (tag, 2)), 374 interlace); 375 376 end print_scu_message; 377 378 ACTION_LABEL (3): /* pages */ 379 i = index (name, RANGE_SEPARATOR); 380 if i = 0 then do; /* only one page */ 381 first_frame = cv_integer_string_check_ (name, 8, code); 382 if code ^= 0 then 383 call quit (code, name); 384 n_frames = 1; 385 end; 386 else do; 387 first_frame = cv_integer_string_check_ (substr (name, 1, i - 1), 8, code); 388 if code ^= 0 then 389 call quit (code, substr (name, 1, i - 1)); 390 n_frames = cv_integer_string_check_ (substr (name, i + 1), 8, code); 391 if code ^= 0 then 392 call quit (code, substr (name, i + 1)); 393 n_frames = n_frames - first_frame + 1; 394 end; 395 if add_del_sw = ADD then 396 call hphcs_$add_main (first_frame, n_frames, code); 397 else call hphcs_$del_main (first_frame, n_frames, code); 398 if code ^= 0 then 399 call quit_if_rc_error (code); 400 if message_is_called_for () then 401 call ioa_ ("^[Added^;Removed^] frame^[s ^o thru ^o^; ^o^s^].", add_del_sw = ADD, n_frames ^= 1, 402 first_frame, first_frame + n_frames - 1); 403 goto DONE; 404 405 ACTION_LABEL (4): /* device */ 406 call setup_io_config_ptrs; 407 do device_idx = lbound (device_table.device_entry, 1) to hbound (device_table.device_entry, 1) 408 while (device_table.device_entry (device_idx).name ^= name); 409 end; 410 if device_idx > hbound (device_table.device_entry, 1) then do; 411 code = error_table_$io_not_defined; 412 return; 413 end; 414 if add_del_sw = ADD then 415 call add_device (device_idx, code); 416 else call delete_device (device_idx, code); 417 if code ^= 0 then 418 call quit (code, "Device ^a.", name); 419 if message_is_called_for () then 420 call ioa_ ("^[Added^;Removed^] device ^a.", add_del_sw = ADD, name); 421 goto DONE; 422 423 add_device: 424 proc (idx, code); 425 426 dcl idx fixed bin parameter; 427 dcl code fixed bin (35) parameter; 428 429 dcl desired_configured_setting 430 bit (1) aligned; 431 432 call rcp_sys_$add_device (device_table.device_entry (idx).name, code); 433 desired_configured_setting = "1"b; 434 add_del_device_common: 435 if code ^= 0 then 436 return; 437 deadline = clock () + TEN_SECONDS; 438 do while (clock () < deadline & device_table.device_entry (idx).configured ^= desired_configured_setting); 439 end; 440 if device_table.device_entry (idx).configured = desired_configured_setting then do; 441 code = 0; 442 call add_to_backout_list (idx, "device"); 443 end; 444 else code = error_table_$action_not_performed; 445 /**** RCP should do this work ****/ 446 if device_type (idx) = "fnp" & desired_configured_setting then 447 call add_fnp (idx, code); 448 return; 449 450 delete_device: 451 entry (idx, code); 452 453 if device_type (idx) = "fnp" then do; 454 call delete_fnp (idx, code); 455 if code ^= 0 then 456 return; 457 end; 458 call rcp_sys_$delete_device (device_table.device_entry (idx).name, code); 459 desired_configured_setting = "0"b; 460 goto add_del_device_common; 461 462 end add_device; 463 464 /**** This work should more properly be done in RCP when it gets an FNP device type. ****/ 465 466 add_fnp: 467 proc (idx, code); 468 469 dcl idx fixed bin parameter; 470 dcl code fixed bin (35) parameter; 471 472 dcl n_users fixed bin; 473 474 dcl hphcs_$configure_fnp entry (fixed bin, fixed bin (35)); 475 dcl hphcs_$deconfigure_fnp entry (fixed bin, fixed bin (35)); 476 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 477 dcl multiplexer_mgr_$count_mpx_users 478 entry (char (*), ptr, fixed bin, fixed bin (35)); 479 dcl parse_fnp_name_ entry (char (*)) returns (fixed bin); 480 481 dcl error_table_$io_configured 482 fixed bin (35) ext static; 483 dcl error_table_$io_not_available 484 fixed bin (35) ext static; 485 dcl error_table_$io_not_configured 486 fixed bin (35) ext static; 487 488 call hphcs_$configure_fnp (parse_fnp_name_ (after (device_table.device_entry (idx).name, "fnp")), code); 489 if code = error_table_$io_configured then 490 code = 0; 491 return; 492 493 delete_fnp: 494 entry (idx, code); 495 496 if ^force_sw then do; 497 call initiate_file_ (">sc1", "cdt", R_ACCESS, cdtp, (0), code); 498 if code ^= 0 then 499 return; 500 call multiplexer_mgr_$count_mpx_users (substr (device_table.device_entry (idx).name, 4), cdtp, n_users, 501 code); 502 call terminate_file_ (cdtp, (0), TERM_FILE_TERM, (0)); 503 cdtp = null (); 504 if (code = 0) & (n_users > 0) then do; 505 code = error_table_$io_not_available; 506 return; 507 end; 508 end; 509 call hphcs_$deconfigure_fnp (parse_fnp_name_ (after (device_table.device_entry (idx).name, "fnp")), code); 510 if code = error_table_$io_not_configured then 511 code = 0; 512 return; 513 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 514 515 516 end add_fnp; 517 518 ACTION_LABEL (5): /* channels */ 519 call setup_io_config_ptrs; 520 call canonicalize_channel_name (name); 521 do channel_idx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1) 522 while (name ^= channel_table.channel_entry (channel_idx).name); 523 end; 524 if channel_idx > hbound (channel_table.channel_entry, 1) then 525 call quit (error_table_$io_not_defined, "Channel ^a.", name); 526 if add_del_sw = ADD then do; 527 call add_channel (channel_idx, code); 528 if code ^= 0 then 529 call quit (code, "Channel ^a.", name); 530 end; 531 else do; 532 if delete_all_sw then do; 533 call delete_devices (channel_idx, code); 534 if code ^= 0 then 535 call quit (code, "Channel ^a.", name); 536 end; 537 call delete_channel (channel_idx, code); 538 if code ^= 0 then 539 call quit (code, "Channel ^a.", name); 540 end; 541 if message_is_called_for () then 542 call ioa_ ("^[Added^;Removed^] logical channel ^a.", add_del_sw = ADD, 543 channel_table.channel_entry (idx).name); 544 goto DONE; 545 546 add_channel: 547 proc (idx, code); 548 549 dcl idx fixed bin parameter; 550 dcl code fixed bin (35) parameter; 551 552 dcl add_entry bit (1) aligned; 553 554 add_entry = "1"b; 555 call hphcs_$add_channel (channel_table.channel_entry (idx).name, code); 556 goto add_delete_channel_common; 557 558 delete_channel: 559 entry (idx, code); 560 561 add_entry = "0"b; 562 if delete_all_sw then do; 563 call delete_devices (idx, code); 564 if code ^= 0 then 565 return; 566 end; 567 call hphcs_$delete_channel (channel_table.channel_entry (idx).name, code); 568 add_delete_channel_common: 569 if code = 0 then do; 570 call add_to_backout_list (idx, "channel"); 571 if add_all_sw then 572 call add_devices (idx, code); 573 end; 574 return; 575 576 end add_channel; 577 578 /**** Procedure to add all newly accessible devices after a channel is added ****/ 579 add_devices: 580 proc (channel_idx, code); 581 582 dcl channel_idx fixed bin parameter; 583 dcl code fixed bin (35) parameter; 584 585 dcl device_idx fixed bin; 586 587 do device_idx = lbound (device_table.device_entry, 1) to hbound (device_table.device_entry, 1); 588 if newly_accessible (device_idx, channel_idx) then do; 589 call add_device (device_idx, code); 590 if code ^= 0 then do; 591 if add_all_sw then do; 592 call ssu_$print_message (sci_ptr, code, "Adding device ^a.", 593 device_table.device_entry (device_idx).name); 594 code = 0; /* continue.. */ 595 end; 596 else return; 597 end; 598 else if message_is_called_for () then 599 call ioa_ ("Added device ^a.", device_table.device_entry (device_idx).name); 600 end; 601 end; 602 603 /* Funtion to determine whether a device d is being made accessible by the addition of channel c. 604* For non-disks, this is true if no path other than channel c currently exists to device d. For 605* disks, we insist that two paths be available (to allow IOI and disk_control to peacefully coexist). */ 606 607 newly_accessible: 608 proc (d, c) returns (bit (1) aligned); 609 610 dcl d fixed bin parameter; 611 dcl c fixed bin parameter; 612 613 dcl path_count fixed bin; 614 615 if device_table.device_entry (d).configured then 616 return ("0"b); /* it's previously accessible */ 617 path_count = available_paths (d); 618 if device_type (d) = "dsk" then 619 return ((path_count = 2) & connected (c, d)); 620 else return ((path_count = 1) & connected (c, d)); 621 622 end newly_accessible; 623 624 end add_devices; 625 626 /**** Procedure to delete all devices which are only accessible via a given channel */ 627 delete_devices: 628 proc (channel_idx, code); 629 630 dcl channel_idx fixed bin parameter; 631 dcl code fixed bin (35) parameter; 632 633 dcl device_idx fixed bin; 634 635 code = 0; 636 do device_idx = lbound (device_table.device_entry, 1) to hbound (device_table.device_entry, 1); 637 if needs_this_channel (device_idx, channel_idx) then do; 638 call delete_device (device_idx, code); 639 if code ^= 0 then 640 return; 641 if message_is_called_for () then 642 call ioa_ ("Removed device ^a.", device_table.device_entry (device_idx).name); 643 end; 644 end; 645 646 /* Function which decides if device d requires channel c. The rules are the inverse of newly_accessible above. */ 647 648 needs_this_channel: 649 proc (d, c) returns (bit (1) aligned); 650 651 dcl d fixed bin parameter; 652 dcl c fixed bin parameter; 653 654 dcl path_count fixed bin; 655 656 if ^device_table.device_entry (d).configured then 657 return ("0"b); 658 659 path_count = available_paths (d); 660 if device_type (d) = "dsk" then 661 return ((path_count = 2) & connected (c, d)); 662 else return ((path_count = 1) & connected (c, d)); 663 664 end needs_this_channel; 665 666 end delete_devices; 667 668 canonicalize_channel_name: 669 proc (name); 670 671 dcl name char (*) parameter; 672 673 canonicalize_iom_name: 674 entry (name); 675 676 name = translate (name, "ABCD", "abcd"); 677 return; 678 679 end canonicalize_channel_name; 680 681 base_channel: 682 proc (idx) returns (bit (1) aligned); 683 684 dcl idx fixed bin parameter; 685 686 return (channel_table.channel_entry (idx).base_channel_idx = idx); 687 688 end base_channel; 689 690 device_type: 691 proc (d) returns (char (3)); 692 693 dcl d fixed bin parameter; 694 695 return (substr (device_table.device_entry (d).name, 1, 3)); 696 697 end device_type; 698 699 /**** Function which counts the number of currently available channels to a given device ****/ 700 available_paths: 701 proc (d) returns (fixed bin); 702 703 dcl d fixed bin parameter; /* device index */ 704 705 dcl c fixed bin; /* channel index */ 706 dcl count fixed bin; 707 708 count = 0; 709 do c = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1); 710 if channel_table.channel_entry (c).configured & connected (c, d) then 711 count = count + 1; 712 end; 713 return (count); 714 715 end available_paths; 716 717 connected: 718 proc (c, d) returns (bit (1) aligned); 719 720 dcl c fixed bin parameter; 721 dcl d fixed bin parameter; 722 723 dcl i fixed bin; 724 725 do i = lbound (null () -> device_entry_template.pchan_idx, 1) 726 to hbound (null () -> device_entry_template.pchan_idx, 1) 727 while (device_table.device_entry (d).pchan_idx (i) ^= 0); 728 if channel_table.channel_entry (c).base_channel_idx = device_table.device_entry (d).pchan_idx (i) then 729 return ("1"b); 730 end; 731 return ("0"b); 732 733 end connected; 734 735 ACTION_LABEL (6): /* physical channels */ 736 call setup_io_config_ptrs; 737 call canonicalize_channel_name (name); 738 do channel_idx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1) 739 while (name ^= channel_table.channel_entry (channel_idx).name); 740 end; 741 if channel_idx > hbound (channel_table.channel_entry, 1) then 742 call quit (error_table_$io_not_defined, "Channel ^a.", name); 743 if ^base_channel (channel_idx) then 744 call quit (error_table_$not_base_channel, "Channel ^a.", name); 745 746 if add_del_sw = ADD then 747 call add_physical_channel (channel_idx, code); 748 else call delete_physical_channel (channel_idx, brief_sw, code); 749 if code ^= 0 then 750 call quit (code, "Physical channel ^a.", name); 751 if ^brief_sw then 752 call ioa_ ("^[Added^;Removed^] physical channel ^a.", add_del_sw = ADD, name); 753 goto DONE; 754 755 add_physical_channel: 756 proc (pc_idx, code); 757 758 dcl pc_idx fixed bin parameter; 759 dcl code fixed bin (35) parameter; 760 761 dcl cx fixed bin; 762 763 call add_channel (pc_idx, code); 764 if code ^= 0 then 765 return; 766 do cx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1); 767 if (^base_channel (cx)) & (channel_table.channel_entry (cx).base_channel_idx = pc_idx) then 768 call add_channel (cx, (0)); /* we'll let errors get reported, but we'll keep going */ 769 end; 770 771 end add_physical_channel; 772 773 delete_physical_channel: 774 proc (pc_idx, ignore_sw, code); 775 776 dcl pc_idx fixed bin parameter; 777 dcl ignore_sw bit (1) aligned parameter; 778 dcl code fixed bin (35) parameter; 779 780 dcl cx fixed bin; 781 782 do cx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1); 783 if (^base_channel (cx)) & (channel_table.channel_entry (cx).base_channel_idx = pc_idx) 784 & (channel_table.channel_entry (cx).configured) then 785 call delete_channel (cx, (0)); /* if one of these fails, so will the base */ 786 end; 787 call delete_channel (pc_idx, code); 788 if ignore_sw then 789 code = 0; 790 791 end delete_physical_channel; 792 793 ACTION_LABEL (7): /* MPC */ 794 call setup_io_config_ptrs; 795 do mpc_idx = lbound (controller_table.controller_entry, 1) 796 to hbound (controller_table.controller_entry, 1) 797 while (controller_table.controller_entry (mpc_idx).name ^= name); 798 end; 799 if mpc_idx > hbound (controller_table.controller_entry, 1) then 800 call quit (error_table_$io_not_defined, "Controller ^a.", name); 801 802 code = 0; 803 do channel_idx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1); 804 if (base_channel (channel_idx)) & (channel_table.channel_entry (channel_idx).controller_idx = mpc_idx) 805 then do; 806 if add_del_sw = ADD then 807 call add_physical_channel (channel_idx, code); 808 else if channel_table.channel_entry (channel_idx).configured then 809 call delete_physical_channel (channel_idx, brief_sw, code); 810 if code ^= 0 then 811 call quit (code, "Controller ^a.", name); 812 end; 813 end; 814 if ^brief_sw then 815 call ioa_ ("^[Added^;Removed^] MPC ^a.", add_del_sw = ADD, name); 816 goto DONE; 817 818 ACTION_LABEL (8): /* IOMs */ 819 call setup_io_config_ptrs; 820 call canonicalize_iom_name (name); 821 do iom_idx = lbound (iom_table.iom_entry, 1) to hbound (iom_table.iom_entry, 1) 822 while (iom_table.iom_entry (iom_idx).name ^= name); 823 end; 824 if iom_idx > hbound (iom_table.iom_entry, 1) then 825 call quit (error_table_$io_not_defined, "IOM ^a.", name); 826 827 if add_del_sw = ADD then do; 828 call add_iom (iom_idx, code); 829 if code ^= 0 then 830 call quit (code, "IOM ^a.", name); 831 end; 832 833 if add_all_sw | delete_all_sw then 834 do channel_idx = lbound (channel_table.channel_entry, 1) to hbound (channel_table.channel_entry, 1); 835 if (base_channel (channel_idx)) & (iom_idx = channel_table.channel_entry (channel_idx).iom_idx) then do; 836 if add_del_sw = ADD then 837 call add_physical_channel (channel_idx, code); 838 else do; 839 call delete_physical_channel (channel_idx, brief_sw, code); 840 if code = error_table_$chnl_already_deleted then 841 code = 0; 842 end; 843 if code ^= 0 then 844 call quit (code, "Channel ^a.", channel_table.channel_entry (channel_idx).name); 845 end; 846 end; 847 848 if add_del_sw ^= ADD then do; 849 call delete_iom (iom_idx, code); 850 if code ^= 0 then 851 call quit (code, "IOM ^a.", name); 852 end; 853 854 if message_is_called_for () then 855 call ioa_ ("^[Added^;Removed^] IOM ^a.", add_del_sw = ADD, name); 856 goto DONE; 857 858 add_iom: 859 proc (idx, code); 860 861 dcl idx fixed bin parameter; 862 dcl code fixed bin (35) parameter; 863 864 call hphcs_$add_iom (get_tag_from_name ((iom_table.iom_entry (idx).name)), code); 865 goto add_delete_iom_common; 866 867 delete_iom: 868 entry (idx, code); 869 870 call hphcs_$delete_iom (get_tag_from_name ((iom_table.iom_entry (idx).name)), code); 871 872 add_delete_iom_common: 873 if code = 0 then 874 call add_to_backout_list (idx, "iom"); 875 return; 876 877 end add_iom; 878 879 ERROR_RETURN: 880 call backout_work_so_far; 881 DONE: 882 call clean_up; 883 884 return; 885 886 clean_up: proc; 887 888 if cdtp ^= null () then do; 889 call terminate_file_ (cdtp, (0), TERM_FILE_TERM, (0)); 890 cdtp = null (); 891 end; 892 if area_ptr ^= null () then do; 893 call ssu_$release_area (sci_ptr, area_ptr); 894 area_ptr =null (); 895 end; 896 if standalone_invocation then do; 897 call ssu_$destroy_invocation (sci_ptr); 898 sci_ptr = null (); 899 end; 900 end clean_up; 901 902 add_to_backout_list: 903 proc (idx, type); 904 905 dcl idx fixed bin; 906 dcl type char (*) parameter; 907 908 if backing_out then 909 return; /* avoid looping */ 910 allocate backout_item in (area) set (item_ptr); 911 backout_item.idx = idx; 912 backout_item.type = type; 913 backout_item.next_item = backout_list_ptr; 914 backout_list_ptr = item_ptr; 915 916 end add_to_backout_list; 917 918 backout_work_so_far: 919 proc; 920 921 dcl name char (32); 922 923 backing_out = "1"b; 924 if add_del_sw = ADD then do; 925 delete_all_sw = add_all_sw; 926 add_all_sw = "0"b; 927 end; 928 else do; 929 add_all_sw = delete_all_sw; 930 delete_all_sw = "0"b; 931 end; 932 if backout_list_ptr = null () then 933 return; 934 if ^brief_sw then 935 call ioa_ ("**** Restoring configuration. ****"); 936 do while (backout_list_ptr ^= null ()); 937 item_ptr = backout_list_ptr; 938 if backout_item.type = "iom" then do; 939 name = iom_table.iom_entry (backout_item.idx).name; 940 if add_del_sw = ADD then 941 call delete_iom (backout_item.idx, code); 942 else call add_iom (backout_item.idx, code); 943 end; 944 else if backout_item.type = "channel" then do; 945 name = channel_table.channel_entry (backout_item.idx).name; 946 if add_del_sw = ADD then 947 call delete_channel (backout_item.idx, code); 948 else call add_channel (backout_item.idx, code); 949 end; 950 else if backout_item.type = "device" then do; 951 name = device_table.device_entry (backout_item.idx).name; 952 if add_del_sw = ADD then 953 call delete_device (backout_item.idx, code); 954 else call add_device (backout_item.idx, code); 955 end; 956 if code ^= 0 then 957 call ssu_$print_message (sci_ptr, code, "Unable to back out ^[addition^;removal^] of ^a ^a.", 958 add_del_sw = ADD, backout_item.type, name); 959 backout_list_ptr = backout_item.next_item; 960 end; 961 962 end backout_work_so_far; 963 964 get_tag_from_name: 965 proc (name) returns (fixed bin (3)); 966 967 dcl name char (*) parameter; 968 969 return (index (TAGS_STRING, translate (rtrim (name), TAGS_STRING, TAGS_STRING_UPPER_CASE))); 970 971 end get_tag_from_name; 972 973 setup_io_config_ptrs: 974 proc; 975 976 io_config_data_ptr = addr (io_config_data$); 977 if io_config_data.version ^= IO_CONFIG_DATA_VERSION_1 then 978 call quit (error_table_$unimplemented_version, "io_config_data"); 979 io_config_device_table_ptr = ptr (io_config_data_ptr, io_config_data.device_table_offset); 980 if device_table.version ^= IO_CONFIG_DEVICE_TABLE_VERSION_1 then 981 call quit (error_table_$unimplemented_version, "io_config_data.device_table"); 982 983 io_config_channel_table_ptr = ptr (io_config_data_ptr, io_config_data.channel_table_offset); 984 if channel_table.version ^= IO_CONFIG_CHANNEL_TABLE_VERSION_1 then 985 call quit (error_table_$unimplemented_version, "io_config_data.channel_table"); 986 987 io_config_controller_table_ptr = ptr (io_config_data_ptr, io_config_data.controller_table_offset); 988 if controller_table.version ^= IO_CONFIG_CONTROLLER_TABLE_VERSION_1 then 989 call quit (error_table_$unimplemented_version, "io_config_data.controller_table"); 990 991 io_config_iom_table_ptr = ptr (io_config_data_ptr, io_config_data.iom_table_offset); 992 if iom_table.version ^= IO_CONFIG_IOM_TABLE_VERSION_1 then 993 call quit (error_table_$unimplemented_version, "io_config_data.iom_table"); 994 995 end setup_io_config_ptrs; 996 997 abort_entry: 998 proc; 999 1000 goto ERROR_RETURN; 1001 1002 end abort_entry; 1003 1004 quit_with_usage: 1005 proc (code); 1006 1007 dcl code fixed bin (35) parameter; 1008 1009 call quit (code, "Usage: reconfigure op type name {-control_args}"); 1010 1011 end quit_with_usage; 1012 1013 quit: 1014 proc options (variable); 1015 1016 dcl arg_list_ptr ptr; 1017 dcl code fixed bin (35); 1018 dcl message char (128); 1019 1020 call extract_code ("quit"); 1021 if code = error_table_$io_not_configured then 1022 call ioa_ ("Attempt to delete a device which is already deleted. ^a", name); 1023 else do; 1024 call ioa_$general_rs (arg_list_ptr, 2, 3, message, (0), "1"b, "0"b); 1025 call ssu_$abort_line (sci_ptr, code, message); 1026 end; 1027 goto ERROR_RETURN; 1028 1029 extract_code: 1030 proc (name); 1031 1032 dcl name char (*) parameter; 1033 dcl fb35 fixed bin (35) based; 1034 1035 call cu_$arg_list_ptr (arg_list_ptr); 1036 if arg_list_ptr -> arg_list.arg_count < 1 then 1037 call quit (error_table_$noarg, "Internal programming error -- ^a called with no arguments.", name); 1038 code = arg_list_ptr -> arg_list.arg_ptrs (1) -> fb35; 1039 2 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 2 2* 2 3* James R. Davis 10 May 79 */ 2 4 2 5 2 6 2 7 /****^ HISTORY COMMENTS: 2 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 2 9* audit(86-07-15,Schroth): 2 10* added command_name_arglist declaration to allow the storage of the 2 11* command name given to the command processor 2 12* END HISTORY COMMENTS */ 2 13 2 14 dcl 1 arg_list aligned based, 2 15 2 header, 2 16 3 arg_count fixed bin (17) unsigned unal, 2 17 3 pad1 bit (1) unal, 2 18 3 call_type fixed bin (18) unsigned unal, 2 19 3 desc_count fixed bin (17) unsigned unal, 2 20 3 pad2 bit (19) unal, 2 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 2 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 2 23 2 24 2 25 dcl 1 command_name_arglist aligned based, 2 26 2 header, 2 27 3 arg_count fixed bin (17) unsigned unal, 2 28 3 pad1 bit (1) unal, 2 29 3 call_type fixed bin (18) unsigned unal, 2 30 3 desc_count fixed bin (17) unsigned unal, 2 31 3 mbz bit(1) unal, 2 32 3 has_command_name bit(1) unal, 2 33 3 pad2 bit (17) unal, 2 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 2 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 2 36 2 name, 2 37 3 command_name_ptr pointer, 2 38 3 command_name_length fixed bin (21); 2 39 2 40 2 41 2 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 2 43 2 header, 2 44 3 arg_count fixed bin (17) unsigned unal, 2 45 3 pad1 bit (1) unal, 2 46 3 call_type fixed bin (18) unsigned unal, 2 47 3 desc_count fixed bin (17) unsigned unal, 2 48 3 pad2 bit (19) unal, 2 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 2 50 2 envptr ptr, 2 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 2 52 2 53 2 54 dcl ( 2 55 Quick_call_type init (0), 2 56 Interseg_call_type init (4), 2 57 Envptr_supplied_call_type 2 58 init (8) 2 59 ) fixed bin (18) unsigned unal int static options (constant); 2 60 2 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 2 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 2 63* an argument list of the proper size in the user's stack 2 64* 2 65**/ 2 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 1040 1041 1042 end extract_code; 1043 1044 end quit; 1045 1046 quit_if_rc_error: 1047 proc (code); 1048 1049 dcl code fixed bin (35) parameter; 1050 1051 dcl row_idx fixed bin; 1052 1053 /**** rc codes are strange. If the code is less than twice hbound (rc_messages$rc_messages, 2) but greater than 1054* hbound (...), it's a generic error, and its text is gotten from row 0 of the array. If it's in 1055* the range hbound (...), then we use the type of thing we're reconfiguring as a 1056* row index to get the text. If it's non-zero and out of both ranges, we assume it's a standard status code. ****/ 1057 1058 if code = 0 then 1059 return; 1060 1061 if code > 2 * hbound (rc_messages$rc_messages, 2) then 1062 call quit (code, name); 1063 else if code > hbound (rc_messages$rc_messages, 2) then 1064 call quit (0, rc_messages$rc_messages (0, code - hbound (rc_messages$rc_messages, 2)), name, reason); 1065 else do; 1066 if add_del_sw = ADD then 1067 row_idx = 2 * action - 1; 1068 else row_idx = 2 * action; 1069 call quit (0, rc_messages$rc_messages (row_idx, code), name, reason); 1070 end; 1071 1072 end quit_if_rc_error; 1073 1074 /* Procedure which decides if a message should be printed. It honors the -brief switch, and tries to avoid 1075* printing if it knows the message (or one like it) will be printed by ring 0. */ 1076 1077 message_is_called_for: 1078 proc () returns (bit (1) aligned); 1079 1080 if brief_sw then 1081 return ("0"b); 1082 else if standalone_invocation then 1083 return ("1"b); 1084 else return (^sc_subsystem_info.the_system_console); 1085 1086 end message_is_called_for; 1087 1088 /**** The following code should be removed and undocumented as soon as we can find and fix all instances 1089* of problems which would leave the lock unlocked. It's really gross. ****/ 1090 1091 reconfigure$force_unlock: 1092 entry; 1093 1094 dcl 1 auto_rci aligned like rci; 1095 1096 dcl hphcs_$rc_force_unlock entry; 1097 dcl hphcs_$reconfig_info entry (ptr, fixed bin (35)); 1098 1099 standalone_invocation = "1"b; 1100 area_ptr, backout_list_ptr, cdtp, sci_ptr, 1101 sc_subsystem_info_ptr = null (); 1102 1103 on cleanup begin; 1104 call backout_work_so_far; 1105 call clean_up; 1106 end; 1107 1108 backing_out = "0"b; 1109 call ssu_$standalone_invocation (sci_ptr, ME, RCF_V1, null (), abort_entry, code); 1110 if code ^= 0 then do; 1111 call com_err_ (code, ME, "Could not create ssu_ invocation."); 1112 return; 1113 end; 1114 call ssu_$arg_count (sci_ptr, arg_count); 1115 if arg_count ^= 0 then 1116 call quit (error_table_$too_many_args, ""); 1117 1118 call hphcs_$reconfig_info (addr (auto_rci), code); 1119 if code = 0 then 1120 call ssu_$print_message (sci_ptr, 0, "Reconfiguration data not locked."); 1121 else call ssu_$print_message (sci_ptr, 0, "Reconfiguration data locked by ^a", auto_rci.locker_group_id); 1122 1123 call hphcs_$rc_force_unlock; 1124 1125 goto DONE; 1126 3 1 3 2 /* Begin include file ...... rci.incl.pl1 */ 3 3 /* modified 8/77 for 8 CPU's */ 3 4 3 5 dcl rcip ptr; /* pointer to structure */ 3 6 3 7 dcl 1 rci aligned based (rcip), /* for communication between reconfigure and reconfig */ 3 8 2 locker_group_id char (32), /* process group id of locking process */ 3 9 2 controller_data (0: 7) aligned like scs$controller_data, 3 10 2 processor_data (0: 7) aligned like scs$processor_data; 3 11 3 12 3 13 /* End of include file ...... rci.incl.pl1 */ 3 14 1127 4 1 /* BEGIN INCLUDE FILE scs.incl.pl1 ... March 1983 */ 4 2 /* format: style4 */ 4 3 4 4 /* Information about system controllers */ 4 5 4 6 dcl 1 scs$controller_data (0:7) aligned ext, /* per-controller info */ 4 7 2 size fixed bin (17) unaligned, /* size (in 1024 word blocks) of this controller */ 4 8 2 base fixed bin (17) unaligned, /* abs address (0 mod 1024) for base of this controller */ 4 9 2 eima_data (4) unaligned, /* EIMA information for this controller */ 4 10 3 mask_available bit (1) unaligned, /* ON if corresponding mask exists */ 4 11 3 mask_assigned bit (1) unaligned, /* ON if mask assigned to a port */ 4 12 3 mbz bit (3) unaligned, 4 13 3 mask_assignment fixed bin (3) unaligned, /* port to which mask is assigned */ 4 14 2 info aligned, 4 15 3 online bit (1) unaligned, /* ON if controller is online */ 4 16 3 offline bit (1) unaligned, /* ON if controller is offline but can be added */ 4 17 3 store_a_online bit (1) unaligned, /* ON if store A is online */ 4 18 3 store_a1_online bit (1) unaligned, /* ON if store A1 is online */ 4 19 3 store_b_online bit (1) unaligned, /* ON if store B is online */ 4 20 3 store_b1_online bit (1) unaligned, /* ON if store B1 is online */ 4 21 3 store_b_is_lower bit (1) unaligned, /* ON if store B is lower */ 4 22 3 ext_interlaced bit (1) unaligned, /* ON if this SCU is interlaced with other SCU */ 4 23 3 int_interlaced bit (1) unaligned, /* ON if this SCU is internally interlaced */ 4 24 3 four_word bit (1) unaligned, /* ON if external interlace is 4-word */ 4 25 3 cyclic_priority (7) bit (1) unaligned, /* Cyclic priority for adjacent ports */ 4 26 3 type bit (4) unaligned, /* Model number for this controller */ 4 27 3 abs_wired bit (1) unaligned, /* ON if controller can have abs_wired pages */ 4 28 3 program bit (1) unaligned, /* PROGRAM/MANUAL switch setting */ 4 29 3 mbz bit (13) unaligned, 4 30 2 lower_store_size fixed bin (17) unaligned, /* size (in 1024 word blocks) of lower store */ 4 31 2 upper_store_size fixed bin (17) unaligned; /* size (in 1024 word blocks) of upper store */ 4 32 4 33 /* Information about CPUs */ 4 34 4 35 dcl 1 scs$processor_data (0:7) aligned ext, /* information about CPUs in the system */ 4 36 ( 4 37 2 online bit (1), /* "1"b if CPU is online */ 4 38 2 offline bit (1), /* "1"b if CPU is offline but can be added */ 4 39 2 release_mask bit (1), /* "1"b is this CPU is to give up its mask */ 4 40 2 accept_mask bit (1), /* "1"b if this CPU is to grap mask in idle loop */ 4 41 2 delete_cpu bit (1), /* "1"b if this CPU is to delete itself */ 4 42 2 interrupt_cpu bit (1), /* "1"b if this CPU takes hardware interrupts */ 4 43 2 halted_cpu bit (1), /* "1"b if this CPU has stopped itself (going to BOS) */ 4 44 2 cpu_type fixed bin (2) unsigned, /* 0 => DPS or L68, 1 => DPS8 */ 4 45 2 mbz1 bit (6), 4 46 2 cache_size fixed bin (3) unsigned, /* 0 = No cache; 1 = L68 2K cache; 4 47* 2 = DPS8 8K cache; 3 = DPS8 VS&SC 8K cache; 4 48* 4 = DPS8 VS&SC 16K cache; 5 = DPS8 VS&SC 32K cache 4 49* 7 = ignore cache size (set by ISOLTS reconfig) */ 4 50 2 mbz2 bit (12), 4 51 2 expanded_port bit (1), /* "1"b = on expanded port */ 4 52 2 expander_port fixed bin (2) unsigned, /* The actual expander port */ 4 53 2 controller_port fixed bin (3) unsigned 4 54 ) unaligned; /* Port on controller */ 4 55 4 56 dcl 1 scs$port_data (0:7) aligned external static, /* Info about what is connected to each SCU port */ 4 57 2 assigned fixed bin (4) unsigned unaligned, /* Type of device on this port */ 4 58 2 expander_port bit (1) unaligned, /* "1"b => this port has a port expander */ 4 59 2 expanded_cpu (0:3) bit (1) unaligned, /* "1"b => this expander port has a CPU attached */ 4 60 2 iom_number fixed bin (3) unsigned unaligned, /* IOM number of IOM attached to this port */ 4 61 2 cpu_number (0:3) fixed bin (3) unsigned unaligned, /* CPU number of CPU(s) attached to this port */ 4 62 /* cpu_number (0) is only one if expander_port is "0"b */ 4 63 2 pad bit (12) unaligned; 4 64 4 65 dcl 1 scs$cow (0:7) aligned external, /* Actual connect words */ 4 66 2 pad bit (36) aligned, /* Expander COW's must be odd-word */ 4 67 2 cow, 4 68 3 sub_mask bit (8) unaligned, /* Expander sub-port mask */ 4 69 3 mbz1 bit (13) unaligned, 4 70 3 expander_command bit (3) unaligned, /* Expander command. */ 4 71 3 mbz2 bit (2) unaligned, 4 72 3 expanded_port bit (1) unaligned, /* "1"b = on expanded port */ 4 73 3 expander_port fixed bin (3) unsigned unaligned, /* Port on expander for cioc */ 4 74 3 mbz3 bit (3) unaligned, 4 75 3 controller_port fixed bin (3) unaligned unsigned;/* controller port for this CPU */ 4 76 4 77 dcl 1 scs$cow_ptrs (0:7) external aligned, /* Pointers to COW's */ 4 78 2 rel_cow_ptr bit (18) unal, /* Relative pointer to COW */ 4 79 2 pad bit (12) unal, 4 80 2 tag bit (6) unal; /* Better be zero. */ 4 81 4 82 dcl 1 scs$reconfig_general_cow aligned external, /* Used during reconfig ops. */ 4 83 2 pad bit (36) aligned, 4 84 2 cow, /* Connect operand word, in odd location. */ 4 85 3 sub_mask bit (8) unaligned, /* Expander sub-port mask */ 4 86 3 mbz1 bit (13) unaligned, 4 87 3 expander_command bit (3) unaligned, /* Expander command. */ 4 88 3 mbz2 bit (9) unaligned, 4 89 3 controller_port fixed bin (3) unaligned unsigned;/* controller port for this CPU */ 4 90 4 91 /* MASKS and PATTERNS */ 4 92 4 93 dcl scs$sys_level bit (72) aligned ext; /* mask used while handling I/O interrupts */ 4 94 dcl scs$open_level bit (72) aligned ext; /* mask used during normal operation */ 4 95 dcl scs$processor_start_mask bit (72) aligned ext; /* mask used when starting up a CPU */ 4 96 dcl scs$cpu_test_mask bit (72) aligned ext; /* mask used for ISOLTS CPU testing */ 4 97 dcl scs$number_of_masks fixed bin ext; /* number of masks (starting at sys_level) */ 4 98 dcl scs$processor_start_pattern bit (36) aligned ext; /* SMIC pattern used to send processor start interrupt */ 4 99 dcl scs$cpu_test_pattern bit (36) aligned ext; /* SMIC pattern used for ISOLTS processor testing */ 4 100 4 101 /* CAM and CACHE clear info */ 4 102 4 103 dcl scs$cam_pair fixed bin (71) ext; /* instructions XEDd when CAMing and clearing CACHE */ 4 104 dcl scs$cam_wait bit (8) aligned ext; /* Used when evicting pages from main memory */ 4 105 4 106 /* MASKING INSTRUCTIONS & POINTERS */ 4 107 4 108 dcl scs$set_mask (0:7) bit (36) aligned ext; /* instructions to set mask (STAQ or SMCM) */ 4 109 dcl scs$read_mask (0:7) bit (36) aligned ext; /* instructions to read mask (LDAQ or RMCM) */ 4 110 dcl scs$mask_ptr (0:7) ptr unaligned ext; /* pointers for real or simulated masks */ 4 111 4 112 /* MISCELLANEOUS */ 4 113 4 114 dcl 1 scs$processor_test_data aligned ext, /* info used for cpu testing */ 4 115 ( 4 116 2 active bit (1), /* = "1"b if cpu currently under test */ 4 117 2 scu_state bit (2), /* state of scu being used for testing (see definition below) */ 4 118 2 pad1 bit (4), 4 119 2 req_mem fixed bin (10), /* dedicated memory required to test this cpu */ 4 120 2 cpu_tag fixed bin (5), /* tag of cpu under test */ 4 121 2 scu_tag fixed bin (5), /* tag of scu being used for cpu testing */ 4 122 2 mask_cpu fixed bin (5) 4 123 ) unaligned; /* tag of active cpu that has mask asigned to above scu */ 4 124 4 125 /* scu_state = "00"b => SCU defined by scs$processor_test_data.scu_tag not yet effected */ 4 126 /* scu_state = "01"b => all core removed from SCU, port mask not yet changed */ 4 127 /* scu_state = "10"b => all core removed from SCU, port mask changed */ 4 128 /* scu_state = "11"b => only 64k at base of SCU being used for testing, original port mask restored */ 4 129 4 130 dcl scs$idle_aptep (0:7) ptr unaligned ext; /* pointer to idle process APTE for each processor */ 4 131 4 132 dcl scs$connect_lock bit (36) aligned ext; /* lock for sending connects */ 4 133 dcl scs$reconfig_lock bit (36) aligned ext; /* Lock used during reconfiguration */ 4 134 dcl scs$trouble_flags bit (8) aligned ext; /* checkoff flags for sys_trouble stopping */ 4 135 dcl scs$bos_restart_flags bit (8) aligned ext; /* checkoff flags for restarting after sys_trouble */ 4 136 dcl scs$nprocessors fixed bin ext; /* number of runnung processors */ 4 137 dcl scs$bos_processor_tag fixed bin (3) ext; /* CPU tag of processor running BOS */ 4 138 dcl scs$faults_initialized bit (1) aligned ext; /* ON after faults have been enabled */ 4 139 dcl scs$sys_trouble_pending bit (1) aligned ext; /* sys_trouble event is pending in the system */ 4 140 dcl scs$fast_cam_pending (0:7) bit (36) aligned ext; /* checkoff cells for cam connect */ 4 141 dcl scs$interrupt_controller fixed bin (3) ext; /* port number of low order controller */ 4 142 dcl scs$processor_start_int_no fixed bin (5) ext; /* interrupt cell for starting a processor */ 4 143 dcl scs$processor bit (8) aligned ext; /* bits ON for online CPUs */ 4 144 dcl scs$processor_start_wait bit (8) aligned ext; /* checkoff flags for waiting for new processor */ 4 145 4 146 dcl scs$trouble_dbrs (0:7) fixed bin (71); /* DBR values at system crash time */ 4 147 4 148 dcl scs$port_addressing_word (0:7) bit (3) aligned ext; /* active module port number for each controller */ 4 149 4 150 dcl scs$cfg_data (0:7) fixed bin (71) aligned ext; /* RSCR-CFG data from each controller */ 4 151 4 152 dcl scs$cfg_data_save fixed bin (71) aligned ext; /* RSCR-CFG save area for ISOLTS CPU testing */ 4 153 4 154 dcl scs$expanded_ports bit (1) unaligned dim (0:7) external; 4 155 /* Which ports have expanders */ 4 156 4 157 dcl scs$processor_switch_data (0:4) bit (36) aligned ext; /* raw data from RSW 0 thru 4 */ 4 158 dcl scs$processor_switch_template (0:4) bit (36) aligned ext; /* expected data from RSW 0 thru 4 */ 4 159 dcl scs$processor_switch_compare (0:4) bit (36) aligned ext; /* discrepancies from expected data */ 4 160 dcl scs$processor_switch_mask (0:4) bit (36) aligned ext; /* masks for comparing switch data */ 4 161 4 162 dcl scs$processor_data_switch_value bit (36) aligned ext; /* Correct value for CPU data switches */ 4 163 4 164 dcl scs$controller_config_size (0:7) fixed bin (14) aligned ext; 4 165 /* Controller size on config card */ 4 166 4 167 dcl scs$reconfig_locker_id char (32) aligned ext; /* process group ID of process doing reconfiguration */ 4 168 4 169 dcl scs$scas_page_table (0:31) bit (36) aligned external static; 4 170 /* PTWs for SCAS pages */ 4 171 4 172 dcl scs$cycle_priority_template bit (7) aligned ext; /* template for setting anti-hog switches */ 4 173 dcl scs$set_cycle_switches bit (1) aligned ext; /* flag to set ant-hog switches */ 4 174 4 175 4 176 dcl ( 4 177 IOM_PORT init (1), 4 178 CPU_PORT init (2), 4 179 BULK_PORT init (3) 4 180 ) fixed bin int static options (constant); /* values for scs$port_data.assigned */ 4 181 4 182 4 183 /* END INCLUDE FILE scs.incl.pl1 */ 1128 1129 5 1 /* START OF: io_config.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 5 3 /* Structures for overlaying the io_config data segment. */ 5 4 /* Written February 1984 by Chris Jones as part of IOM reconfiguration project. */ 5 5 5 6 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 7 5 8 dcl io_config_data$ external; 5 9 5 10 dcl io_config_data_ptr ptr; 5 11 dcl io_config_device_table_ptr 5 12 ptr; 5 13 dcl io_config_channel_table_ptr 5 14 ptr; 5 15 dcl io_config_controller_table_ptr 5 16 ptr; 5 17 dcl io_config_iom_table_ptr 5 18 ptr; 5 19 5 20 dcl tables_length fixed bin (19); 5 21 5 22 dcl 1 io_config_data aligned based (io_config_data_ptr), 5 23 2 version char (8), 5 24 2 tables_length fixed bin (19) unsigned, 5 25 2 device_table_offset 5 26 fixed bin (18) uns unal, 5 27 2 channel_table_offset 5 28 fixed bin (18) uns unal, 5 29 2 controller_table_offset 5 30 fixed bin (18) uns unal, 5 31 2 iom_table_offset fixed bin (18) uns unal, 5 32 2 p_clock fixed bin (35), 5 33 2 pad (2) bit (36), /* pad to 0 mod 8 boundary */ 5 34 2 tables (0 refer (io_config_data.tables_length)) bit (36); 5 35 5 36 dcl 1 device_table aligned based (io_config_device_table_ptr), 5 37 2 version char (8), 5 38 2 n_devices fixed bin, 5 39 2 pad bit (36), /* pad to even word boundary */ 5 40 2 device_entry (0 refer (device_table.n_devices)) like device_entry_template; 5 41 5 42 dcl 1 device_entry_template 5 43 aligned based, 5 44 2 name char (32) unaligned, 5 45 2 comment char (32) unaligned, 5 46 2 flags, 5 47 ( 3 configured, /* set => not deleted */ 5 48 3 assigned /* set => in use (by a user or ring 0) */ 5 49 ) bit (1) unaligned, 5 50 2 pad bit (36), /* pad to even word boundary */ 5 51 2 pchan_idx (8) fixed bin; /* indexes into channel_table */ 5 52 5 53 dcl 1 channel_table aligned based (io_config_channel_table_ptr), 5 54 2 version char (8), 5 55 2 n_channels fixed bin, 5 56 2 pad bit (36), /* pad to even word boundary */ 5 57 2 channel_entry (0 refer (channel_table.n_channels)) aligned like channel_entry_template; 5 58 5 59 dcl 1 channel_entry_template 5 60 aligned based, 5 61 2 name char (8), /* e.g. "A31" */ 5 62 2 comment char (32) unaligned, 5 63 2 flags, 5 64 ( 3 configured, /* set => available for assignment */ 5 65 3 assigned /* set => currently assigned */ 5 66 ) bit (1) unaligned, 5 67 2 controller_idx fixed bin, /* index into controller table (if on MPC) */ 5 68 2 iom_idx fixed bin, /* index into iom_table */ 5 69 2 base_channel_idx fixed bin; /* index into channel table */ 5 70 5 71 dcl 1 controller_table aligned based (io_config_controller_table_ptr), 5 72 2 version char (8) aligned, 5 73 2 n_controllers fixed bin, 5 74 2 pad bit (36), /* pad to even word boundary */ 5 75 2 controller_entry (0 refer (controller_table.n_controllers)) like controller_entry_template; 5 76 5 77 dcl 1 controller_entry_template 5 78 aligned based, 5 79 2 name char (8), /* e.g. "mspa" */ 5 80 2 comment char (32) unaligned, 5 81 2 flags, 5 82 ( 3 configured, /* set => not deleted */ 5 83 3 assigned /* set => one process has whole controller */ 5 84 ) bit (1) unaligned, 5 85 2 pad bit (36); /* pad to even word boundary */ 5 86 5 87 dcl 1 iom_table aligned based (io_config_iom_table_ptr), 5 88 2 version char (8), 5 89 2 n_ioms fixed bin, 5 90 2 pad bit (36), /* pad to even word boundary */ 5 91 2 iom_entry (0 refer (iom_table.n_ioms)) like iom_entry_template; 5 92 5 93 dcl 1 iom_entry_template aligned based, 5 94 2 name char (8), 5 95 2 comment char (32) unaligned, 5 96 2 flags, 5 97 ( 3 configured /* set => not deleted */ 5 98 ) bit (1) unaligned, 5 99 2 n_configured_channels 5 100 fixed bin; 5 101 5 102 dcl IO_CONFIG_DATA_VERSION_1 5 103 char (8) aligned static options (constant) init ("IOCD_01"); 5 104 dcl IO_CONFIG_DEVICE_TABLE_VERSION_1 5 105 char (8) aligned static options (constant) init ("DEVT_01"); 5 106 dcl IO_CONFIG_CHANNEL_TABLE_VERSION_1 5 107 char (8) aligned static options (constant) init ("CHANT_01"); 5 108 dcl IO_CONFIG_CONTROLLER_TABLE_VERSION_1 5 109 char (8) aligned static options (constant) init ("CTLRT_01"); 5 110 dcl IO_CONFIG_IOM_TABLE_VERSION_1 5 111 char (8) aligned static options (constant) init ("IOMT_01"); 5 112 5 113 /* END OF: io_config.incl.pl1 * * * * * * * * * * * * * * * * */ 1130 1131 6 1 6 2 /* Begin include file ...... rcerr.incl.pl1 */ 6 3 /* These are the reconfiguration error codes. */ 6 4 /* Created 4/5/76 by Noel I. Morris */ 6 5 /* Modified 5/25/78 by J. A. Bush to add ISOLTS reconfig error codes */ 6 6 /* Modified 5/79 by BSG for port expander */ 6 7 6 8 6 9 /****^ HISTORY COMMENTS: 6 10* 1) change(88-07-27,Farley), approve(88-10-05,MCR7968), 6 11* audit(88-10-10,Beattie), install(88-10-14,MR12.2-1166): 6 12* Added new rcerr_addscu_memoverlap error code. 6 13* END HISTORY COMMENTS */ 6 14 6 15 6 16 dcl (rcerr_addcpu_no_response init (1), /* no response from CPU */ 6 17 rcerr_addcpu_bad_switches init (2), /* CPU config switches set improperly */ 6 18 rcerr_addcpu_trouble init (3), /* trouble fault adding CPU */ 6 19 rcerr_addcpu_startup init (4), /* startup fault adding CPU */ 6 20 rcerr_addcpu_lockup init (5), /* lockup fault adding CPU */ 6 21 rcerr_addcpu_gcos init (6), /* attempt to add processor in GCOS mode */ 6 22 rcerr_addcpu_amoff init (7), /* attempt to add processor with assoc mem off */ 6 23 rcerr_addcpu_enable init (8) /* controller port for CPU not enabled */ 6 24 ) fixed bin static options (constant); 6 25 6 26 dcl (rcerr_delcpu_no_stop init (1), /* CPU did not stop running */ 6 27 rcerr_delcpu_last init (2), /* attempt to delete last CPU */ 6 28 rcerr_delcpu_no_good_blcpu init (3) /* no suitable bootload CPU left */ 6 29 ) fixed bin static options (constant); 6 30 6 31 dcl (rcerr_addscu_size init (1), /* memory size discrepancy */ 6 32 rcerr_addscu_dup_mask init (2), /* duplicate mask assignment */ 6 33 rcerr_addscu_no_mask init (3), /* no mask assigned to CPU */ 6 34 rcerr_addscu_bad_mask init (4), /* mask assigned to non-CPU port */ 6 35 rcerr_addscu_fault init (5), /* fault trying to add controller */ 6 36 rcerr_addscu_switches init (6), /* some active module has incorrect switches */ 6 37 rcerr_addscu_enable init (7), /* some active module not enabled */ 6 38 rcerr_addscu_manual init (8), /* 4MW SCU is in manual mode */ 6 39 rcerr_addscu_oldexpand init (9), /* Adding 6000 SCU with port expander */ 6 40 rcerr_addscu_bigconfig init (10), /* SCU has less memory than config cards say */ 6 41 rcerr_addscu_memoverlap init (11) /* SCU has possible memory address overlap */ 6 42 ) fixed bin static options (constant); 6 43 6 44 dcl (rcerr_delmain_nomem init (1), /* not enough main memory left */ 6 45 rcerr_delmain_abs_wired init (2) /* abs wired pages in memory */ 6 46 ) fixed bin static options (constant); 6 47 6 48 dcl (rcerr_locked init (12), /* database already locked */ 6 49 rcerr_online init (13), /* device already online */ 6 50 rcerr_no_config init (14), /* device not in configuration */ 6 51 rcerr_not_online init (15), /* device not online */ 6 52 rcerr_range init (16), /* request is out of range */ 6 53 rcerr_sprq_failed init (17) /* could not set CPU required */ 6 54 6 55 ) fixed bin static options (constant); 6 56 6 57 dcl (rcerr_isolts_locked init (1), /* reconfig_lock locked to another process */ 6 58 rcerr_isolts_illegal_cpu init (2), /* illegal cpu tag */ 6 59 rcerr_isolts_cpu_online init (3), /* requested cpu is online */ 6 60 rcerr_isolts_no_config init (4), /* requested cpu is not configured */ 6 61 rcerr_isolts_two_scu init (5), /* Must have at least two SCUs to run ISOLTS */ 6 62 rcerr_isolts_illegal_scu init (6), /* illegal scu tag */ 6 63 rcerr_isolts_bootload_scu init (7), /* requested scu is the bootload memory */ 6 64 rcerr_isolts_scu_not init (8), /* requested scu is not configured */ 6 65 rcerr_isolts_not init (9), /* requesting process is not ISOLTS process */ 6 66 rcerr_isolts_wrong_cell init (10), /* interrupt answered in correct scu but wrong cell */ 6 67 rcerr_isolts_wrong_scu init (11), /* interrupt answered in wrong scu */ 6 68 rcerr_isolts_wrong_scu_cell init (12), /* interrupt answered in wrong scu on wrong cell */ 6 69 rcerr_isolts_no_response init (13), /* No response to a processor start interrupt */ 6 70 rcerr_isolts_bad_switches init (14), /* read switch data is not in expected format */ 6 71 rcerr_isolts_lda_fail init (15), /* A LDA 2 did not operate correctly */ 6 72 rcerr_isolts_no_str_flt init (16), /* No store falt when a LDA 64k was executed */ 6 73 rcerr_isolts_no_mask init (17) /* No mask set for test cpu */ 6 74 ) fixed bin static options (constant); 6 75 6 76 dcl 1 switch_w1 aligned based, /* template for switch word 1, when containing diagnostic info */ 6 77 (2 cell fixed bin (5), /* interrupt cell being used */ 6 78 2 errtag fixed bin (5), /* tag of scu in error */ 6 79 2 valid bit (1), /* if on then offset field is valid */ 6 80 2 pad bit (5), 6 81 2 offset bit (18)) unaligned; /* offset of error if any */ 6 82 6 83 /* End of include file ...... rcerr.incl.pl1 */ 6 84 1132 1133 7 1 /* *********************************************************** 7 2* * * 7 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 7 4* * * 7 5* *********************************************************** */ 7 6 /* Begin include file ...... rsw.incl.pl1 7 7* Modified 3/26/77 by Noel I. Morris 7 8* Modified 9/03/80 by J. A. Bush for the DPS8/70M CPU 7 9* Modified 3/24/82 by J. A. Bush to allow the L68 CPU to address 4MW/port */ 7 10 7 11 dcl rswp ptr; 7 12 7 13 dcl 1 dps_rsw_2 aligned based (rswp), /* rsw 2 template for DPS and L68 CPUs */ 7 14 (2 pad1 bit (4), 7 15 2 cpu_type fixed bin (2) unsigned, /* 0 = L68 or DPS, 1 = DPS8 */ 7 16 2 fault_base bit (7), /* high order bits of fault vector */ 7 17 2 pad2 bit (6), 7 18 2 dps_option bit (1), /* "1"b => DPS CPU, "0"b => L68 CPU */ 7 19 2 pad3 bit (7), 7 20 2 cache2 bit (1), /* "1"b => 2k cache installed, "0"b => no cache */ 7 21 2 ext_gcos bit (1), /* "1"b => ext gcos option installed */ 7 22 2 id bit (4), /* CPU ID - "1110"b => L68 */ 7 23 2 cpu_num fixed bin (3) unsigned) unaligned; /* processor number */ 7 24 7 25 dcl 1 dps8_rsw_2 aligned based (rswp), /* rsw 2 template for DPS8 CPUs */ 7 26 (2 interlace_info (0:3) bit (1), /* if interlace enabled; "0"b => 4-word, "1"b => 2-word */ 7 27 2 cpu_type fixed bin (2) unsigned, /* 0 = L68 or DPS, 1 = DPS8 */ 7 28 2 fault_base bit (7), /* high order bits of fault vector */ 7 29 2 id_prom bit (1), /* "1"b => id_prom present */ 7 30 2 pad1 bit (5), 7 31 2 dps_option bit (1), /* always "1"b for DPS8 CPU */ 7 32 2 cache8 bit (1), /* "1"b => 8k cache installed, "0"b => no cache */ 7 33 2 pad2 bit (2), 7 34 2 multics_cpu bit (1), /* always "1"b for Multics cpu */ 7 35 2 pad3 bit (5), 7 36 2 cpu_speed bit (4), /* cpu speed options */ 7 37 2 cpu_num fixed bin (3) unsigned) unaligned; /* processor number */ 7 38 7 39 dcl 1 rsw_1_3 aligned based (rswp), /* rsw 3 only valid on DPS and L68 CPUs */ 7 40 (2 port_info (0:3), /* controller port information */ 7 41 3 port_assignment bit (3), /* port address assignment */ 7 42 3 port_enable bit (1), /* "1"b => port enabled */ 7 43 3 initialize_enable bit (1), /* "1"b => system initialize enabled */ 7 44 3 interlace_enable bit (1), /* "1"b => port is interlaced with neighbor */ 7 45 3 mem_size fixed bin (3) unsigned) unaligned; /* encoded memory size on port */ 7 46 7 47 dcl 1 rsw_4 aligned based (rswp), /* rsw 4 only valid on DPS and L68 CPUs */ 7 48 (2 pad1 bit (13), 7 49 2 port_info (0:7), /* additional controller port information */ 7 50 3 four bit (1), /* "0"b => 4-word interlace - "1"b => 2-word interlace */ 7 51 3 half bit (1), /* "1"b => only half of memory on controller in use */ 7 52 2 pad2 bit (7)) unaligned; 7 53 7 54 dcl dps_mem_size_table (0:7) fixed bin (24) static options (constant) init /* DPS and L68 memory sizes */ 7 55 (32768, 65536, 4194304, 131072, 524288, 1048576, 2097152, 262144); 7 56 7 57 /* Note that the third array element above, is changed incompatibly in MR10.0. 7 58* In previous releases, this array element was used to decode a port size of 7 59* 98304 (96K). With MR10.0 it is now possible to address 4MW per CPU port, by 7 60* installing FCO # PHAF183 and using a group 10 patch plug, on L68 and DPS CPUs. 7 61**/ 7 62 7 63 dcl dps8_mem_size_table (0:7) fixed bin (24) static options (constant) init /* DPS8 memory sizes */ 7 64 (32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304); 7 65 7 66 dcl rsw_valid (0:1) fixed bin static options (constant) init (5, 3); /* # of rsw valid per cpu type */ 7 67 7 68 /* End of include file ...... rsw.incl.pl1 */ 1134 1135 8 1 /* BEGIN: sc_subsystem_info_.incl.pl1 * * * * * */ 8 2 8 3 /* format:style3,idind30 */ 8 4 8 5 /* Created 1984-10-24 BIM */ 8 6 /* Modified 1985-01-07, BIM: access control flags that track admin and X */ 8 7 /* Modified 1985-02-18, E. Swenson to save away abort_line procedure. */ 8 8 8 9 8 10 /****^ HISTORY COMMENTS: 8 11* 1) change(87-02-17,GDixon), approve(87-07-03,MCR7680), 8 12* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 13* Correct formatting problems. Add sc_subsystem_info.flags.dont_mask_calls 8 14* switch. 8 15* 2) change(87-07-03,GDixon), approve(87-07-03,MCR7680), 8 16* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 17* Removed dont_mask_calls flag. It is no longer needed to correctly perform 8 18* masking on a per-request basis. 8 19* END HISTORY COMMENTS */ 8 20 8 21 8 22 declare sc_subsystem_info_ptr pointer; 8 23 declare 1 sc_subsystem_info aligned based (sc_subsystem_info_ptr), 8 24 2 restriction_flags bit (36) aligned, /* copied from mc atep or fabricated */ 8 25 2 flags aligned, 8 26 3 no_real_tty bit (1) unaligned, /* for sc_admin_command_ */ 8 27 3 print_ready bit (1) unal, /* on for all except the system console, */ 8 28 /* instructs sc_process_command_line_ to deal */ 8 29 /* with the prompt */ 8 30 3 the_system_console bit (1) unal, /* syserr messages are printed here (but console */ 8 31 /* recover doesn't try to fix this) copied here */ 8 32 /* from the mc_ate to save other looking in there*/ 8 33 3 printer_offed bit (1) unal, /* suppress logging */ 8 34 3 pad bit (32) unaligned, 8 35 2 source_name char (32) unaligned, 8 36 2 area_ptr pointer, 8 37 2 mc_atep pointer, /* needed to play with attachments */ 8 38 2 real_iocb pointer, /* for sc_signal_io_handler_ */ 8 39 2 hangup_entry entry (pointer) variable, 8 40 /* called on io_no_permission. */ 8 41 2 real_execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)), 8 42 2 real_locate_request entry (ptr, char (*), ptr, fixed bin (35)), 8 43 2 access_control_name char (32) unaligned, 8 44 2 real_invoke_request entry, /* since MR11 ssu_ lacks the ability to abort a */ 8 45 /* single request, we have an invoke_request that*/ 8 46 /* handles a condition to unwind the request */ 8 47 2 abort_request_label label, /* go here (nonlocally) to unwind a single request */ 8 48 2 real_abort_line entry options (variable); 8 49 8 50 declare sc_ss_area area based (sc_subsystem_info.area_ptr); 8 51 8 52 /* The following defines the user flags for the request table. */ 8 53 8 54 declare sc_rf_ptr pointer; 8 55 declare 1 sc_request_flags unaligned based (sc_rf_ptr), 8 56 2 dont_parse_arguments bit, /* reply, intercom */ 8 57 2 obsolete bit, /* warn opr to not use it */ 8 58 2 dont_mask_calls bit, /* this runs without masking ev calls */ 8 59 2 requires_as bit, /* not before AS */ 8 60 2 requires_no_as bit, /* only before AS */ 8 61 2 complete_disks_first bit, /* try to mount disks */ 8 62 2 no_login_needed bit, /* sign_on */ 8 63 2 pad bit (5), 8 64 2 restriction_type fixed bin (6) unsigned; 8 65 /* index into restriction flag string */ 8 66 8 67 8 68 /* END OF: sc_subsystem_info_.incl.pl1 * * * * * */ 1136 1137 9 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 9 2 /* format: style2,^inddcls,idind32 */ 9 3 9 4 declare 1 terminate_file_switches based, 9 5 2 truncate bit (1) unaligned, 9 6 2 set_bc bit (1) unaligned, 9 7 2 terminate bit (1) unaligned, 9 8 2 force_write bit (1) unaligned, 9 9 2 delete bit (1) unaligned; 9 10 9 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 9 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 9 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 9 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 9 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 9 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 9 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 9 18 9 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 1138 1139 1140 end reconfigure; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/17/89 1342.8 reconfigure.pl1 >spec>install>1005>reconfigure.pl1 514 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1040 2 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 1127 3 09/15/77 1604.1 rci.incl.pl1 >ldd>include>rci.incl.pl1 1128 4 10/12/83 0943.5 scs.incl.pl1 >ldd>include>scs.incl.pl1 1130 5 07/11/84 0937.3 io_config_data.incl.pl1 >ldd>include>io_config_data.incl.pl1 1132 6 10/18/88 1206.7 rcerr.incl.pl1 >ldd>include>rcerr.incl.pl1 1134 7 06/10/82 1045.2 rsw.incl.pl1 >ldd>include>rsw.incl.pl1 1136 8 08/06/87 0913.5 sc_subsystem_info_.incl.pl1 >ldd>include>sc_subsystem_info_.incl.pl1 1138 9 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. ACTIONS 000037 constant fixed bin(17,0) initial array dcl 101 ref 256 ADD constant bit(1) initial dcl 94 ref 245 267 282 351 371 395 400 414 419 526 541 746 751 806 814 827 836 848 854 924 940 946 952 956 1066 DELETE constant bit(1) initial dcl 95 ref 247 267 IO_CONFIG_CHANNEL_TABLE_VERSION_1 000016 constant char(8) initial dcl 5-106 ref 984 IO_CONFIG_CONTROLLER_TABLE_VERSION_1 000014 constant char(8) initial dcl 5-108 ref 988 IO_CONFIG_DATA_VERSION_1 000022 constant char(8) initial dcl 5-102 ref 977 IO_CONFIG_DEVICE_TABLE_VERSION_1 000020 constant char(8) initial dcl 5-104 ref 980 IO_CONFIG_IOM_TABLE_VERSION_1 000012 constant char(8) initial dcl 5-110 ref 992 ME 000033 constant char(16) initial packed unaligned dcl 103 set ref 181* 183* 1109* 1111* RANGE_SEPARATOR constant char(1) initial packed unaligned dcl 105 ref 378 RCF_V1 000032 constant char(4) initial packed unaligned dcl 104 set ref 181* 1109* REASON_SEPARATOR 011446 constant char(2) initial packed unaligned dcl 106 ref 333 340 R_ACCESS 000252 constant bit(3) initial packed unaligned dcl 1-11 set ref 497* TAGS defined char(1) array packed unaligned dcl 111 set ref 311 342 353 371* 371* 371* TAGS_STRING 000030 constant char(8) initial packed unaligned dcl 109 ref 311 311 342 342 353 353 371 371 371 371 371 371 969 969 TAGS_STRING_UPPER_CASE 000026 constant char(8) initial packed unaligned dcl 110 ref 969 TEN_SECONDS 000024 constant fixed bin(71,0) initial dcl 113 ref 437 TERM_FILE_TERM 000011 constant bit(3) initial packed unaligned dcl 9-14 set ref 502* 889* TYPES 000056 constant char(16) initial array packed unaligned dcl 97 ref 252 252 252 254 action 000100 automatic fixed bin(17,0) dcl 46 set ref 256* 272 1066 1068 add_all_sw 000101 automatic bit(1) dcl 47 set ref 213* 227* 267 571 591 833 925 926* 929* add_del_sw 000102 automatic bit(1) dcl 48 set ref 245* 247* 267 267 282 351 371 395 400 414 419 526 541 746 751 806 814 827 836 848 854 924 940 946 952 956 1066 add_entry 000100 automatic bit(1) dcl 552 set ref 554* 561* addr builtin function dcl 169 ref 285 291 293 293 295 295 976 1118 1118 after builtin function dcl 169 ref 488 488 488 488 509 509 509 509 area based area(1024) dcl 86 ref 910 area_ptr 000266 automatic pointer dcl 87 set ref 175* 196* 211* 892 893* 894* 910 1100* arg based char packed unaligned dcl 78 set ref 220 227 229 229 231 233 233 235 235 237 237 239* 245 247 247 249* 252 254* 259 arg_count 000103 automatic fixed bin(17,0) dcl 49 in procedure "rcf" set ref 206* 207 209 218 1114* 1115 arg_count based fixed bin(17,0) level 3 in structure "arg_list" packed packed unsigned unaligned dcl 2-14 in procedure "extract_code" ref 1036 arg_idx 000104 automatic fixed bin(17,0) dcl 50 set ref 218* 219* arg_list based structure level 1 dcl 2-14 arg_list_ptr 000100 automatic pointer dcl 1016 set ref 1024* 1035* 1036 1038 arg_ptrs 2 based pointer array level 2 dcl 2-14 ref 1038 arg_state 000105 automatic fixed bin(17,0) dcl 51 set ref 216* 242* 242 244 251 258 265 argl 000261 automatic fixed bin(21,0) dcl 79 set ref 219* 220 220 227 229 229 231 233 233 235 235 237 237 239 239 245 247 247 249 249 252 254 254 259 argp 000262 automatic pointer dcl 80 set ref 219* 220 227 229 229 231 233 233 235 235 237 237 239 245 247 247 249 252 254 259 aspect parameter char packed unaligned dcl 331 ref 328 334 337 344 auto_rci 000300 automatic structure level 1 dcl 1094 set ref 1118 1118 backing_out 000106 automatic bit(1) dcl 52 set ref 204* 908 923* 1108* backout_item based structure level 1 dcl 89 set ref 910 backout_list_ptr 000110 automatic pointer dcl 53 set ref 175* 196* 913 914* 932 936 937 959* 1100* base_channel_idx 21 based fixed bin(17,0) array level 3 dcl 5-53 ref 686 728 767 783 bin builtin function dcl 169 ref 311 brief_sw 000112 automatic bit(1) dcl 54 set ref 214* 229* 233* 748* 751 808* 814 839* 934 1080 c 000100 automatic fixed bin(17,0) dcl 705 in procedure "available_paths" set ref 709* 710 710* c parameter fixed bin(17,0) dcl 720 in procedure "connected" ref 717 728 c parameter fixed bin(17,0) dcl 611 in procedure "newly_accessible" set ref 607 618* 620* c parameter fixed bin(17,0) dcl 652 in procedure "needs_this_channel" set ref 648 660* 662* cdtp 000114 automatic pointer dcl 55 set ref 175* 195* 497* 500* 502* 503* 888 889* 890* 1100* channel_entry 4 based structure array level 2 dcl 5-53 set ref 521 521 524 709 709 738 738 741 766 766 782 782 803 803 833 833 channel_entry_template based structure level 1 dcl 5-59 channel_idx parameter fixed bin(17,0) dcl 630 in procedure "delete_devices" set ref 627 637* channel_idx parameter fixed bin(17,0) dcl 582 in procedure "add_devices" set ref 579 588* channel_idx 000116 automatic fixed bin(17,0) dcl 56 in procedure "rcf" set ref 521* 521* 524 527* 533* 537* 738* 738* 741 743* 746* 748* 803* 804* 804 806* 808 808* 833* 835* 835 836* 839* 843* channel_table based structure level 1 dcl 5-53 channel_table_offset 3(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-22 ref 983 cleanup 000272 stack reference condition dcl 172 ref 177 199 1103 clock builtin function dcl 169 ref 437 438 code parameter fixed bin(35,0) dcl 550 in procedure "add_channel" set ref 546 555* 558 563* 564 567* 568 571* code parameter fixed bin(35,0) dcl 427 in procedure "add_device" set ref 423 432* 434 441* 444* 446* 450 454* 455 458* code parameter fixed bin(35,0) dcl 1049 in procedure "quit_if_rc_error" set ref 1046 1058 1061 1061* 1063 1063 1069 code parameter fixed bin(35,0) dcl 862 in procedure "add_iom" set ref 858 864* 867 870* 872 code parameter fixed bin(35,0) dcl 778 in procedure "delete_physical_channel" set ref 773 787* 788* code 000117 automatic fixed bin(35,0) dcl 57 in procedure "rcf" set ref 181* 182 183* 283* 284 310 313 313* 320* 321 321* 352* 353 353 353 353 356 356* 361* 362 362* 381* 382 382* 387* 388 388* 390* 391 391* 395* 397* 398 398* 411* 414* 416* 417 417* 527* 528 528* 533* 534 534* 537* 538 538* 746* 748* 749 749* 802* 806* 808* 810 810* 828* 829 829* 836* 839* 840 840* 843 843* 849* 850 850* 940* 942* 946* 948* 952* 954* 956 956* 1109* 1110 1111* 1118* 1119 code parameter fixed bin(35,0) dcl 470 in procedure "add_fnp" set ref 466 488* 489 489* 493 497* 498 500* 504 505* 509* 510 510* code parameter fixed bin(35,0) dcl 631 in procedure "delete_devices" set ref 627 635* 638* 639 code parameter fixed bin(35,0) dcl 583 in procedure "add_devices" set ref 579 589* 590 592* 594* code parameter fixed bin(35,0) dcl 759 in procedure "add_physical_channel" set ref 755 763* 764 code parameter fixed bin(35,0) dcl 1007 in procedure "quit_with_usage" set ref 1004 1009* code 000102 automatic fixed bin(35,0) dcl 1017 in procedure "quit" set ref 1021 1025* 1038* com_err_ 000040 constant entry external dcl 138 ref 183 1111 configured 16 based bit(1) array level 4 in structure "channel_table" packed packed unaligned dcl 5-53 in procedure "rcf" ref 710 783 808 configured 24 based bit(1) array level 4 in structure "device_table" packed packed unaligned dcl 5-36 in procedure "rcf" ref 438 440 615 656 control_arg 000120 automatic bit(1) dcl 58 set ref 220* 223* 224* 226 controller_entry 4 based structure array level 2 dcl 5-71 ref 795 795 799 controller_entry_template based structure level 1 dcl 5-77 controller_idx 17 based fixed bin(17,0) array level 3 dcl 5-53 ref 804 controller_table based structure level 1 dcl 5-71 controller_table_offset 4 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-22 ref 987 count 000101 automatic fixed bin(17,0) dcl 706 set ref 708* 710* 710 713 cpu_num 0(33) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 7-13 ref 288 cu_$arg_list_ptr 000042 constant entry external dcl 139 ref 1035 cv_integer_string_check_ 000044 constant entry external dcl 140 ref 381 387 390 cx 000454 automatic fixed bin(17,0) dcl 780 in procedure "delete_physical_channel" set ref 782* 783* 783 783 783* cx 000444 automatic fixed bin(17,0) dcl 761 in procedure "add_physical_channel" set ref 766* 767* 767 767* d parameter fixed bin(17,0) dcl 610 in procedure "newly_accessible" set ref 607 615 617* 618* 618* 620* d parameter fixed bin(17,0) dcl 651 in procedure "needs_this_channel" set ref 648 656 659* 660* 660* 662* d parameter fixed bin(17,0) dcl 693 in procedure "device_type" ref 690 695 d parameter fixed bin(17,0) dcl 703 in procedure "available_paths" set ref 700 710* d parameter fixed bin(17,0) dcl 721 in procedure "connected" ref 717 725 728 deadline 000122 automatic fixed bin(71,0) dcl 59 set ref 437* 438 delete_all_sw 000124 automatic bit(1) dcl 60 set ref 213* 231* 267 532 562 833 925* 929 930* desired_configured_setting 000100 automatic bit(1) dcl 429 set ref 433* 438 440 446 459* device_entry 4 based structure array level 2 dcl 5-36 set ref 407 407 410 587 587 636 636 device_entry_template based structure level 1 dcl 5-42 device_idx 000125 automatic fixed bin(17,0) dcl 61 in procedure "rcf" set ref 407* 407* 410 414* 416* device_idx 000100 automatic fixed bin(17,0) dcl 633 in procedure "delete_devices" set ref 636* 637* 638* 641* device_idx 000110 automatic fixed bin(17,0) dcl 585 in procedure "add_devices" set ref 587* 588* 589* 592 598* device_table based structure level 1 dcl 5-36 device_table_offset 3 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-22 ref 979 dps_rsw_2 based structure level 1 dcl 7-13 error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 115 ref 444 error_table_$bad_arg 000012 external static fixed bin(35,0) dcl 117 set ref 249* 254* 274* error_table_$badopt 000014 external static fixed bin(35,0) dcl 118 set ref 239* error_table_$chnl_already_deleted 000016 external static fixed bin(35,0) dcl 119 ref 840 error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 121 set ref 267* error_table_$io_configured 000150 external static fixed bin(35,0) dcl 481 ref 489 error_table_$io_not_available 000152 external static fixed bin(35,0) dcl 483 ref 505 error_table_$io_not_configured 000154 external static fixed bin(35,0) dcl 485 in procedure "add_fnp" ref 510 error_table_$io_not_configured 000022 external static fixed bin(35,0) dcl 123 in procedure "rcf" ref 1021 error_table_$io_not_defined 000024 external static fixed bin(35,0) dcl 125 set ref 411 524* 741* 799* 824* error_table_$noarg 000026 external static fixed bin(35,0) dcl 127 set ref 209* 265* 1036* error_table_$not_base_channel 000030 external static fixed bin(35,0) dcl 128 set ref 743* error_table_$too_many_args 000032 external static fixed bin(35,0) dcl 130 set ref 261* 1115* error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 132 set ref 977* 980* 984* 988* 992* error_tag 000126 automatic fixed bin(3,0) dcl 62 set ref 352* 353 fault_base 0(06) based bit(7) level 2 packed packed unaligned dcl 7-13 ref 286 fb35 based fixed bin(35,0) dcl 1033 ref 1038 first_frame 000127 automatic fixed bin(17,0) dcl 63 set ref 381* 387* 393 395* 397* 400* 400 flags 16 based structure array level 3 in structure "channel_table" dcl 5-53 in procedure "rcf" flags 1 based structure level 2 in structure "sc_subsystem_info" dcl 8-23 in procedure "rcf" flags 24 based structure array level 3 in structure "device_table" dcl 5-36 in procedure "rcf" force_sw 000130 automatic bit(1) dcl 64 set ref 215* 235* 237* 496 four 0(13) based bit(1) array level 3 packed packed unaligned dcl 7-47 ref 301 half 0(14) based bit(1) array level 3 packed packed unaligned dcl 7-47 ref 305 hbound builtin function dcl 169 ref 252 254 407 410 521 524 587 636 709 725 738 741 766 782 795 799 803 821 824 833 1061 1063 1063 header based structure level 2 dcl 2-14 hphcs_$add_channel 000046 constant entry external dcl 142 ref 555 hphcs_$add_cpu 000050 constant entry external dcl 143 ref 283 hphcs_$add_iom 000052 constant entry external dcl 144 ref 864 hphcs_$add_main 000054 constant entry external dcl 145 ref 395 hphcs_$add_scu 000056 constant entry external dcl 146 ref 352 hphcs_$configure_fnp 000136 constant entry external dcl 474 ref 488 hphcs_$deconfigure_fnp 000140 constant entry external dcl 475 ref 509 hphcs_$del_cpu 000060 constant entry external dcl 147 ref 320 hphcs_$del_main 000064 constant entry external dcl 149 ref 397 hphcs_$del_scu 000062 constant entry external dcl 148 ref 361 hphcs_$delete_channel 000066 constant entry external dcl 150 ref 567 hphcs_$delete_iom 000070 constant entry external dcl 151 ref 870 hphcs_$rc_force_unlock 000124 constant entry external dcl 1096 ref 1123 hphcs_$reconfig_info 000126 constant entry external dcl 1097 ref 1118 i 000131 automatic fixed bin(17,0) dcl 65 in procedure "rcf" set ref 292* 293 293 295 301 305* 342 378* 380 387 387 388 388 390 390 391 391 i 000100 automatic fixed bin(17,0) dcl 723 in procedure "connected" set ref 725* 725* 728* idx parameter fixed bin(17,0) dcl 549 in procedure "add_channel" set ref 546 555 558 563* 567 570* 571* idx parameter fixed bin(17,0) dcl 469 in procedure "add_fnp" ref 466 488 488 488 488 493 500 500 509 509 509 509 idx parameter fixed bin(17,0) dcl 861 in procedure "add_iom" set ref 858 864 864 867 870 870 872* idx parameter fixed bin(17,0) dcl 905 in procedure "add_to_backout_list" ref 902 911 idx based fixed bin(17,0) level 2 in structure "backout_item" dcl 89 in procedure "rcf" set ref 541 911* 939 940* 942* 945 946* 948* 951 952* 954* idx parameter fixed bin(17,0) dcl 684 in procedure "base_channel" ref 681 686 686 idx parameter fixed bin(17,0) dcl 426 in procedure "add_device" set ref 423 432 438 440 442* 446* 446* 450 453* 454* 458 ignore_sw parameter bit(1) dcl 777 ref 773 788 index builtin function dcl 169 ref 378 969 initiate_file_ 000142 constant entry external dcl 476 ref 497 interlace 000133 automatic bit(1) dcl 67 set ref 352* 361* 371* 371* interlace_enable 0(05) based bit(1) level 2 packed packed unaligned dcl 82 ref 301 io_config_channel_table_ptr 000364 automatic pointer dcl 5-13 set ref 521 521 521 524 541 555 567 686 709 709 710 728 738 738 738 741 766 766 767 782 782 783 783 803 803 804 808 833 833 835 843 945 983* 984 io_config_controller_table_ptr 000366 automatic pointer dcl 5-15 set ref 795 795 795 799 987* 988 io_config_data based structure level 1 dcl 5-22 io_config_data$ 000134 external static fixed bin(17,0) dcl 5-8 set ref 976 io_config_data_ptr 000360 automatic pointer dcl 5-10 set ref 976* 977 979 979 983 983 987 987 991 991 io_config_device_table_ptr 000362 automatic pointer dcl 5-11 set ref 407 407 407 410 432 438 440 458 488 488 488 488 500 500 509 509 509 509 587 587 592 598 615 636 636 641 656 695 725 728 951 979* 980 io_config_iom_table_ptr 000370 automatic pointer dcl 5-17 set ref 821 821 821 824 864 864 870 870 939 991* 992 ioa_ 000072 constant entry external dcl 152 ref 316 323 371 400 419 541 598 641 751 814 854 934 1021 ioa_$general_rs 000074 constant entry external dcl 153 ref 1024 iom_entry 4 based structure array level 2 dcl 5-87 ref 821 821 824 iom_entry_template based structure level 1 dcl 5-93 iom_idx 000132 automatic fixed bin(17,0) dcl 66 in procedure "rcf" set ref 821* 821* 824 828* 835 849* iom_idx 20 based fixed bin(17,0) array level 3 in structure "channel_table" dcl 5-53 in procedure "rcf" ref 835 iom_table based structure level 1 dcl 5-87 iom_table_offset 4(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-22 ref 991 item_ptr 000270 automatic pointer dcl 93 set ref 541 910* 911 912 913 914 937* 938 939 940 942 944 945 946 948 950 951 952 954 956 959 lbound builtin function dcl 169 ref 252 407 521 587 636 709 725 738 766 782 795 803 821 833 locker_group_id 000300 automatic char(32) level 2 dcl 1094 set ref 1121* mem_size 0(06) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 82 ref 303 message 000103 automatic char(128) packed unaligned dcl 1018 set ref 1024* 1025* mod builtin function dcl 169 ref 371 371 mpc_idx 000134 automatic fixed bin(17,0) dcl 68 set ref 795* 795* 799 804 multiplexer_mgr_$count_mpx_users 000144 constant entry external dcl 477 ref 500 n_channels 2 based fixed bin(17,0) level 2 dcl 5-53 ref 521 524 709 738 741 766 782 803 833 n_controllers 2 based fixed bin(17,0) level 2 dcl 5-71 ref 795 799 n_devices 2 based fixed bin(17,0) level 2 dcl 5-36 ref 407 410 587 636 n_frames 000135 automatic fixed bin(17,0) dcl 69 set ref 384* 390* 393* 393 395* 397* 400 400 n_ioms 2 based fixed bin(17,0) level 2 dcl 5-87 ref 821 824 n_users 000110 automatic fixed bin(17,0) dcl 472 set ref 500* 504 name 4 based char(8) array level 3 in structure "channel_table" dcl 5-53 in procedure "rcf" set ref 521 541* 555* 567* 738 843* 945 name 4 based char(8) array level 3 in structure "iom_table" dcl 5-87 in procedure "rcf" ref 821 864 864 870 870 939 name parameter char packed unaligned dcl 1032 in procedure "extract_code" set ref 1029 1036* name parameter char packed unaligned dcl 967 in procedure "get_tag_from_name" ref 964 969 name 000136 automatic char(32) packed unaligned dcl 70 in procedure "rcf" set ref 259* 279* 281* 281 316* 323* 348* 350* 350 378 381* 382* 387 387 388 388 390 390 391 391 407 417* 419* 520* 521 524* 528* 534* 538* 737* 738 741* 743* 749* 751* 795 799* 810* 814* 820* 821 824* 829* 850* 854* 1021* 1061* 1063* 1069* name 000100 automatic char(32) packed unaligned dcl 921 in procedure "backout_work_so_far" set ref 939* 945* 951* 956* name 4 based char(8) array level 3 in structure "controller_table" dcl 5-71 in procedure "rcf" ref 795 name 4 based char(32) array level 3 in structure "device_table" packed packed unaligned dcl 5-36 in procedure "rcf" set ref 407 432* 458* 488 488 488 488 500 500 509 509 509 509 592* 598* 641* 695 951 name parameter char packed unaligned dcl 671 in procedure "canonicalize_channel_name" set ref 668 673 676* 676 next_item 4 based pointer level 2 dcl 89 set ref 913* 959 null builtin function dcl 169 ref 175 181 181 195 196 211 211 503 725 725 888 890 892 894 898 932 936 1100 1109 1109 p_sci_ptr parameter pointer dcl 191 ref 188 197 p_ssu_info_ptr parameter pointer dcl 192 ref 188 198 parse_fnp_name_ 000146 constant entry external dcl 479 ref 488 488 509 509 path_count 000110 automatic fixed bin(17,0) dcl 654 in procedure "needs_this_channel" set ref 659* 660 662 path_count 000120 automatic fixed bin(17,0) dcl 613 in procedure "newly_accessible" set ref 617* 618 620 pc_idx parameter fixed bin(17,0) dcl 758 in procedure "add_physical_channel" set ref 755 763* 767 pc_idx parameter fixed bin(17,0) dcl 776 in procedure "delete_physical_channel" set ref 773 783 787* pchan_idx 22 based fixed bin(17,0) array level 2 in structure "device_entry_template" dcl 5-42 in procedure "rcf" ref 725 725 pchan_idx 26 based fixed bin(17,0) array level 3 in structure "device_table" dcl 5-36 in procedure "rcf" ref 725 728 pi based structure level 1 packed packed unaligned dcl 82 pip 000264 automatic pointer dcl 84 set ref 293* 295* 297 299 301 303 port_assignment based bit(3) level 2 packed packed unaligned dcl 82 ref 297 port_enable 0(03) based bit(1) level 2 packed packed unaligned dcl 82 ref 299 port_info based structure array level 2 in structure "rsw_1_3" packed packed unaligned dcl 7-39 in procedure "rcf" set ref 293 295 port_info 0(13) based structure array level 2 in structure "rsw_4" packed packed unaligned dcl 7-47 in procedure "rcf" ptr builtin function dcl 169 ref 979 983 987 991 rc_messages$rc_messages 000036 external static char(64) array dcl 135 set ref 1061 1063 1063 1063* 1069* rcerr_addcpu_bad_switches constant fixed bin(17,0) initial dcl 6-16 ref 284 rcerr_addcpu_enable constant fixed bin(17,0) initial dcl 6-16 ref 310 rcerr_addscu_bigconfig constant fixed bin(17,0) initial dcl 6-31 ref 353 rcerr_addscu_manual constant fixed bin(17,0) initial dcl 6-31 ref 353 rcerr_addscu_size constant fixed bin(17,0) initial dcl 6-31 ref 353 rci based structure level 1 dcl 3-7 rcp_sys_$add_device 000076 constant entry external dcl 155 ref 432 rcp_sys_$delete_device 000100 constant entry external dcl 156 ref 458 reason 000146 automatic varying char(256) dcl 71 set ref 217* 311* 333* 333 334* 334 340* 340 341* 341 342* 342 343* 343 344* 344 353* 1063* 1069* row_idx 000500 automatic fixed bin(17,0) dcl 1051 set ref 1066* 1068* 1069 rsw_1_3 based structure level 1 dcl 7-39 rsw_4 based structure level 1 dcl 7-47 rswp 000372 automatic pointer dcl 7-11 set ref 285* 286 288 291* 301 305 rtrim builtin function dcl 169 ref 281 350 969 sc_subsystem_info based structure level 1 dcl 8-23 sc_subsystem_info_ptr 000374 automatic pointer dcl 8-22 set ref 175* 198* 1084 1100* sci_ptr 000250 automatic pointer dcl 72 set ref 175* 181* 197* 206* 211* 219* 592* 893* 897* 898* 956* 1025* 1100* 1109* 1114* 1119* 1121* scs$controller_data 000130 external static structure array level 1 dcl 4-6 scs$processor_data 000132 external static structure array level 1 dcl 4-35 ssu_$abort_line 000102 constant entry external dcl 157 ref 1025 ssu_$arg_count 000104 constant entry external dcl 158 ref 206 1114 ssu_$arg_ptr 000106 constant entry external dcl 159 ref 219 ssu_$destroy_invocation 000110 constant entry external dcl 160 ref 897 ssu_$get_area 000112 constant entry external dcl 162 ref 211 ssu_$print_message 000114 constant entry external dcl 163 ref 592 956 1119 1121 ssu_$release_area 000116 constant entry external dcl 164 ref 893 ssu_$standalone_invocation 000120 constant entry external dcl 165 ref 181 1109 standalone_invocation 000252 automatic bit(1) dcl 73 set ref 174* 194* 896 1082 1099* substr builtin function dcl 169 ref 220 387 387 388 388 390 390 391 391 500 500 695 switches 000253 automatic bit(36) array dcl 74 set ref 283* 285 291 293 295 311 tag 000257 automatic fixed bin(3,0) dcl 75 set ref 279* 283* 320* 348* 352* 361* 371 371 371 371 371 terminate_file_ 000122 constant entry external dcl 167 ref 502 889 the_system_console 1(02) based bit(1) level 3 packed packed unaligned dcl 8-23 ref 1084 translate builtin function dcl 169 ref 676 969 type parameter char packed unaligned dcl 906 in procedure "add_to_backout_list" ref 902 912 type 1 based char(8) level 2 in structure "backout_item" dcl 89 in procedure "rcf" set ref 912* 938 944 950 956* type_idx 000260 automatic fixed bin(17,0) dcl 76 set ref 252* 252* 254 256 version based char(8) level 2 in structure "iom_table" dcl 5-87 in procedure "rcf" ref 992 version based char(8) level 2 in structure "io_config_data" dcl 5-22 in procedure "rcf" ref 977 version based char(8) level 2 in structure "channel_table" dcl 5-53 in procedure "rcf" ref 984 version based char(8) level 2 in structure "controller_table" dcl 5-71 in procedure "rcf" ref 988 version based char(8) level 2 in structure "device_table" dcl 5-36 in procedure "rcf" ref 980 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 BULK_PORT internal static fixed bin(17,0) initial dcl 4-176 CPU_PORT internal static fixed bin(17,0) initial dcl 4-176 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Envptr_supplied_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 IOM_PORT internal static fixed bin(17,0) initial dcl 4-176 Interseg_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 9-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 9-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 9-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 9-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 9-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 9-15 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 arg_list_with_envptr based structure level 1 dcl 2-42 command_name_arglist based structure level 1 dcl 2-25 dps8_mem_size_table internal static fixed bin(24,0) initial array dcl 7-63 dps8_rsw_2 based structure level 1 dcl 7-25 dps_mem_size_table internal static fixed bin(24,0) initial array dcl 7-54 rcerr_addcpu_amoff internal static fixed bin(17,0) initial dcl 6-16 rcerr_addcpu_gcos internal static fixed bin(17,0) initial dcl 6-16 rcerr_addcpu_lockup internal static fixed bin(17,0) initial dcl 6-16 rcerr_addcpu_no_response internal static fixed bin(17,0) initial dcl 6-16 rcerr_addcpu_startup internal static fixed bin(17,0) initial dcl 6-16 rcerr_addcpu_trouble internal static fixed bin(17,0) initial dcl 6-16 rcerr_addscu_bad_mask internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_dup_mask internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_enable internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_fault internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_memoverlap internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_no_mask internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_oldexpand internal static fixed bin(17,0) initial dcl 6-31 rcerr_addscu_switches internal static fixed bin(17,0) initial dcl 6-31 rcerr_delcpu_last internal static fixed bin(17,0) initial dcl 6-26 rcerr_delcpu_no_good_blcpu internal static fixed bin(17,0) initial dcl 6-26 rcerr_delcpu_no_stop internal static fixed bin(17,0) initial dcl 6-26 rcerr_delmain_abs_wired internal static fixed bin(17,0) initial dcl 6-44 rcerr_delmain_nomem internal static fixed bin(17,0) initial dcl 6-44 rcerr_isolts_bad_switches internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_bootload_scu internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_cpu_online internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_illegal_cpu internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_illegal_scu internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_lda_fail internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_locked internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_no_config internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_no_mask internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_no_response internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_no_str_flt internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_not internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_scu_not internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_two_scu internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_wrong_cell internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_wrong_scu internal static fixed bin(17,0) initial dcl 6-57 rcerr_isolts_wrong_scu_cell internal static fixed bin(17,0) initial dcl 6-57 rcerr_locked internal static fixed bin(17,0) initial dcl 6-48 rcerr_no_config internal static fixed bin(17,0) initial dcl 6-48 rcerr_not_online internal static fixed bin(17,0) initial dcl 6-48 rcerr_online internal static fixed bin(17,0) initial dcl 6-48 rcerr_range internal static fixed bin(17,0) initial dcl 6-48 rcerr_sprq_failed internal static fixed bin(17,0) initial dcl 6-48 rcip automatic pointer dcl 3-5 rsw_valid internal static fixed bin(17,0) initial array dcl 7-66 sc_request_flags based structure level 1 packed packed unaligned dcl 8-55 sc_rf_ptr automatic pointer dcl 8-54 sc_ss_area based area(1024) dcl 8-50 scs$bos_processor_tag external static fixed bin(3,0) dcl 4-137 scs$bos_restart_flags external static bit(8) dcl 4-135 scs$cam_pair external static fixed bin(71,0) dcl 4-103 scs$cam_wait external static bit(8) dcl 4-104 scs$cfg_data external static fixed bin(71,0) array dcl 4-150 scs$cfg_data_save external static fixed bin(71,0) dcl 4-152 scs$connect_lock external static bit(36) dcl 4-132 scs$controller_config_size external static fixed bin(14,0) array dcl 4-164 scs$cow external static structure array level 1 dcl 4-65 scs$cow_ptrs external static structure array level 1 dcl 4-77 scs$cpu_test_mask external static bit(72) dcl 4-96 scs$cpu_test_pattern external static bit(36) dcl 4-99 scs$cycle_priority_template external static bit(7) dcl 4-172 scs$expanded_ports external static bit(1) array packed unaligned dcl 4-154 scs$fast_cam_pending external static bit(36) array dcl 4-140 scs$faults_initialized external static bit(1) dcl 4-138 scs$idle_aptep external static pointer array packed unaligned dcl 4-130 scs$interrupt_controller external static fixed bin(3,0) dcl 4-141 scs$mask_ptr external static pointer array packed unaligned dcl 4-110 scs$nprocessors external static fixed bin(17,0) dcl 4-136 scs$number_of_masks external static fixed bin(17,0) dcl 4-97 scs$open_level external static bit(72) dcl 4-94 scs$port_addressing_word external static bit(3) array dcl 4-148 scs$port_data external static structure array level 1 dcl 4-56 scs$processor external static bit(8) dcl 4-143 scs$processor_data_switch_value external static bit(36) dcl 4-162 scs$processor_start_int_no external static fixed bin(5,0) dcl 4-142 scs$processor_start_mask external static bit(72) dcl 4-95 scs$processor_start_pattern external static bit(36) dcl 4-98 scs$processor_start_wait external static bit(8) dcl 4-144 scs$processor_switch_compare external static bit(36) array dcl 4-159 scs$processor_switch_data external static bit(36) array dcl 4-157 scs$processor_switch_mask external static bit(36) array dcl 4-160 scs$processor_switch_template external static bit(36) array dcl 4-158 scs$processor_test_data external static structure level 1 dcl 4-114 scs$read_mask external static bit(36) array dcl 4-109 scs$reconfig_general_cow external static structure level 1 dcl 4-82 scs$reconfig_lock external static bit(36) dcl 4-133 scs$reconfig_locker_id external static char(32) dcl 4-167 scs$scas_page_table external static bit(36) array dcl 4-169 scs$set_cycle_switches external static bit(1) dcl 4-173 scs$set_mask external static bit(36) array dcl 4-108 scs$sys_level external static bit(72) dcl 4-93 scs$sys_trouble_pending external static bit(1) dcl 4-139 scs$trouble_dbrs automatic fixed bin(71,0) array dcl 4-146 scs$trouble_flags external static bit(8) dcl 4-134 switch_w1 based structure level 1 dcl 6-76 tables_length automatic fixed bin(19,0) dcl 5-20 terminate_file_switches based structure level 1 packed packed unaligned dcl 9-4 NAMES DECLARED BY EXPLICIT CONTEXT. ACTION_LABEL 000000 constant label array(0:8) dcl 274 ref 272 DONE 004366 constant label dcl 881 ref 326 366 403 421 544 753 816 856 1125 ERROR_RETURN 004362 constant label dcl 879 ref 1000 1027 RECONFIGURE_COMMON 001157 constant label dcl 204 ref 186 abort_entry 010256 constant entry internal dcl 997 ref 181 181 1109 1109 add_channel 005713 constant entry internal dcl 546 ref 527 763 767 948 add_del_device_common 005145 constant label dcl 434 ref 460 add_delete_channel_common 006005 constant label dcl 568 ref 556 add_delete_iom_common 007303 constant label dcl 872 ref 865 add_device 005113 constant entry internal dcl 423 ref 414 589 954 add_devices 006044 constant entry internal dcl 579 ref 571 add_fnp 005347 constant entry internal dcl 466 ref 446 add_iom 007171 constant entry internal dcl 858 ref 828 942 add_physical_channel 007017 constant entry internal dcl 755 ref 746 806 836 add_to_backout_list 007430 constant entry internal dcl 902 ref 442 570 872 available_paths 006676 constant entry internal dcl 700 ref 617 659 backout_work_so_far 007472 constant entry internal dcl 918 ref 178 200 879 1104 base_channel 006642 constant entry internal dcl 681 ref 743 767 783 804 835 canonicalize_channel_name 006603 constant entry internal dcl 668 ref 520 737 canonicalize_iom_name 006615 constant entry internal dcl 673 ref 820 clean_up 007327 constant entry internal dcl 886 ref 179 201 881 1105 connected 006754 constant entry internal dcl 717 ref 618 620 660 662 710 delete_channel 005741 constant entry internal dcl 558 ref 537 783 787 946 delete_device 005262 constant entry internal dcl 450 ref 416 638 952 delete_devices 006347 constant entry internal dcl 627 ref 533 563 delete_fnp 005443 constant entry internal dcl 493 ref 454 delete_iom 007237 constant entry internal dcl 867 ref 849 940 delete_physical_channel 007101 constant entry internal dcl 773 ref 748 808 839 device_type 006655 constant entry internal dcl 690 ref 446 453 618 660 extract_code 010444 constant entry internal dcl 1029 ref 1020 generate_switch_memory_message 004723 constant entry internal dcl 337 ref 297 299 301 303 305 generate_switch_message 004663 constant entry internal dcl 328 ref 286 288 get_tag_from_name 010002 constant entry internal dcl 964 ref 279 348 864 864 870 870 message_is_called_for 010655 constant entry internal dcl 1077 ref 316 323 371 400 419 541 598 641 854 needs_this_channel 006465 constant entry internal dcl 648 ref 637 newly_accessible 006230 constant entry internal dcl 607 ref 588 print_scu_message 005014 constant entry internal dcl 368 ref 358 364 quit 010311 constant entry internal dcl 1013 ref 239 249 254 261 267 274 382 388 391 417 524 528 534 538 741 743 749 799 810 824 829 843 850 977 980 984 988 992 1009 1036 1061 1063 1069 1115 quit_if_rc_error 010523 constant entry internal dcl 1046 ref 313 321 356 362 398 quit_with_usage 010266 constant entry internal dcl 1004 ref 207 209 265 rcf 000736 constant entry external dcl 42 reconfigure 000745 constant entry external dcl 42 reconfigure$force_unlock 004374 constant entry external dcl 1091 sc_reconfigure_request 001106 constant entry external dcl 188 setup_io_config_ptrs 010047 constant entry internal dcl 973 ref 405 518 735 793 818 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12460 12636 11453 12470 Length 13370 11453 156 516 1005 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcf 542 external procedure is an external procedure. on unit on line 177 64 on unit on unit on line 199 64 on unit generate_switch_message internal procedure shares stack frame of external procedure rcf. print_scu_message internal procedure shares stack frame of external procedure rcf. add_device 142 internal procedure is called by several nonquick procedures. add_fnp internal procedure shares stack frame of internal procedure add_device. add_channel 160 internal procedure is called by several nonquick procedures. add_devices internal procedure shares stack frame of internal procedure add_channel. newly_accessible internal procedure shares stack frame of internal procedure add_channel. delete_devices 114 internal procedure is called by several nonquick procedures. needs_this_channel internal procedure shares stack frame of internal procedure delete_devices. canonicalize_channel_name internal procedure shares stack frame of external procedure rcf. base_channel internal procedure shares stack frame of external procedure rcf. device_type 64 internal procedure is called by several nonquick procedures. available_paths 79 internal procedure is called by several nonquick procedures. connected 66 internal procedure is called by several nonquick procedures. add_physical_channel internal procedure shares stack frame of external procedure rcf. delete_physical_channel internal procedure shares stack frame of external procedure rcf. add_iom 80 internal procedure is called by several nonquick procedures. clean_up 84 internal procedure is called by several nonquick procedures. add_to_backout_list 65 internal procedure is called by several nonquick procedures. backout_work_so_far 128 internal procedure is called by several nonquick procedures. get_tag_from_name 68 internal procedure is called by several nonquick procedures. setup_io_config_ptrs internal procedure shares stack frame of external procedure rcf. abort_entry 64 internal procedure is assigned to an entry variable. quit_with_usage internal procedure shares stack frame of external procedure rcf. quit 204 internal procedure is called during a stack extension, and is declared options(variable). extract_code internal procedure shares stack frame of internal procedure quit. quit_if_rc_error internal procedure shares stack frame of external procedure rcf. message_is_called_for 64 internal procedure is called by several nonquick procedures. on unit on line 1103 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add_channel 000100 add_entry add_channel 000110 device_idx add_devices 000120 path_count newly_accessible add_device 000100 desired_configured_setting add_device 000110 n_users add_fnp available_paths 000100 c available_paths 000101 count available_paths backout_work_so_far 000100 name backout_work_so_far connected 000100 i connected delete_devices 000100 device_idx delete_devices 000110 path_count needs_this_channel quit 000100 arg_list_ptr quit 000102 code quit 000103 message quit rcf 000100 action rcf 000101 add_all_sw rcf 000102 add_del_sw rcf 000103 arg_count rcf 000104 arg_idx rcf 000105 arg_state rcf 000106 backing_out rcf 000110 backout_list_ptr rcf 000112 brief_sw rcf 000114 cdtp rcf 000116 channel_idx rcf 000117 code rcf 000120 control_arg rcf 000122 deadline rcf 000124 delete_all_sw rcf 000125 device_idx rcf 000126 error_tag rcf 000127 first_frame rcf 000130 force_sw rcf 000131 i rcf 000132 iom_idx rcf 000133 interlace rcf 000134 mpc_idx rcf 000135 n_frames rcf 000136 name rcf 000146 reason rcf 000250 sci_ptr rcf 000252 standalone_invocation rcf 000253 switches rcf 000257 tag rcf 000260 type_idx rcf 000261 argl rcf 000262 argp rcf 000264 pip rcf 000266 area_ptr rcf 000270 item_ptr rcf 000300 auto_rci rcf 000360 io_config_data_ptr rcf 000362 io_config_device_table_ptr rcf 000364 io_config_channel_table_ptr rcf 000366 io_config_controller_table_ptr rcf 000370 io_config_iom_table_ptr rcf 000372 rswp rcf 000374 sc_subsystem_info_ptr rcf 000444 cx add_physical_channel 000454 cx delete_physical_channel 000500 row_idx quit_if_rc_error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 mdfx1 enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis index_chars_eis op_alloc_ index_after_cs clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_list_ptr cv_integer_string_check_ hphcs_$add_channel hphcs_$add_cpu hphcs_$add_iom hphcs_$add_main hphcs_$add_scu hphcs_$configure_fnp hphcs_$deconfigure_fnp hphcs_$del_cpu hphcs_$del_main hphcs_$del_scu hphcs_$delete_channel hphcs_$delete_iom hphcs_$rc_force_unlock hphcs_$reconfig_info initiate_file_ ioa_ ioa_$general_rs multiplexer_mgr_$count_mpx_users parse_fnp_name_ rcp_sys_$add_device rcp_sys_$delete_device ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$get_area ssu_$print_message ssu_$release_area ssu_$standalone_invocation terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_arg error_table_$badopt error_table_$chnl_already_deleted error_table_$inconsistent error_table_$io_configured error_table_$io_not_available error_table_$io_not_configured error_table_$io_not_configured error_table_$io_not_defined error_table_$noarg error_table_$not_base_channel error_table_$too_many_args error_table_$unimplemented_version io_config_data$ rc_messages$rc_messages scs$controller_data scs$processor_data LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 000735 174 000752 175 000754 177 000762 178 000776 179 001003 180 001010 181 001011 182 001052 183 001054 184 001100 186 001101 188 001102 194 001113 195 001114 196 001116 197 001121 198 001125 199 001130 200 001144 201 001151 202 001156 204 001157 206 001160 207 001171 209 001177 211 001210 213 001241 214 001243 215 001244 216 001245 217 001246 218 001247 219 001257 220 001274 223 001306 224 001310 226 001311 227 001313 229 001323 231 001336 233 001345 235 001357 237 001372 239 001404 240 001423 242 001424 244 001425 245 001430 247 001441 249 001453 250 001473 251 001474 252 001476 253 001513 254 001515 256 001540 257 001543 258 001544 259 001546 260 001553 261 001554 263 001565 265 001567 267 001601 272 001623 274 001625 279 001645 281 001664 282 001712 283 001716 284 001731 285 001734 286 001736 288 001750 291 001764 292 001766 293 001773 295 002002 297 002006 299 002023 301 002040 303 002063 305 002077 307 002116 308 002120 310 002121 311 002123 313 002134 316 002140 318 002174 320 002175 321 002206 323 002212 326 002244 348 002245 350 002264 351 002312 352 002316 353 002333 356 002352 358 002356 359 002357 361 002360 362 002373 364 002377 366 002400 378 002401 380 002412 381 002413 382 002443 384 002461 385 002463 387 002464 388 002524 390 002554 391 002617 393 002650 395 002655 397 002674 398 002707 400 002713 403 002772 405 002773 407 002774 409 003014 410 003016 411 003022 412 003025 414 003026 416 003042 417 003052 419 003101 421 003142 518 003143 520 003144 521 003147 523 003166 524 003170 526 003221 527 003224 528 003234 530 003262 532 003263 533 003265 534 003275 537 003323 538 003333 541 003361 544 003427 735 003430 737 003431 738 003434 740 003454 741 003456 743 003507 746 003541 748 003547 749 003551 751 003576 753 003631 793 003632 795 003633 798 003652 799 003654 802 003707 803 003710 804 003721 806 003737 808 003745 810 003753 813 004003 814 004005 816 004040 818 004041 820 004042 821 004045 823 004064 824 004066 827 004115 828 004120 829 004130 833 004154 835 004171 836 004207 839 004215 840 004217 843 004224 846 004257 848 004261 849 004264 850 004274 854 004320 856 004361 879 004362 881 004366 884 004372 1091 004373 1099 004401 1100 004403 1103 004411 1104 004425 1105 004432 1106 004437 1108 004440 1109 004441 1110 004502 1111 004504 1112 004530 1114 004531 1115 004542 1118 004561 1119 004574 1121 004624 1123 004655 1125 004662 328 004663 333 004674 334 004706 335 004722 337 004723 340 004734 341 004746 342 004760 343 004770 344 004777 346 005013 368 005014 371 005015 376 005111 423 005112 432 005120 433 005143 434 005145 437 005150 438 005154 439 005175 440 005176 441 005201 442 005203 443 005222 444 005223 446 005227 448 005260 450 005261 453 005267 454 005305 455 005316 458 005321 459 005345 460 005346 466 005347 488 005351 489 005433 491 005442 493 005443 496 005445 497 005450 498 005513 500 005517 502 005554 503 005604 504 005607 505 005614 506 005617 509 005620 510 005702 512 005711 546 005712 554 005720 555 005722 556 005737 558 005740 561 005746 562 005747 563 005752 564 005764 567 005767 568 006005 570 006010 571 006027 574 006043 579 006044 587 006046 588 006057 589 006075 590 006107 591 006112 592 006115 594 006155 595 006157 596 006160 597 006161 598 006162 601 006225 624 006227 607 006230 615 006232 617 006243 618 006254 620 006320 627 006346 635 006354 636 006356 637 006367 638 006405 639 006417 641 006422 644 006462 666 006464 648 006465 656 006467 659 006500 660 006511 662 006555 668 006603 673 006614 676 006626 677 006640 681 006642 686 006644 690 006654 695 006662 700 006675 708 006703 709 006704 710 006715 712 006745 713 006747 717 006753 725 006761 728 007000 730 007012 731 007014 755 007017 763 007021 764 007032 766 007036 767 007047 769 007076 771 007100 773 007101 782 007103 783 007113 786 007147 787 007151 788 007162 791 007167 858 007170 864 007176 865 007235 867 007236 870 007244 872 007303 875 007325 886 007326 888 007334 889 007341 890 007367 892 007372 893 007376 894 007407 896 007412 897 007414 898 007423 900 007426 902 007427 908 007443 910 007446 911 007455 912 007460 913 007465 914 007467 916 007470 918 007471 923 007477 924 007502 925 007505 926 007507 927 007510 929 007511 930 007513 932 007514 934 007520 936 007536 937 007543 938 007545 939 007555 940 007564 942 007601 943 007612 944 007613 945 007621 946 007630 948 007645 949 007656 950 007657 951 007665 952 007674 954 007711 956 007722 959 007772 960 007777 962 010000 964 010001 969 010015 973 010047 976 010050 977 010053 979 010101 980 010107 983 010133 984 010141 987 010165 988 010173 991 010217 992 010225 995 010254 997 010255 1000 010263 1004 010266 1009 010270 1011 010307 1013 010310 1020 010316 1021 010323 1024 010350 1025 010417 1027 010441 1029 010444 1035 010455 1036 010464 1038 010517 1042 010522 1046 010523 1058 010525 1061 010530 1063 010550 1066 010604 1068 010614 1069 010617 1072 010653 1077 010654 1080 010662 1082 010671 1084 010677 ----------------------------------------------------------- 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