COMPILATION LISTING OF SEGMENT multiplexer_mgr_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/25/89 1050.8 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* MULTIPLEXER_MGR_ - Manages various multiplexers on behalf of the answering service */ 14 /* Written July-August-September 1978 by Larry Johnson */ 15 /* Modified April 1979 by Larry Johnson so that top level multiplexers need not be FNP's running MCS */ 16 /* Modified July 1979 by C. Hornig so that they don't even need to be FNP's. */ 17 /* Modified Dec. 1980 - Jan. 1981 by Robert Coren to separate start_mpx from listen */ 18 /* Modified Jan. 1981 by Robert Coren to make dump_mpx while load is pending work */ 19 /* Modified December 1981 by Benson I. Margulies for CDT tree. */ 20 /* Modified May 1982 by E. N. Kittlitz for New AS initialization. */ 21 /* Modified June 1982 By B. I. Margulies & E. N. Kittlitz. bug fixes. */ 22 /* Modified June 1982 by E. N. Kittlitz. early stop_mpx bugfix. */ 23 /* Modified August 1982 by Robert Coren to make it possible to prevent automatic reload when calling mpx_crashed. */ 24 /* Modified November 1982 by E. N. Kittlitz. RADC ftp change. BIM fixes. 25* don't report load failure to as_init_ on system_init call */ 26 /* Modified January 1983 by E. N. Kittlitz. plotz load of mux with no daughters */ 27 /* Modified August 1983 by Robert Coren. Retry load of non-hardwired mulitplexer if load fails. */ 28 /* Modified August 1983 by Robert Coren. Keep shutdown entry from terminating amultiplexer that wasn't up to begin with. */ 29 /* Modified 83-12-14 BIM. Add shutdown_command for a command interface. 30* add count_mpx_users entry. no dump / reload on deconfigure crash. */ 31 /* Modified 84-04-02 BIM. Removed reference to cdte.dim. */ 32 /* Modified 1984-08-02 BIM for bad ref to mpxe.state in shutdown. */ 33 /* Modified 1985-02-19, BIM: to initialize cdte.user_name to a known state */ 34 35 36 /****^ HISTORY COMMENTS: 37* 1) change(86-03-25,MSharpe), approve(86-07-30,MCR7690), 38* audit(87-06-25,Parisek), install(87-08-04,MR12.1-1055): 39* install(86-10-09,MR12.0-1181): 40* 2) change(86-06-19,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 41* install(86-10-09,MR12.0-1181): 42* Changed to support the new tty event message format declared in 43* net_event_message.incl.pl1 which replaces tty_event_message.incl.pl1. 44* END HISTORY COMMENTS */ 45 46 47 /* format: style4,delnl,insnl,^ifthendo */ 48 multiplexer_mgr_: 49 procedure; 50 51 /* Arguments */ 52 53 dcl arg_mpx_name char (*); /* Name of a multiplexer to load */ 54 dcl arg_check_sw bit (1) aligned; /* Check load */ 55 dcl arg_count fixed bin; /* for delete_fnp */ 56 dcl arg_go_sw bit (1) aligned; /* Go after load */ 57 dcl arg_force_sw bit (1) aligned; /* Force operation in spite of who is logged out */ 58 dcl arg_dump_sw bit (1) aligned; /* Says whether or not to take a dump */ 59 dcl arg_reload_sw bit (1) aligned; /* Says whether to reload after a crash */ 60 dcl arg_state fixed bin; /* State of multiplexer */ 61 dcl arg_code fixed bin (35); /* Automatic */ 62 dcl arg_cdtp ptr; /* Pointer to base of cdt */ 63 64 /* Automatic */ 65 66 dcl code fixed bin (35); 67 dcl i fixed bin; 68 dcl mpx_name char (32); 69 dcl mpx_cdtep ptr; /* Ptr to either cdte or fnpe for this mpx */ 70 dcl mpx_display_name char (64) var; /* For error messages */ 71 dcl name char (64); /* Name of entry called */ 72 dcl n_users fixed bin; /* Count of users on multiplexer */ 73 dcl devx fixed bin; /* Ring0 device-index of multiplexer */ 74 dcl new_mpx_type fixed bin; /* Used if mpx_type is changing */ 75 dcl entvar entry variable options (variable); 76 dcl parent_state fixed bin; /* State of a multiplexers parent */ 77 dcl fnp_only bit (1) init ("0"b); /* Used by stop_fnp in a special case which is limited to fnps */ 78 dcl p ptr; 79 dcl shutdown_dump bit (1) aligned; 80 dcl smlep ptr; 81 dcl up_time fixed bin; 82 dcl mpx_was_up bit (1); 83 dcl thread_trouble_count fixed bin; 84 dcl muxx fixed bin; 85 dcl x fixed bin; 86 dcl firstx fixed bin; 87 dcl d_limit fixed bin; 88 dcl BAD_THREADS_LABEL label variable internal; /* Debuggers and other buggers can put versions of that in their search rules */ 89 90 dcl 1 ev_msg aligned like event_call_info; 91 declare 1 auto_condition_info aligned like condition_info; 92 93 /* Based */ 94 95 dcl mpx_area area (sys_info$max_seg_size) based (mpx_areap); 96 dcl 1 stop_mpx_list_entry based (smlep) aligned, 97 2 mpx_name char (32) unaligned, 98 2 next ptr; 99 100 /* Static */ 101 102 dcl static_cdtp ptr int static init (null ()); /* CDT pointer saved at initialization */ 103 dcl mpx_areap ptr int static init (null ()); /* Remember pointer to my work area */ 104 dcl loud bit (1) int static init ("0"b); /* If set, enables some extra messages */ 105 106 dcl stop_mpx_list_ptr_ ptr ext static init (null); /* list of muxes stopped by early stop_mpx command */ 107 108 /* Constants */ 109 110 dcl proc_name char (16) int static options (constant) init ("multiplexer_mgr_"); 111 112 /* External */ 113 114 dcl asu_$asu_listen entry (ptr, fixed bin (35)); 115 dcl asu_$attach_channel entry (ptr, fixed bin (35)); 116 dcl asu_$channel_in_use entry (ptr) returns (bit (1) aligned); 117 dcl cdt_mgr_$find_cdt_channel entry (pointer, character (32), fixed binary, bit (1) aligned, fixed binary (35)); 118 dcl cdt_mgr_$thread_out_cdt_channel entry (ptr, fixed bin); 119 dcl dialup_$simulated_wakeup entry (ptr); 120 dcl mc_tty_$simulated_wakeup entry (ptr); 121 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 122 dcl get_system_free_area_ entry () returns (ptr); 123 dcl get_process_id_ returns (bit (36)); 124 dcl hcs_$make_entry entry (ptr, char (*), char (*), entry, fixed bin (35)); 125 dcl phcs_$get_devx entry (char (*), fixed bin, fixed bin (35)); 126 dcl phcs_$tty_control entry (char (*), char (*), pointer, fixed bin (35)); 127 dcl hphcs_$init_channel entry (fixed bin, ptr, fixed bin (35)); 128 dcl hphcs_$init_multiplexer entry (fixed bin, fixed bin, ptr, fixed bin (35)); 129 dcl hphcs_$shutdown_multiplexer entry (fixed bin, fixed bin (35)); 130 dcl hphcs_$terminate_channel entry (fixed bin, fixed bin (35)); 131 dcl hphcs_$terminate_multiplexer entry (fixed bin, fixed bin (35)); 132 dcl hphcs_$start_multiplexer entry (fixed bin, fixed bin (35)); 133 dcl hphcs_$stop_multiplexer entry (fixed bin, fixed bin (35)); 134 dcl hphcs_$lct_init entry (fixed bin, fixed bin (35)); 135 dcl sub_err_ entry () options (variable); 136 dcl sys_log_ entry options (variable); 137 dcl sys_log_$error_log entry options (variable); 138 dcl iox_$err_no_operation entry; 139 dcl mc_commands_$listen_to_ttys entry (char (*)); 140 dcl mc_commands_$remove_tty entry (char (*), bit (1) aligned, fixed bin (35)); 141 142 dcl error_table_$action_not_performed ext fixed bin (35); 143 dcl error_table_$null_info_ptr fixed bin (35) ext static; 144 dcl error_table_$out_of_sequence fixed bin (35) ext static; 145 dcl sys_info$max_seg_size ext fixed bin (19); 146 147 dcl sub_error_ condition; 148 149 dcl (addr, clock, collate, divide, unspec, hbound, index, null, rank, rtrim, substr) builtin; 150 151 152 153 test_update_mpx: 154 entry (arg_mpx_name, arg_test_cdtp, arg_code); 155 declare arg_test_cdtp pointer; 156 157 call set_entry_name ("test_update_mpx"); 158 mpx_name = arg_mpx_name; 159 cdtp = arg_test_cdtp; 160 call validate_mpx_name (muxx); /* grab this mux */ 161 if code ^= 0 162 then do; 163 arg_code = code; 164 return; 165 end; 166 167 call update_cdt (muxx); 168 return; 169 170 /* Entry to "load" a multiplexer */ 171 172 load_mpx: 173 entry (arg_mpx_name, arg_check_sw, arg_go_sw, arg_force_sw, arg_code); 174 175 call set_entry_name ("load_mpx"); 176 RE_LOAD_MPX: 177 mpx_name = arg_mpx_name; 178 cdtp = static_cdtp; 179 if cdtp = null | ^cdt.mux_mgr_system_init 180 then go to ERROR_EARLY_CALL; 181 BAD_THREADS_LABEL = RE_LOAD_MPX; 182 183 call validate_mpx_name (muxx); /* grab this mux */ 184 if code ^= 0 185 then do; 186 arg_code = code; 187 return; 188 end; 189 190 if loud 191 then call sys_log_ (1, "^a: Loading ^a.^[ check^]^[ go^]^[ force^]", name, mpx_display_name, arg_check_sw, 192 arg_go_sw, arg_force_sw); 193 194 call check_parent_state (muxx); /* Must check to see if my parent is well first */ 195 if code ^= 0 196 then do; 197 call sys_log_ (1, "^a: ^a not loaded. Unable to determine the state of its parent.", name, 198 mpx_display_name); 199 arg_code = error_table_$action_not_performed; 200 return; 201 end; 202 if parent_state ^= MPX_UP 203 then do; 204 call sys_log_ (1, "^a: ^a cannot be loaded because its parent multiplexer is not running.", name, 205 mpx_display_name); 206 arg_code = error_table_$action_not_performed; 207 return; 208 end; 209 210 if mpxe.state = MPX_BOOT 211 then do; /* Current bootload must finish first */ 212 call sys_log_ (1, "^a: Initialization of ^a already in progress.", name, mpx_display_name); 213 arg_code = error_table_$action_not_performed; 214 return; 215 end; 216 217 if ^arg_force_sw 218 then do; /* Be sure no one is using any of these channels */ 219 call count_mpx_users (muxx, n_users); 220 if n_users > 0 221 then do; 222 call sys_log_ (1, 223 "^a: User^[s^] of ^d channel^[s^] would be hung up. ^a not loaded. Use -force if necessary.", 224 name, (n_users ^= 1), n_users, (n_users ^= 1), mpx_display_name); 225 code = error_table_$action_not_performed; 226 return; 227 end; 228 end; 229 230 if mpxe.state = MPX_UP 231 then do; 232 call shutdown_mpx (mpx_name, "0"b, code); /* Do a force shutdown of the multiplexer */ 233 if code ^= 0 234 then do; 235 arg_code = code; 236 return; 237 end; 238 end; 239 240 call update_cdt (muxx); /* Perform any pending channel deletions and additions */ 241 242 call find_subchannels (muxx, miip); /* Locate all subchannels of this multiplexer */ 243 if miip = null 244 then do; /* this is nature's way of saying FOO! */ 245 call sys_log_ (1, "^a: ^a has no subchannels.", name, mpx_display_name); 246 code = error_table_$action_not_performed; 247 go to load_mpx_return; 248 end; 249 250 mpxe.current_mpx_type = new_mpx_type; 251 252 mpxe.current_service_type = ACTIVE; 253 mpxe.flags.check = arg_check_sw; /* save this info in case we retry the load */ 254 255 call phcs_$get_devx (mpx_name, devx, code); 256 if code ^= 0 257 then do; 258 call sys_log_$error_log (1, code, name, "Unable to get a devx for ^a", mpx_display_name); 259 go to load_mpx_return; 260 end; 261 262 call hphcs_$init_multiplexer (devx, mpxe.current_mpx_type, miip, code); 263 if code ^= 0 264 then do; 265 call sys_log_$error_log (1, code, name, "Unable to initialize ^a.", mpx_display_name); 266 code = error_table_$action_not_performed; 267 go to load_mpx_return; 268 end; 269 270 271 /**** mux_init_info contains exactly those channels in the sister */ 272 /**** chain, in the same order. */ 273 274 call thread_start (muxx, firstx, d_limit); 275 276 i = 0; 277 begin; 278 declare 1 cdt_list aligned, 279 2 ct fixed bin init (d_limit), 280 2 cdteps (d_limit) ptr unaligned; 281 282 do x = firstx repeat (cdt_entry (x).threads.next_sister) while (x ^= 0); 283 i = i + 1; 284 285 cdtep = addr (cdt.cdt_entry (x)); 286 if i > d_limit | i > cdt.n_cdtes | cdte.threads.mother ^= muxx 287 then call CDT_THREAD_DAMAGE (i, muxx, x); 288 289 cdt_list.cdteps (i) = cdtep; 290 cdte.twx = mux_init_info.devx (i); 291 if cdte.twx = 0 292 then call sys_log_ (1, "^a: No devx assigned to ^a.", name, cdte.name); 293 else if cdte.current_service_type ^= MPX_SERVICE 294 then do; /* Init non-multiplexers */ 295 call hphcs_$init_channel (cdte.twx, null (), code); 296 if code ^= 0 297 then call sys_log_ (1, "^a: Unable to init channel ^a on ^a.", name, cdte.name, mpx_display_name) 298 ; 299 end; 300 end; 301 302 if i < d_limit /* ran out of daughters too soon */ 303 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, muxx); 304 305 mpxe.flags.go = arg_go_sw; 306 mpxe.n_bootloads = mpxe.n_bootloads + 1; 307 mpxe.state = MPX_BOOT; 308 mpxe.time_load_start = clock (); 309 mpxe.flags.listening = "0"b; 310 311 call build_entvar ("load"); 312 call entvar (mpx_name, cdtp, mpx_cdtep, addr (cdt_list), arg_check_sw, code); 313 end; 314 if code ^= 0 315 then do; 316 mpxe.state = MPX_DOWN; 317 if loud 318 then call sys_log_$error_log (1, code, name, "Unable to load ^a.", mpx_display_name); 319 320 i = 0; 321 do x = firstx repeat (cdt_entry (x).threads.next_sister) while (x ^= 0); 322 i = i + 1; /* safety count */ 323 cdtep = addr (cdt.cdt_entry (x)); 324 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= muxx 325 then call CDT_THREAD_DAMAGE (i, muxx, x); 326 if cdte.twx ^= 0 & cdte.current_service_type ^= MPX_SERVICE 327 then call hphcs_$terminate_channel (cdte.twx, code); 328 cdte.twx = 0; 329 end; 330 if i < d_limit /* ran out of daughters too soon */ 331 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, muxx); 332 333 call hphcs_$terminate_multiplexer (devx, code); 334 code = error_table_$action_not_performed; 335 go to load_mpx_return; 336 end; 337 338 339 i = 0; 340 do x = firstx repeat (cdt_entry (x).threads.next_sister) while (x ^= 0); 341 cdtep = addr (cdt.cdt_entry (x)); 342 i = i + 1; 343 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= muxx 344 then call CDT_THREAD_DAMAGE (i, muxx, x); 345 if cdte.current_service_type = MPX_SERVICE 346 then cdte.twx = 0; 347 end; 348 if i < d_limit /* ran out of daughters too soon */ 349 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, muxx); 350 351 if mpxe.current_mpx_type ^= MCS_MPX /* don't do this for FNPs */ 352 then mpxe.flags.retry_load = ^mpx_cdtep -> cdte.flags.hardwired; 353 /* otherwise plan to reload a dialup multiplexer if load fails */ 354 355 load_mpx_return: 356 if miip ^= null () 357 then free mux_init_info; 358 arg_code = code; 359 return; 360 361 /* Entry to perform an orderly shutdown of a multiplexer */ 362 /* NOT FOR EXTERNAL USE. USE COMMAND ENTRY */ 363 364 shutdown_mpx: 365 entry (arg_mpx_name, arg_dump_sw, arg_code); 366 367 call set_entry_name ("shutdown_mpx"); 368 RE_SHUTDOWN_MPX: 369 mpx_name = arg_mpx_name; 370 cdtp = static_cdtp; 371 if cdtp = null | ^cdt.mux_mgr_system_init 372 then go to ERROR_EARLY_CALL; 373 BAD_THREADS_LABEL = RE_SHUTDOWN_MPX; 374 375 call validate_mpx_name (muxx); 376 if code ^= 0 377 then do; 378 arg_code = code; 379 return; 380 end; 381 382 if loud 383 then call sys_log_ (1, "^a: Shutting down ^a.^[ dump^]", name, mpx_display_name, arg_dump_sw); 384 385 if (mpxe.state = MPX_UP) | (mpxe.state = MPX_BOOT) 386 then do; 387 call phcs_$get_devx (mpx_name, devx, code); 388 if code ^= 0 389 then do; 390 arg_code = code; 391 return; 392 end; 393 394 mpxe.state = MPX_DOWN; /* Tell dialup_ not to try to do anything useful with subchannels. */ 395 call hphcs_$shutdown_multiplexer (devx, code); 396 if code ^= 0 397 then call sys_log_$error_log (1, code, name, "Shutting down ^a.", mpx_display_name); 398 mpx_was_up = "1"b; 399 end; 400 401 else mpx_was_up = "0"b; 402 403 if arg_dump_sw 404 then do; /* Dump required */ 405 call build_entvar ("dump"); 406 call entvar (mpx_name, cdtp, mpx_cdtep, code); 407 if code ^= 0 408 then call sys_log_$error_log (1, code, name, "Unable to dump ^a.", mpx_display_name); 409 end; 410 411 call thread_start (muxx, firstx, d_limit); 412 413 if mpx_was_up 414 then do; 415 i = 0; 416 SHUTDOWN_MPX_LOOP: 417 do x = firstx repeat (cdt.cdt_entry (x).threads.next_sister) while (x ^= 0); 418 cdtep = addr (cdt.cdt_entry (x)); 419 i = i + 1; 420 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= muxx 421 then call CDT_THREAD_DAMAGE (i, muxx, x); 422 if cdte.current_service_type = MPX_SERVICE 423 then do; 424 p = addr (cdte.initial_command); 425 if p -> mpxe.state = MPX_UP | p -> mpxe.state = MPX_BOOT 426 then call shutdown_mpx ((cdte.name), "0"b, code); 427 end; 428 else if cdte.twx ^= 0 429 then do; 430 call hphcs_$terminate_channel (cdte.twx, code); 431 if code ^= 0 432 then call sys_log_$error_log (1, code, name, "Terminating ^a.", cdte.name); 433 if cdte.in_use > NOW_HUNG_UP 434 then do; 435 unspec (net_event_message) = "0"b; 436 /* Simulate hangup wakeup */ 437 net_event_message.version = NET_EVENT_MESSAGE_VERSION_1; 438 net_event_message.network_type = MCS_NETWORK_TYPE; 439 net_event_message.handle = cdte.twx; 440 net_event_message.type = MCS_HANGUP_MSG; 441 ev_msg.channel_id = cdte.event; 442 unspec (ev_msg.message) = unspec (net_event_message); 443 ev_msg.sender = get_process_id_ (); 444 ev_msg.origin.dev_signal = "0"b; 445 ev_msg.origin.ring = 0; 446 ev_msg.data_ptr = cdtep; 447 if cdte.wakeup_handler = "0"b 448 then call dialup_$simulated_wakeup (addr (ev_msg)); 449 else call mc_tty_$simulated_wakeup (addr (ev_msg)); 450 end; 451 cdte.twx = 0; 452 end; 453 454 end SHUTDOWN_MPX_LOOP; 455 456 if i < d_limit /* ran out of daughters too soon */ 457 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, muxx); 458 459 call hphcs_$terminate_multiplexer (devx, code); 460 if code ^= 0 461 then call sys_log_$error_log (1, code, name, "Terminating ^a.", mpx_display_name); 462 end; 463 arg_code = code; 464 465 return; 466 467 /* Entry to dump and shutdown a multiplexer */ 468 469 shutdown_mpx_command: 470 entry (arg_mpx_name, arg_force_sw, arg_code); 471 472 call set_entry_name ("shutdown_mpx_command"); 473 shutdown_dump = "0"b; 474 go to SHUTDOWN_DUMP_COMMON; 475 476 dump_mpx: 477 entry (arg_mpx_name, arg_force_sw, arg_code); 478 479 shutdown_dump = "1"b; 480 call set_entry_name ("dump_mpx"); 481 SHUTDOWN_DUMP_COMMON: 482 RE_DUMP_MPX: 483 mpx_name = arg_mpx_name; 484 cdtp = static_cdtp; 485 if cdtp = null | ^cdt.mux_mgr_system_init 486 then go to ERROR_EARLY_CALL; 487 BAD_THREADS_LABEL = RE_DUMP_MPX; 488 489 call validate_mpx_name (muxx); 490 if code ^= 0 491 then do; 492 arg_code = code; 493 return; 494 end; 495 496 if loud 497 then call sys_log_ (1, "^a: Dumping ^a.^[ force^]", name, mpx_display_name, arg_force_sw); 498 499 if ^arg_force_sw 500 then do; /* Be sure no one is using any of these channels */ 501 call count_mpx_users (muxx, n_users); 502 if n_users > 0 503 then do; 504 call sys_log_ (1, 505 "^a: User^[s^] of ^d channel^[s^] would be hung up. ^a not dumped. Use -force if necessarry.", 506 name, (n_users ^= 1), n_users, (n_users ^= 1), mpx_display_name); 507 arg_code = error_table_$action_not_performed; 508 return; 509 end; 510 end; 511 512 mpxe.flags.retry_load = "0"b; /* if this results in "load failed", don't reload */ 513 514 call shutdown_mpx (mpx_name, shutdown_dump, code); 515 arg_code = code; 516 return; 517 518 /* Entry to start a multiplexer, once it is loaded */ 519 520 start_mpx: 521 entry (arg_mpx_name, arg_force_sw, arg_code); 522 523 call set_entry_name ("start_mpx"); 524 RE_START_MPX: 525 mpx_name = arg_mpx_name; 526 cdtp = static_cdtp; 527 if cdtp = null | ^cdt.mux_mgr_system_init 528 then go to ERROR_EARLY_CALL; 529 BAD_THREADS_LABEL = RE_START_MPX; 530 531 call validate_mpx_name (muxx); 532 if code ^= 0 533 then do; 534 arg_code = code; 535 return; 536 end; 537 538 if loud 539 then call sys_log_ (1, "^a: Starting ^a.^[ force^]", name, mpx_display_name, arg_force_sw); 540 541 if (mpxe.state ^= MPX_BOOT) & (mpxe.state ^= MPX_UP) 542 then do; 543 call sys_log_ (1, "^a: ^a has not been loaded, so it cant be started.", name, mpx_display_name); 544 arg_code = error_table_$action_not_performed; 545 return; 546 end; 547 548 if (mpxe.state = MPX_UP) & mpxe.flags.go & (mpxe.current_service_type = ACTIVE) & ^arg_force_sw 549 then do; 550 call sys_log_ (1, "^a: ^a is already started.", name, mpx_display_name); 551 arg_code = error_table_$action_not_performed; 552 return; 553 end; 554 555 mpxe.flags.go = "1"b; /* In case started with nogo */ 556 mpxe.current_service_type = ACTIVE; 557 558 if mpxe.state = MPX_BOOT 559 then do; /* Boot in progress, can't start yet */ 560 call sys_log_ (1, "^a: ^a is currently loading. It will be started when load completes.", name, 561 mpx_display_name); 562 arg_code = error_table_$action_not_performed; 563 return; 564 end; 565 566 call phcs_$get_devx (mpx_name, devx, code); 567 if code ^= 0 568 then do; 569 call sys_log_$error_log (1, code, name, "Can't get devx for ^a.", mpx_display_name); 570 arg_code = code; 571 return; 572 end; 573 574 call hphcs_$start_multiplexer (devx, code); 575 if code ^= 0 576 then do; 577 call sys_log_$error_log (1, code, name, "Starting ^a.", mpx_display_name); 578 arg_code = code; 579 return; 580 end; 581 582 arg_code = 0; 583 return; 584 585 /* Entry to stop a multiplexer */ 586 587 stop_mpx: 588 entry (arg_mpx_name, arg_code); 589 590 call set_entry_name ("stop_mpx"); 591 RE_STOP_MPX: 592 mpx_name = arg_mpx_name; 593 cdtp = static_cdtp; 594 BAD_THREADS_LABEL = RE_STOP_MPX; 595 596 if cdtp = null /* Early call */ 597 then do; 598 call get_cdt_ptr (arg_code); 599 if arg_code ^= 0 600 then return; 601 end; 602 if ^cdt.mux_mgr_system_init 603 then fnp_only = "1"b; /* Allow this only for FNP's */ 604 605 call validate_mpx_name (muxx); 606 if code ^= 0 607 then do; 608 arg_code = code; 609 return; 610 end; 611 612 if loud 613 then call sys_log_ (1, "^a: Stopping ^a", name, mpx_display_name); 614 615 mpxe.current_service_type = INACTIVE; 616 mpxe.flags.go = "0"b; 617 618 if mpxe.state = MPX_UP 619 then do; 620 call phcs_$get_devx (mpx_name, devx, code); 621 if code ^= 0 622 then do; 623 call sys_log_$error_log (1, code, name, "Can't get devx for ^a.", mpx_display_name); 624 arg_code = code; 625 return; 626 end; 627 call hphcs_$stop_multiplexer (devx, code); 628 if code ^= 0 629 then do; 630 call sys_log_$error_log (1, code, name, "Unable to stop ^a.", mpx_display_name); 631 arg_code = code; 632 return; 633 end; 634 call sys_log_ (1, "^a: ^a is running but no longer accepting calls.", name, mpx_display_name); 635 end; 636 637 else if mpxe.state = MPX_BOOT 638 then call sys_log_ (1, "^a: ^a is now loading, but will not be started", name, mpx_display_name); 639 640 else do; /* early stop_mpx */ 641 call sys_log_ (1, "^a: ^a will not be loaded.", name, mpx_display_name); 642 smlep = stop_mpx_list_ptr_; 643 do while (smlep ^= null); 644 if stop_mpx_list_entry.mpx_name = mpx_name 645 then go to end_early_stop_mpx; 646 else smlep = stop_mpx_list_entry.next; 647 end; 648 allocate stop_mpx_list_entry; 649 stop_mpx_list_entry.mpx_name = mpx_name; 650 stop_mpx_list_entry.next = stop_mpx_list_ptr_; 651 stop_mpx_list_ptr_ = smlep; 652 end_early_stop_mpx: 653 end; 654 arg_code = 0; 655 return; 656 657 /* Initialize all sub-channels of a multiplexer */ 658 /* This means list to all regular subchannels and initialize ("load") all sub-multiplexers */ 659 660 listen_mpx: 661 entry (arg_mpx_name, arg_code); 662 663 dcl top_mpxep ptr; 664 665 call set_entry_name ("listen_mpx"); 666 RE_LISTEN_MPX: 667 mpx_name = arg_mpx_name; 668 cdtp = static_cdtp; 669 BAD_THREADS_LABEL = RE_LISTEN_MPX; 670 if cdtp = null | ^cdt.mux_mgr_system_init 671 then go to ERROR_EARLY_CALL; 672 673 call validate_mpx_name (muxx); 674 if code ^= 0 675 then do; 676 arg_code = code; 677 return; 678 end; 679 680 if loud 681 then call sys_log_ (1, "^a: Listening to ^a.", name, mpx_display_name); 682 683 if mpxe.state ^= MPX_UP 684 then do; 685 call sys_log_ (1, "^a: ^a is not running. Unable to listen to channels.", name, mpx_display_name); 686 arg_code = error_table_$action_not_performed; 687 return; 688 end; 689 690 if mpxe.flags.listening /* don't have to do this again */ 691 then do; 692 arg_code = 0; 693 return; 694 end; 695 696 top_mpxep = mpxep; /* save this pointer for listen switch */ 697 698 call thread_start (muxx, firstx, d_limit); 699 i = 0; 700 do x = firstx repeat (cdt.cdt_entry (x).threads.next_sister) while (x ^= 0); 701 cdtep = addr (cdt.cdt_entry (x)); 702 i = i + 1; 703 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= muxx 704 then call CDT_THREAD_DAMAGE (i, muxx, x); 705 if cdte.in_use > NOW_FREE 706 then do; /* Channel may have been added/deleted during boot */ 707 if cdte.current_service_type = ANS_SERVICE | cdte.current_service_type = SLAVE_SERVICE 708 | cdte.current_service_type = DIAL_OUT_SERVICE | cdte.current_service_type = FTP_SERVICE 709 then do; 710 call asu_$attach_channel (cdtep, code); 711 if code ^= 0 712 then if loud 713 then call sys_log_$error_log (1, code, name, "asu_$attach_channel failed ^a", cdte.name); 714 else ; 715 else do; 716 call asu_$asu_listen (cdtep, code); 717 if code ^= 0 718 then if code ^= error_table_$action_not_performed 719 then call sys_log_$error_log (1, code, name, "Channel ^a listen failed.", cdte.name); 720 else if loud 721 then call sys_log_ (1, "^a: asu_$listen_chanel failed for ^a.", cdte.name); 722 end; 723 end; 724 if cdte.current_service_type = MPX_SERVICE 725 then do; 726 mpxep = addr (cdte.initial_command); 727 if mpxe.current_service_type = ACTIVE 728 then call load_mpx ((cdte.name), "0"b, "1"b, "1"b, code); 729 end; 730 end; 731 end; 732 733 call mc_commands_$listen_to_ttys (mpx_name); 734 top_mpxep -> mpxe.flags.listening = "1"b; 735 arg_code = 0; 736 return; 737 738 /* Entry to check the state of a multiplexer */ 739 740 state_mpx: 741 entry (arg_mpx_name, arg_state, arg_code); 742 743 call set_entry_name ("state_mpx"); 744 RE_STATE_MPX: 745 mpx_name = arg_mpx_name; 746 cdtp = static_cdtp; 747 BAD_THREADS_LABEL = RE_STATE_MPX; 748 if cdtp = null | ^cdt.mux_mgr_system_init 749 then go to ERROR_EARLY_CALL; 750 751 call validate_mpx_name (muxx); 752 if code ^= 0 753 then arg_state = MPX_UNKNOWN; 754 else arg_state = mpxe.state; 755 arg_code = code; 756 return; 757 758 /* Procedure called by indivudal multiplexer handler to report that it is loaded */ 759 760 mpx_loaded: 761 entry (arg_mpx_name, arg_code); 762 763 call set_entry_name ("mpx_loaded"); 764 RE_MPX_LOADED: 765 mpx_name = arg_mpx_name; 766 cdtp = static_cdtp; 767 BAD_THREADS_LABEL = RE_MPX_LOADED; 768 call validate_mpx_name (muxx); 769 if code ^= 0 770 then do; 771 arg_code = code; 772 return; 773 end; 774 775 mpxe.state = MPX_UP; 776 mpxe.time_last_load = clock (); 777 if mpxe.time_initial_load = 0 778 then mpxe.time_initial_load = mpxe.time_last_load; 779 780 call phcs_$tty_control (mpx_name, "copy_meters", null (), (0)); 781 /* clear out the meters */ 782 783 if loud 784 then call sys_log_ (1, "^a: Successful load reported for ^a.", name, mpx_display_name); 785 786 if mpxe.flags.go 787 then call start_mpx (mpx_name, "1"b, code); 788 if code ^= 0 789 then do; 790 arg_code = code; 791 return; 792 end; 793 794 if cdt.flags.go 795 then call listen_mpx (mpx_name, code); 796 arg_code = code; 797 return; 798 799 /* Procedure called by individual multiplexer manager to report a unseccussfull load attempt */ 800 801 mpx_load_failed: 802 entry (arg_mpx_name, arg_code); 803 804 call set_entry_name ("mpx_load_failed"); 805 RE_MPX_LOAD_FAILED: 806 mpx_name = arg_mpx_name; 807 cdtp = static_cdtp; 808 BAD_THREADS_LABEL = RE_MPX_LOAD_FAILED; 809 call validate_mpx_name (muxx); 810 if code ^= 0 811 then do; 812 arg_code = code; 813 return; 814 end; 815 816 if mpxe.state ^= MPX_BOOT 817 then do; /* Not loading! */ 818 call sys_log_ (1, "^a: Report load failure for ^a while not loading.", name, mpx_display_name); 819 arg_code = error_table_$action_not_performed; 820 return; 821 end; 822 823 824 if loud 825 then call sys_log_ (1, "^a: Load of ^a failed.", name, mpx_display_name); 826 call shutdown_mpx (mpx_name, "1"b, code); 827 if code ^= 0 828 then call sys_log_$error_log (1, code, name, "Trying to shutdown ^a.", mpx_display_name); 829 830 mpxe.state = MPX_DOWN; 831 832 /* Now try the load again (if that's what we're supposed to do) */ 833 834 if mpxe.flags.retry_load & code = 0 /* as long as the shutdown was OK */ 835 then call load_mpx (mpx_name, (mpxe.flags.check), (mpxe.flags.go), "1"b, code); 836 837 arg_code = 0; 838 return; 839 840 /* Procedure called by individual multiplexer manager to report a crash */ 841 842 mpx_crashed: 843 entry (arg_mpx_name, arg_reload_sw, arg_code); 844 845 call set_entry_name ("mpx_crashed"); 846 RE_MPX_CRASHED: 847 mpx_name = arg_mpx_name; 848 cdtp = static_cdtp; 849 BAD_THREADS_LABEL = RE_MPX_CRASHED; 850 call validate_mpx_name (muxx); 851 if code ^= 0 852 then do; 853 arg_code = code; 854 return; 855 end; 856 857 mpxe.time_last_crash = clock (); 858 if loud 859 then call sys_log_ (1, "^a: Crash reported for ^a.", name, mpx_display_name); 860 call shutdown_mpx (mpx_name, arg_reload_sw, code);/* since only FNP's have dumps, and FNPs set this to zero to mean "don't touch" */ 861 if code ^= 0 862 then call sys_log_$error_log (1, code, name, "Shutting down ^a", mpx_display_name); 863 864 /* Here we must decide whether or not to reload the mpx */ 865 866 up_time = divide (mpxe.time_last_crash - mpxe.time_last_load, 60000000, 17, 0); 867 /* Time it stayed up */ 868 code = 0; 869 870 if arg_reload_sw 871 then do; 872 if mpxe.current_service_type = INACTIVE 873 then /* Stopped by operator */ 874 call sys_log_ (1, "^a: ^a is stopped and will not be reloaded.", name, mpx_display_name); 875 876 else if cdt.acceptable_fnp_tbf = 0 877 then /* No auto reloading */ 878 call sys_log_ (1, "^a: Automatic reloading is disabled. ^a will not be reloaded.", name, 879 mpx_display_name); 880 881 else if (mpxe.n_bootloads >= 2) & (up_time < cdt.acceptable_fnp_tbf) 882 & (mpxe.last_tbf < cdt.acceptable_fnp_tbf) 883 then call sys_log_ (1, "^a: ^a is in apparent crash loop and will not be reloaded", name, mpx_display_name) 884 ; 885 886 else call load_mpx (mpx_name, "0"b, "1"b, "0"b, code); 887 end; 888 mpxe.last_tbf = up_time; /* Save for next crash */ 889 arg_code = code; 890 return; 891 892 /* System initialization entry. Called once per bootload */ 893 /* Its main function is to start the bootload of all configured level-1 multiplexers */ 894 895 system_init: 896 entry (arg_code); 897 898 call set_entry_name ("system_init"); 899 RE_SYSTEM_INIT: 900 cdtp = static_cdtp; 901 arg_code = 0; 902 BAD_THREADS_LABEL = RE_SYSTEM_INIT; 903 904 cdt.flags.go = "0"b; 905 cdt.mux_mgr_system_init = "1"b; /* we are here, lafayette! */ 906 907 /* First the FNP's */ 908 909 do i = 1 to hbound (cdt.fnp_entry, 1); /* Start bootload on each fnp */ 910 fnpep = addr (cdt.fnp_entry (i)); 911 mpxep = addr (fnpe.mpxe); 912 if mpxe.state = MPX_DOWN & /* If its configured */ 913 mpxe.current_service_type = ACTIVE 914 then do; /* And it is nornally booted */ 915 mpx_name = substr (collate (), rank ("a") + i, 1); 916 call load_mpx (mpx_name, "0"b, "1"b, "0"b, code); 917 /* don't bother as_init_ with load failure */ 918 end; 919 end; 920 921 call thread_start (0 /* ROOT */, firstx, d_limit); 922 i = 0; 923 do x = firstx repeat (cdt.cdt_entry (x).next_sister) while (x ^= 0); 924 cdtep = addr (cdt.cdt_entry (x)); 925 i = i + 1; 926 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= 0 927 then call CDT_THREAD_DAMAGE (i, 0, x); 928 mpxep = addr (cdte.initial_command); 929 if mpxe.current_service_type = ACTIVE & mpxe.state = MPX_DOWN 930 then do; 931 call load_mpx ((cdte.name), "0"b, "1"b, "0"b, code); 932 /* don't bother as_init_ with load failure */ 933 end; 934 end; 935 if i < d_limit 936 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, 0); 937 return; 938 939 940 /* This entry is called by as_init_ once per multics bootload. It signifys that the system is 941* now really starting and we can listen to real channels. If any FNP's have already booted, 942* we listen to them now, otherwise we set a switch so they will be listened to as they boot */ 943 944 system_go: 945 entry; 946 947 call set_entry_name ("system_go"); 948 cdtp = static_cdtp; 949 950 cdt.flags.go = "1"b; 951 do i = 1 to hbound (cdt.fnp_entry, 1); 952 fnpep = addr (cdt.fnp_entry (i)); 953 mpxep = addr (fnpe.mpxe); 954 if mpxe.state = MPX_UP 955 then call listen_mpx (substr (collate (), rank ("a") + i, 1), code); 956 if fnpe.threads.daughter_count ^= 0 957 then call go_on_down (-i); 958 end; 959 call go_on_down (0); /* top level nonfnps */ 960 return; 961 962 go_on_down: 963 procedure (muxx); 964 965 declare muxx fixed bin; 966 declare d_limit fixed bin; 967 declare firstx fixed bin; 968 declare x fixed bin; 969 declare check_count fixed bin; 970 971 call thread_start (muxx, firstx, d_limit); 972 if d_limit = 0 973 then return; 974 975 check_count = 0; 976 do x = firstx repeat (cdt.cdt_entry (x).threads.next_sister) while (x ^= 0); 977 cdtep = addr (cdt.cdt_entry (x)); 978 check_count = check_count + 1; 979 if check_count > d_limit | check_count > cdt.n_cdtes | cdte.mother ^= muxx 980 then call CDT_THREAD_DAMAGE (check_count, muxx, x); 981 982 if cdte.current_service_type = MPX_SERVICE 983 then do; 984 mpxep = addr (cdte.initial_command); 985 if mpxe.state = MPX_UP 986 then call listen_mpx ((cdte.name), code); 987 end; 988 if cdte.daughter ^= 0 989 then call go_on_down ((cdte.daughter)); /* will invalidate cdtep */ 990 end; 991 if check_count < d_limit 992 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, muxx); 993 end go_on_down; 994 995 /* System initialization of all cdte entries */ 996 997 init_cdt: 998 procedure (a_code); 999 dcl a_code fixed bin (35); 1000 dcl nchan fixed bin; 1001 dcl i fixed bin; 1002 1003 a_code = 0; 1004 cdt.mux_mgr_system_init, cdt.flags.go = "0"b; 1005 1006 nchan = 0; 1007 do i = 1 to hbound (cdt.fnp_entry, 1); 1008 fnpep = addr (cdt.fnp_entry (i)); 1009 mpxep = addr (fnpe.mpxe); 1010 fnpe.boot_segp = null (); 1011 fnpe.boot_ev_chan = 0; 1012 if mpxe.state ^= MPX_FREE 1013 then do; /* Is configured */ 1014 call mpxe_init (mpxep); 1015 if fnpe.mpx_type = 0 1016 then fnpe.mpx_type = MCS_MPX; 1017 mpxe.current_mpx_type = fnpe.mpx_type; 1018 mpxe.current_service_type = fnpe.service_type; 1019 nchan = nchan + 1; 1020 end; 1021 end; 1022 1023 on sub_err_ go to SKIP; 1024 do i = 1 to cdt.current_size; 1025 cdtep = addr (cdt.cdt_entry (i)); 1026 if cdte.in_use = CHANNEL_DELETED 1027 then do; 1028 call cdt_mgr_$thread_out_cdt_channel (cdtp, i); 1029 SKIP: 1030 cdte.in_use = NOW_FREE; 1031 end; 1032 if cdte.in_use ^= NOW_FREE 1033 then do; 1034 cdte.current_service_type = cdte.service_type; 1035 cdte.user_name = ""; 1036 cdte.in_use = NOW_HUNG_UP; 1037 if cdte.current_service_type = MPX_SERVICE 1038 then do; 1039 mpxep = addr (cdte.initial_command); 1040 call mpxe_init (mpxep); 1041 mpxe.current_mpx_type = cdte.mpx_type; 1042 mpxe.current_service_type = cdte.mpx_service; 1043 end; 1044 nchan = nchan + 1; 1045 end; 1046 cdte.event = 0; 1047 cdte.twx = 0; 1048 cdte.process = null (); 1049 cdte.dialed_to_procid = "0"b; 1050 cdte.dial_ev_chn = 0; 1051 cdte.recent_wakeup_time = 0; 1052 cdte.recent_wakeup_count = 0; 1053 end; 1054 as_data_$lct_size = nchan + cdt.spare_channel_count; 1055 revert sub_err_; 1056 return; 1057 end init_cdt; 1058 1059 /* Initialize mpxe portion of cdte or fnpe */ 1060 1061 mpxe_init: 1062 proc (p); 1063 1064 dcl p ptr; 1065 1066 p -> mpxe.state = MPX_DOWN; 1067 p -> mpxe.n_bootloads = 0; 1068 p -> mpxe.time_initial_load = 0; 1069 p -> mpxe.time_last_load = 0; 1070 p -> mpxe.time_last_crash = 0; 1071 p -> mpxe.time_load_start = 0; 1072 p -> mpxe.last_tbf = 0; 1073 p -> mpxe.current_mpx_type = 0; 1074 p -> mpxe.flags = "0"b; 1075 1076 return; 1077 1078 end mpxe_init; 1079 1080 /* Procedure to validate a multiplexer name and setup some variables and pointers describing it */ 1081 1082 validate_mpx_name: 1083 procedure (tablex); 1084 1085 dcl tablex fixed bin; /* negative for fnp, as per cdt_mgr_ */ 1086 dcl fnp_sw bit (1) aligned; 1087 dcl msg char (128) var; 1088 1089 if cdtp = null () 1090 then do; /* To early in initialization */ 1091 call sys_log_ (1, "^a: Command used too early in answering service initialization. ^a", name, mpx_name); 1092 code = error_table_$action_not_performed; 1093 return; 1094 end; 1095 1096 if mpx_areap = null () 1097 then mpx_areap = get_system_free_area_ (); 1098 1099 on sub_error_ /* cdt_mgr_ is upset */ 1100 begin; 1101 call find_condition_info_ (null, addr (auto_condition_info), (0)); 1102 sub_error_info_ptr = auto_condition_info.info_ptr; 1103 code = sub_error_info.status_code; 1104 call sys_log_ (1, code, name, "cdt_mgr_$find_cdt_channel: ^a", sub_error_info.info_string); 1105 call CDT_THREAD_DAMAGE$$BRIEF; 1106 end; 1107 1108 call cdt_mgr_$find_cdt_channel (cdtp, mpx_name, tablex, fnp_sw, code); 1109 1110 if code ^= 0 /* noentry is only defined problem */ 1111 then do; 1112 msg = "is not defined in the CDT."; 1113 return; 1114 end; 1115 1116 if fnp_sw 1117 then do; 1118 fnpep = addr (cdt.fnp_entry (-tablex)); 1119 mpxep = addr (fnpe.mpxe); 1120 msg = "is not a configured FNP"; 1121 if fnpe.state = MPX_FREE 1122 then go to bad_mpx_name; 1123 mpx_display_name = "FNP " || rtrim (mpx_name); 1124 /* For error messages */ 1125 mpx_cdtep = fnpep; 1126 if mpxe.current_mpx_type = 0 1127 then mpxe.current_mpx_type = fnpe.mpx_type; 1128 new_mpx_type = fnpe.mpx_type; /* This type never changes */ 1129 end; 1130 else do; /* Multiplexed channel */ 1131 msg = ". Command restricted to top-level multiplexers until AS initialization complete."; 1132 if fnp_only & index (mpx_name, ".") > 0 1133 then go to bad_mpx_name; 1134 1135 cdtep = addr (cdt.cdt_entry (tablex)); 1136 msg = "is not configured as a multiplexer."; 1137 if cdte.current_service_type ^= MPX_SERVICE 1138 then go to bad_mpx_name; 1139 mpx_display_name = "multiplexer " || rtrim (mpx_name); 1140 mpxep = addr (cdte.initial_command); 1141 mpx_cdtep = cdtep; 1142 if mpxe.current_mpx_type = 0 1143 then /* No current type */ 1144 mpxe.current_mpx_type = cdte.mpx_type; 1145 new_mpx_type = cdte.mpx_type; /* This will be type at next load */ 1146 end; 1147 1148 fnpep, cdtep = null (); 1149 code = 0; 1150 return; 1151 bad_mpx_name: 1152 call sys_log_ (1, "^a: Invalid multiplexer name: ""^a"" ^a", name, mpx_name, msg); 1153 code = error_table_$action_not_performed; 1154 end validate_mpx_name; 1155 1156 1157 /* Procedure to compute one entry variable */ 1158 1159 build_entvar: 1160 proc (action); 1161 1162 dcl action char (*); 1163 1164 dcl type_name char (32) var; 1165 dcl (segname, entname) char (32); 1166 1167 entvar = iox_$err_no_operation; /* The error default */ 1168 if mpxe.current_mpx_type < 1 | mpxe.current_mpx_type > hbound (mpx_types, 1) 1169 then return; 1170 type_name = rtrim (mpx_types (mpxe.current_mpx_type)); 1171 segname = "as_" || type_name || "_mpx_"; /* As_XXXXX_mpx_ */ 1172 entname = type_name || "_" || action; /* XXXXX_(load dump) */ 1173 call hcs_$make_entry (null (), segname, entname, entvar, code); 1174 if code = 0 1175 then return; 1176 1177 end build_entvar; 1178 1179 /* Save the name of the entry called */ 1180 /* and other misc setup */ 1181 1182 set_entry_name: 1183 proc (e); 1184 1185 dcl e char (*); 1186 1187 miip = null; 1188 thread_trouble_count = 0; 1189 name = proc_name || "$" || e; 1190 return; 1191 1192 end set_entry_name; 1193 1194 /* Get a list of all sub-channels on a multiplexor */ 1195 /* This is simply all channels that match the starname mpxname.* */ 1196 1197 find_subchannels: 1198 proc (muxx, p); 1199 1200 dcl muxx fixed bin; /* stock cdtx -- fixed bin <0 for fnp, >0 for cdt */ 1201 dcl firstx fixed bin; 1202 dcl d_limit fixed bin; 1203 dcl x fixed bin; 1204 dcl p ptr; 1205 dcl check_count fixed bin; 1206 1207 call thread_start (muxx, firstx, d_limit); 1208 if d_limit = 0 1209 then return; 1210 1211 mii_chan_count = d_limit; 1212 allocate mux_init_info in (mpx_area) set (p); 1213 1214 check_count = 0; 1215 do x = firstx repeat (cdt.cdt_entry (x).next_sister) while (x ^= 0); 1216 check_count = check_count + 1; 1217 if check_count > d_limit | check_count > cdt.n_cdtes 1218 /** **/ 1219 | cdt.cdt_entry (x).threads.mother ^= muxx 1220 then do; 1221 free mux_init_info; 1222 call CDT_THREAD_DAMAGE (check_count, muxx, x); 1223 end; 1224 p -> mux_init_info.name (check_count) = cdt.cdt_entry (x).name; 1225 p -> mux_init_info.devx (check_count) = 0; 1226 end; 1227 if check_count < d_limit 1228 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (check_count, muxx); 1229 1230 end find_subchannels; 1231 1232 /* Count all the users of a multiplexer */ 1233 1234 count_mpx_users: 1235 proc (muxx, n); 1236 1237 dcl muxx fixed bin; 1238 dcl j fixed bin; 1239 dcl n fixed bin; 1240 dcl (firstx, d_limit, check_count) fixed bin; 1241 dcl x fixed bin; 1242 1243 1244 n = 0; 1245 call thread_start (muxx, firstx, d_limit); 1246 if d_limit = 0 1247 then return; 1248 1249 check_count = 0; 1250 do x = firstx repeat (cdt.cdt_entry (x).threads.next_sister) while (x ^= 0); 1251 1252 check_count = check_count + 1; 1253 if check_count > d_limit | check_count > cdt.n_cdtes | cdt.cdt_entry (x).mother ^= muxx 1254 then call CDT_THREAD_DAMAGE (check_count, muxx, x); 1255 if cdt.cdt_entry (x).current_service_type = MPX_SERVICE 1256 then do; /* Count users down the tree */ 1257 call count_mpx_users (x, j); 1258 n = n + j; 1259 end; 1260 else if asu_$channel_in_use (addr (cdt.cdt_entry (x))) 1261 then n = n + 1; 1262 end; 1263 if check_count < d_limit 1264 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (check_count, muxx); 1265 end count_mpx_users; 1266 1267 /* Procedure to get the state of a multiplexers parent */ 1268 1269 check_parent_state: 1270 proc (muxx); 1271 1272 dcl muxx fixed bin; 1273 dcl tp pointer; 1274 1275 if muxx < 0 1276 then tp = addr (cdt.fnp_entry (-muxx).threads); 1277 else tp = addr (cdt.cdt_entry (muxx).threads); 1278 1279 if tp -> channel_threads.mother = 0 /* top level mpx */ 1280 then do; 1281 parent_state = MPX_UP; 1282 code = 0; 1283 return; 1284 end; 1285 1286 if tp -> channel_threads.mother < 0 1287 then call state_mpx (substr (collate (), rank ("a") - tp -> channel_threads.mother, 1), parent_state, code); 1288 else call state_mpx ((cdt.cdt_entry (tp -> channel_threads.mother).name), parent_state, code); 1289 1290 end check_parent_state; 1291 1292 /* Procedure to perform pending channel additions and deletions before a multiplexer is loaded */ 1293 1294 update_cdt: 1295 procedure (muxx); 1296 1297 declare dx fixed bin; 1298 declare x fixed bin; 1299 declare muxx fixed bin; 1300 declare (firstx, d_limit, check_count) fixed bin; 1301 declare local_cdtep pointer; 1302 declare 1 L_CDTE aligned like cdte based (local_cdtep); 1303 declare p pointer; 1304 1305 call thread_start (muxx, firstx, d_limit); 1306 if d_limit = 0 1307 then return; 1308 1309 check_count = 0; 1310 x = firstx; 1311 CONSIDER_EACH: 1312 do while (x ^= 0); /* repeat done by hand */ 1313 local_cdtep = addr (cdt.cdt_entry (x)); 1314 check_count = check_count + 1; 1315 if check_count > d_limit | check_count > cdt.n_cdtes | L_CDTE.mother ^= muxx 1316 then call CDT_THREAD_DAMAGE (check_count, muxx, x); 1317 1318 1319 if L_CDTE.in_use = CHANNEL_DELETED | L_CDTE.in_use = NOW_FREE 1320 /* NOW_FREE really shouldn't happen, but ... */ 1321 then do; 1322 1323 if L_CDTE.daughter_count > 0 1324 then call update_cdt (x); /* get the whole family */ 1325 L_CDTE.in_use = NOW_FREE; 1326 L_CDTE.twx = 0; 1327 L_CDTE.event = 0; 1328 1329 dx = x; /** protect against deletions */ 1330 x = L_CDTE.threads.next_sister; 1331 1332 call cdt_mgr_$thread_out_cdt_channel (cdtp, dx); 1333 1334 end; /* deletion case */ 1335 1336 else 1337 NON_DELETED: 1338 do; 1339 if L_CDTE.in_use = NOT_CONFIGURED 1340 then do; 1341 L_CDTE.in_use = NOW_HUNG_UP; 1342 L_CDTE.current_service_type = L_CDTE.service_type; 1343 L_CDTE.twx = 0; 1344 L_CDTE.event = 0; 1345 L_CDTE.process = null (); 1346 L_CDTE.dialed_to_procid = ""b; 1347 end; 1348 else if L_CDTE.current_service_type = MC_SERVICE 1349 then do; 1350 if L_CDTE.service_type ^= MC_SERVICE 1351 then /* And we are about to take it away */ 1352 call mc_commands_$remove_tty ((L_CDTE.name), ""b, code); 1353 /* Co-operate */ 1354 end; 1355 1356 else if L_CDTE.current_service_type = MPX_SERVICE 1357 then do; 1358 if L_CDTE.service_type ^= MPX_SERVICE 1359 then L_CDTE.initial_command = ""; 1360 end; 1361 1362 L_CDTE.current_service_type = L_CDTE.service_type; 1363 if L_CDTE.current_service_type = MPX_SERVICE 1364 then do; /* Get multiplexers ready */ 1365 p = addr (L_CDTE.initial_command); 1366 call mpxe_init (p); 1367 p -> mpxe.current_mpx_type = L_CDTE.mpx_type; 1368 end; 1369 if L_CDTE.daughter_count > 0 1370 then call update_cdt (x); 1371 x = L_CDTE.threads.next_sister; 1372 end NON_DELETED; 1373 end CONSIDER_EACH; 1374 1375 end update_cdt; 1376 1377 1378 thread_start: 1379 procedure (muxx, firstx, d_limit); 1380 1381 declare firstx fixed bin; /* first cdte to examine */ 1382 declare d_limit fixed bin; /* number of daughters you should find */ 1383 declare muxx fixed bin; 1384 1385 if muxx < 0 1386 then do; 1387 firstx = cdt.fnp_entry (-muxx).threads.daughter; 1388 d_limit = cdt.fnp_entry (-muxx).threads.daughter_count; 1389 end; 1390 else if muxx > 0 1391 then do; 1392 firstx = cdt.cdt_entry (muxx).threads.daughter; 1393 d_limit = cdt.cdt_entry (muxx).threads.daughter_count; 1394 end; 1395 else if muxx = 0 /* not used yet, but not a bad idea */ 1396 then do; 1397 firstx = cdt.threads.daughter; 1398 d_limit = cdt.threads.daughter_count; 1399 end; 1400 1401 if (d_limit = 0) ^= (firstx = 0) 1402 then call CDT_THREAD_DAMAGE$$DAUGHTERS (muxx); 1403 end thread_start; 1404 1405 get_cdt_ptr: 1406 procedure (code); 1407 1408 declare code fixed bin (35); 1409 declare cdt_mgr_$init entry (character (*), pointer, fixed binary (35)); 1410 declare cdt_mgr_$thread entry (pointer, fixed binary (35)); 1411 1412 cdtp, static_cdtp = null; 1413 on sub_error_ 1414 begin; 1415 call find_condition_info_ (null, addr (auto_condition_info), (0)); 1416 sub_error_info_ptr = auto_condition_info.info_ptr; 1417 cdtp = sub_error_info.info_ptr; /* message in a bottle */ 1418 call sys_log_$error_log (0, sub_error_info.status_code, name, "cdt_mgr_$init: ^a", 1419 sub_error_info.info_string); /* for now we rethread and call it a live baby */ 1420 1421 on sub_error_ 1422 begin; 1423 call find_condition_info_ (null, addr (auto_condition_info), (0)); 1424 sub_error_info_ptr = auto_condition_info.info_ptr; 1425 call sys_log_$error_log (1, sub_error_info.status_code, name, "cdt_mgr_$thread: ^a", 1426 sub_error_info.info_string); 1427 if ^sub_error_info.default_restart /* not warning */ 1428 then do; 1429 call sys_log_ (2, "^a: CDT rethreading failed.", name); 1430 code = sub_error_info.status_code; 1431 go to RETURN; 1432 end; 1433 end; 1434 if cdtp = null 1435 then go to GIVE_UP; 1436 call sys_log_ (0, "^a: Rethreading CDT.", name); 1437 call cdt_mgr_$thread (cdtp, (0)); /* code uninteresting with handler */ 1438 call sys_log_ (0, "^a: Rethreading of CDT complete.", name); 1439 static_cdtp = cdtp; 1440 /**** * return to cdt_mgr_$init */ 1441 end; 1442 1443 call cdt_mgr_$init (sc_stat_$sysdir, cdtp, code); 1444 if code ^= 0 1445 then do; 1446 GIVE_UP: 1447 call sys_log_$error_log (1, code, name, "cdt_mgr_$init failed."); 1448 return; 1449 end; 1450 1451 call init_cdt (code); 1452 if code ^= 0 1453 then return; 1454 static_cdtp = cdtp; 1455 RETURN: 1456 return; 1457 1458 1459 end get_cdt_ptr; 1460 1461 1462 CDT_THREAD_DAMAGE: /* Code comes here when something is WRONG */ 1463 procedure (n_daughters, muxx, errorx); 1464 1465 declare n_daughters fixed bin; 1466 declare muxx fixed bin; 1467 declare errorx fixed bin; 1468 1469 declare cdt_mgr_$thread entry (pointer, fixed binary (35)); 1470 declare as_error_table_$repeated_cdt_damage ext static fixed bin (35); 1471 declare as_error_table_$cdt_rethreading_error ext static fixed bin (35); 1472 1473 1474 if muxx > 0 1475 then call error_many (cdt.cdt_entry (muxx).name, muxx, cdt.cdt_entry (errorx).name, errorx, 1476 cdt.cdt_entry (muxx).daughter_count); 1477 else if muxx = 0 1478 then call error_many ("Top level muxes", 0, cdt.cdt_entry (errorx).name, errorx, cdt.threads.daughter_count); 1479 else call error_many ("FNP " || substr (collate (), rank ("a") - muxx, 1), muxx, cdt.cdt_entry (errorx).name, 1480 errorx, cdt.fnp_entry (-muxx).daughter_count); 1481 go to E_COMMON; 1482 1483 CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS: 1484 entry (n_daughters, muxx); 1485 1486 if muxx > 0 1487 then call error_few (cdt.cdt_entry (muxx).name, muxx, cdt.cdt_entry (muxx).daughter_count); 1488 else if muxx = 0 1489 then call error_few ("Top level muxes", 0, cdt.threads.daughter_count); 1490 else call error_few ("FNP " || substr (collate (), rank ("a") - muxx, 1), muxx, 1491 cdt.fnp_entry (-muxx).daughter_count); 1492 go to E_COMMON; 1493 1494 CDT_THREAD_DAMAGE$$DAUGHTERS: 1495 entry (muxx); 1496 1497 if muxx > 0 1498 then call error_none (cdt.cdt_entry (muxx).name, muxx, cdt.cdt_entry (muxx).daughter_count, 1499 cdt.cdt_entry (muxx).daughter); 1500 else if muxx = 0 1501 then call error_none ("Top level muxes", 0, cdt.threads.daughter_count, cdt.threads.daughter); 1502 else call error_none (substr (collate (), rank ("a") - muxx, 1), muxx, cdt.fnp_entry (-muxx).daughter_count, 1503 cdt.fnp_entry (-muxx).daughter); 1504 1505 CDT_THREAD_DAMAGE$$BRIEF: 1506 entry; 1507 1508 E_COMMON: 1509 if thread_trouble_count > 0 /* once is all you get */ 1510 then do; 1511 call sys_log_ (1, "^a: Repeated damage to CDT threads encountered.", name); 1512 arg_code = as_error_table_$repeated_cdt_damage; 1513 go to RETURN; 1514 end; 1515 call sys_log_ (1, "^a: Threading inconsistency detected in CDT. Rethreading.", name); 1516 thread_trouble_count = 1; 1517 on sub_error_ 1518 begin; 1519 call find_condition_info_ (null, addr (auto_condition_info), (0)); 1520 sub_error_info_ptr = auto_condition_info.info_ptr; 1521 call sys_log_$error_log (1, sub_error_info.status_code, name, "cdt_mgr_$thread: ^a", 1522 sub_error_info.info_string); 1523 if ^sub_error_info.default_restart /* not just warning */ 1524 then do; 1525 call sys_log_ (1, "^a: Error while rethreading CDT.", name); 1526 call sys_log_$error_log (3, sub_error_info.status_code, name, "cdt_mgr_$thread: ^a.", 1527 sub_error_info.info_string); 1528 arg_code = as_error_table_$cdt_rethreading_error; 1529 go to RETURN; 1530 end; 1531 end; 1532 1533 call cdt_mgr_$thread (cdtp, (0)); /* code uninteresting */ 1534 1535 /**** IF WE GOT HERE, IT SUCCEEDED ****/ 1536 1537 call sys_log_ (1, "^a: Rethreading complete.", name); 1538 if miip ^= null 1539 then free mux_init_info; 1540 go to BAD_THREADS_LABEL; 1541 1542 error_many: 1543 procedure (pname, px, ename, ex, dc); 1544 declare (pname, ename) character (32) aligned; 1545 declare dc fixed bin unaligned; 1546 declare (px, ex) fixed bin; 1547 1548 call sys_log_ (1, "^a: ^d daughters found for mux ^a(^d) at ^a(^d), but daughter count is ^d", name, 1549 n_daughters, pname, px, ename, ex, dc); 1550 return; 1551 1552 error_few: 1553 entry (pname, px, dc); 1554 1555 call sys_log_ (1, "^a: ^d daughters found for mux ^a(^d), but daughter count is ^d.", name, n_daughters, 1556 pname, px, dc); 1557 return; 1558 1559 error_none: 1560 entry (pname, px, dc, d); 1561 declare d fixed bin unaligned; 1562 1563 call sys_log_ (1, "^a: ^a(^d) has daughter count ^d, but first daughter ^d", name, pname, px, dc, d); 1564 return; 1565 end error_many; 1566 1567 end CDT_THREAD_DAMAGE; 1568 1569 1570 ERROR_EARLY_CALL: 1571 begin; 1572 call sys_log_ (1, "^a: multiplexers may not be manipulated before AS initialization.", name); 1573 arg_code = error_table_$action_not_performed; 1574 return; 1575 end; 1576 RETURN: 1577 return; 1578 1579 1580 init: 1581 entry (arg_cdtp, arg_code); 1582 if ^sc_stat_$Multics_typed | sc_stat_$Go_typed 1583 then call sub_err_ (error_table_$out_of_sequence, "multiplexer_mgr_$init", "s"); 1584 call set_entry_name ("init"); 1585 if static_cdtp ^= null /* already done some initialization? */ 1586 then do; 1587 cdtp = static_cdtp; 1588 if cdt.mux_mgr_system_init /* really got going? */ 1589 then do; 1590 call sys_log_ (1, "^a: Shutting down initialized multiplexers prior to re-initialization.", name); 1591 call shut; /* try to stop things */ 1592 end; 1593 end; /* NOTE: shut will set static_cdtp = null */ 1594 if static_cdtp = null /* see if never initialized or just shut */ 1595 then do; 1596 call get_cdt_ptr (arg_code); 1597 if arg_code ^= 0 1598 then return; 1599 smlep = stop_mpx_list_ptr_; /* if this is a retry, then we must */ 1600 fnp_only = "1"b; /* re-stop any muxes that were early stopped */ 1601 /* list will be null if not retry */ 1602 do while (smlep ^= null); /* for each early-stopped mux */ 1603 mpx_name = stop_mpx_list_entry.mpx_name; 1604 BAD_THREADS_LABEL = INIT_RE_STOP_MPX; /* where to go if error & good salvage */ 1605 INIT_RE_STOP_MPX: /* not a million miles away */ 1606 call validate_mpx_name (muxx); /* is it still there? */ 1607 if code ^= 0 /* qu'elle chomage */ 1608 then call sys_log_$error_log (1, code, name, "Unable to perform requested stop_mpx of ^a.", mpx_name); 1609 else do; /* ahhhhh */ 1610 mpxe.current_service_type = INACTIVE; 1611 mpxe.flags.go = "0"b; 1612 end; 1613 smlep = stop_mpx_list_entry.next; 1614 end; 1615 end; 1616 1617 if ^as_data_$lct_initialized 1618 then do; 1619 call hphcs_$lct_init (as_data_$lct_size, arg_code); 1620 /* Perform ring0 initialization */ 1621 if arg_code ^= 0 1622 then call sys_log_$error_log (1, arg_code, "multiplexer_mgr_$init", "From hphcs_$lct_init"); 1623 else as_data_$lct_initialized = "1"b; 1624 end; 1625 arg_cdtp = static_cdtp; 1626 arg_code = 0; 1627 return; 1628 1629 shut: 1630 entry; 1631 declare cdt_mgr_$shut entry (pointer); 1632 if static_cdtp = null 1633 then return; 1634 1635 cdtp = static_cdtp; 1636 1637 call set_entry_name ("shut"); 1638 BAD_THREADS_LABEL = RE_SHUT; /* see below */ 1639 1640 if loud 1641 then call sys_log_ (1, "^a: Shutting down all multiplexers.", name); 1642 1643 /* First the FNP's */ 1644 1645 do i = 1 to hbound (cdt.fnp_entry, 1); /* Start bootload on each fnp */ 1646 fnpep = addr (cdt.fnp_entry (i)); 1647 mpxep = addr (fnpe.mpxe); 1648 if mpxe.state = MPX_UP | mpxe.state = MPX_BOOT 1649 then do; /* And it is nornally booted */ 1650 mpx_name = substr (collate (), rank ("a") + i, 1); 1651 call shutdown_mpx (mpx_name, "0"b /* no dump */, code); 1652 if code ^= 0 1653 then if loud 1654 then call sys_log_$error_log (1, code, name, "Could not shutdown FNP ^a.", mpx_name); 1655 end; 1656 end; 1657 1658 call thread_start (0 /* ROOT */, firstx, d_limit); 1659 i = 0; 1660 do x = firstx repeat (cdt.cdt_entry (x).next_sister) while (x ^= 0); 1661 cdtep = addr (cdt.cdt_entry (x)); 1662 i = i + 1; 1663 if i > d_limit | i > cdt.n_cdtes | cdte.mother ^= 0 1664 then call CDT_THREAD_DAMAGE (i, 0, x); 1665 mpxep = addr (cdte.initial_command); 1666 if mpxe.current_service_type = ACTIVE & mpxe.state = MPX_DOWN 1667 then do; 1668 call shutdown_mpx ((cdte.name), "0"b, code); 1669 if code ^= 0 1670 then if loud 1671 then call sys_log_$error_log (1, code, name, "Could not shutdown ^a.", cdte.name); 1672 end; 1673 end; 1674 if i < d_limit 1675 then call CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS (i, 0); 1676 1677 1678 GIVE_UP_SHUT: 1679 cdt.mux_mgr_system_init = "0"b; 1680 1681 1682 call cdt_mgr_$shut (static_cdtp); 1683 static_cdtp = null; 1684 return; 1685 1686 RE_SHUT: 1687 BAD_THREADS_LABEL = GIVE_UP_SHUT; /* only one try */ 1688 thread_trouble_count = 0; /* but go to give up rather than returning */ 1689 1690 1691 /* Entry to count users for reconfiguration */ 1692 1693 count_mpx_users: 1694 entry (arg_mpx_name, arg_cdtp, arg_count, arg_code); 1695 1696 call set_entry_name ("count_mpx_users"); 1697 1698 mpx_name = arg_mpx_name; 1699 arg_count = 0; 1700 if arg_cdtp ^= null () 1701 then cdtp = arg_cdtp; 1702 else cdtp = static_cdtp; 1703 if cdtp = null | ^cdt.mux_mgr_system_init 1704 then do; 1705 code = error_table_$null_info_ptr; 1706 return; 1707 end; 1708 BAD_THREADS_LABEL = ABORT_COUNT; 1709 1710 call validate_mpx_name (muxx); /* grab this mux */ 1711 if code ^= 0 1712 then do; 1713 arg_code = code; 1714 return; 1715 end; 1716 1717 call count_mpx_users (muxx, arg_count); 1718 return; 1719 1720 ABORT_COUNT: 1721 arg_code = error_table_$action_not_performed; 1722 return; 1723 1724 1725 1726 set_loud: 1727 entry; 1728 1729 loud = "1"b; 1730 return; 1731 1732 set_quiet: 1733 entry; 1734 1735 loud = "0"b; 1736 return; 1737 1 1 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 1 2 1 3 /* format: style4 */ 1 4 1 5 /* This file must be kept in sync with as_data_.alm */ 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 1 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 1 10* Remove references to the 963 and 029 preaccess commands and remove support 1 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 1 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 1 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 1 14* Add references to as_data_ entrypoints added for Login Server. 1 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 1 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 1 17* Added new user signal field of inacrcvd (14) to handle inactivity response 1 18* from user. 1 19* END HISTORY COMMENTS */ 1 20 1 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 1 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 1 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 1 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 1 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 1 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 1 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 1 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 1 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 1 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 1 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 1 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 1 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 1 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 1 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 1 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 1 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 1 38 dcl as_data_$g115_dim char (32) ext static; 1 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 1 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 1 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 1 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 1 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 1 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 1 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 1 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 1 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 1 48 dcl as_data_$request_priority fixed bin ext static; 1 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 1 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 1 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 1 52 dcl as_data_$satp ptr ext static; /* SAT */ 1 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 1 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 1 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 1 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 1 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 1 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 1 59 dcl as_data_$version char (8) ext static; /* AS version */ 1 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 1 61 1 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 1 63 2 n_login_args fixed bin, 1 64 2 pad fixed bin, 1 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 1 66 1 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 1 68 2 n_signals fixed bin, 1 69 2 pad fixed bin, 1 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 1 71 1 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 1 73 2 n_system_signals fixed bin, 1 74 2 pad fixed bin, 1 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 1 76 1 77 dcl as_data_$login_words fixed bin ext static aligned, 1 78 /* interactive login words */ 1 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 1 80 2 n_words fixed bin, 1 81 2 pad fixed bin, 1 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 1 83 1 84 dcl as_data_$debug_flag bit (1) aligned external static; 1 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 1 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 1 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 1 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 1 89 1 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 1738 1739 2 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 2 2 2 3 /* This include file declares the "author" substructure 2 4* in a form suitable for using the PL/I "like" attribute. 2 5* 2 6* Written 750304 by PG 2 7**/ 2 8 2 9 dcl 1 author_dcl aligned based, 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 10 2 11 2 pad; 2 12 2 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 1740 1741 4 1 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 4 2 4 3 /* format: style3,idind25,indcomtxt */ 4 4 4 5 /* Channel Definition Table. 4 6* This table lists all of the hardware channels (ports) connected 4 7* to the system, and maintains the attributes of each one. 4 8* 4 9* PG 741230 4 10* Modified by Mike Grady 5/6/76 to add FNP info. 4 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 4 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 4 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 4 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 4 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 4 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 4 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 4 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 4 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 4 20* Modified August 1982 by E. N. Kittlitz for check_acs. 4 21* Modified January 1983 by Keith Loepere for generic_destination. 4 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 4 23* Modified 831216 by E. N. Kittlitz for required_access_class. 4 24* Modified 84-04-01 by BIM to finish communications AIM: 4 25* access class ranges, 4 26* access_control flags. 4 27**/ 4 28 4 29 4 30 /****^ HISTORY COMMENTS: 4 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 4 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 4 33* Add support for answering service to use IOCBs when tty_ cannot be 4 34* used to service login channels. 4 35* END HISTORY COMMENTS */ 4 36 4 37 4 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 4 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 4 40 4 41 dcl (cdtp, cdtep, fnpep, mpxep) 4 42 ptr; 4 43 4 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 4 45 2 author like author_dcl.author, /* standard header */ 4 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 4 47 2 current_size fixed bin, /* number of last cdte. */ 4 48 2 version fixed bin, 4 49 2 freep fixed bin, /* chain of free cdte's */ 4 50 2 n_cdtes fixed bin, /* number of used cdte's */ 4 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 4 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 4 53 2 cpu_in_dialup fixed bin (71), /* .. */ 4 54 2 pf_in_dialup fixed bin, /* .. */ 4 55 2 pp_in_dialup fixed bin, /* .. */ 4 56 2 entries_to_dialup fixed bin, /* .. */ 4 57 2 flags, 4 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 4 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 4 60 3 mux_mgr_system_init 4 61 bit (1) unal, /* mux mgr has loaded top-levels */ 4 62 3 pad1 bit (33) unal, 4 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 4 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 4 65 2 threads aligned like channel_threads, 4 66 /* root of non-fnp-top-level-multiplexers */ 4 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 4 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 4 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 4 70 4 71 4 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 4 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 4 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 4 75 2 pad1 bit (36) aligned, 4 76 2 name char (32), /* ASCII name of channel */ 4 77 2 access_class (2) bit (72) aligned, /* access class range */ 4 78 2 comment char (48), /* printable message about channel */ 4 79 2 charge_type fixed bin (17) unal, /* billing group */ 4 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 4 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 4 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 4 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 4 84 2 pad2 bit (18) unaligned, 4 85 2 answerback char (8), /* answerback string expected */ 4 86 2 initial_terminal_type 4 87 char (32) unal, /* as specified in the CMF */ 4 88 2 mpx_data unal, /* data used only for multiplexed channels */ 4 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 4 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 4 91 2 flags, 4 92 ( 3 attributes, 4 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 4 94 4 audit_access_error 4 95 bit (1), /* ON means ck that person auth is inside access class range */ 4 96 /* this implies that the access_class describes a range of 4 97* legitimate user auths. */ 4 98 4 hardwired bit (1), /* ON means it is */ 4 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 4 100 4 dont_read_answerback 4 101 bit (1), /* ON means don't try to read answerback */ 4 102 4 pada bit (4), 4 103 3 access_control unaligned, /* As below */ 4 104 4 dial_out bit (1), /* dialing user must be on ACS */ 4 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 4 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 4 107 4 login bit (1), /* logging in user must be on acs */ 4 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 4 109 4 pado bit (3), 4 110 3 options, 4 111 4 execute_initial_command 4 112 bit (1), /* ON means to do it */ 4 113 4 attached_by_operator 4 114 bit (1), /* ON means temporary attachment. */ 4 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 4 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 4 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 4 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 4 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 4 120 4 generic_destination_present 4 121 bit (1), /* ON means that the initial_command field contains 4 122* a generic destination to match on dial_out or priv attach */ 4 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 4 124 4 pado bit (9) 4 125 ) unaligned, 4 126 2 initial_command char (64), /* pseudo first input line */ 4 127 /**** The following variables represent dynamic control info, and 4 128* are used mostly by dialup_ and asu_ */ 4 129 2 event fixed bin (71), /* event call channel for channel events */ 4 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 4 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 4 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 4 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 4 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 4 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 4 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 4 137 /* 0 = dialup_, 1 = mc_tty_ */ 4 138 3 save_arg bit (1) unal, /* -save login arg given */ 4 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 4 140 3 detach_after_hangup 4 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 4 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 4 143 3 hold_arg bit (1) unal, /* -hold arg given */ 4 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 4 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 4 146 3 current_access_class_valid 4 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 4 148 3 pad bit (7) unal, 4 149 2 twx fixed bin, /* channel device index */ 4 150 2 state fixed bin, /* channel state */ 4 151 2 tty_id_code char (4), /* channel id (answerback) */ 4 152 2 current_terminal_type 4 153 char (32) unal, /* most recently-set terminal type */ 4 154 2 process ptr unal, /* ptr to ATE owning this channel */ 4 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 4 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 4 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 4 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 4 159* We do not yet define multi-class connections, but we will someday. */ 4 160 2 disconnected_ate_index 4 161 fixed bin (17) unal, /* index of ate of disconnected process */ 4 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 4 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 4 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 4 165 2 pad3 bit (14) unaligned, 4 166 /**** The following variables are kept for metering purposes. */ 4 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 4 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 4 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 4 170 2 dialup_time fixed bin (71), /* time of present dialup */ 4 171 2 disconnected_proc_command 4 172 fixed bin (12) unsigned unal, 4 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 4 174 2 disconnected_proc_number 4 175 fixed bin (12) unsigned unal, 4 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 4 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 4 178 /* number of disconnected processes that user has */ 4 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 4 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 4 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 4 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 4 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 4 184 /**** had the space. */ 4 185 2 threads aligned like channel_threads, 4 186 /**** The use name is that of the user who gave the dial or slave ****/ 4 187 /**** preaccess request. ****/ 4 188 2 user_name unaligned, 4 189 3 person char (20) unaligned, 4 190 3 project char (9) unaligned, 4 191 3 pad char (3) unaligned, /* no tag */ 4 192 2 iocbp ptr unaligned; /* 104 words */ 4 193 4 194 4 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 4 196* overlays initial_command field for slave and autocall lines */ 4 197 4 198 4 199 4 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 4 201 /* These variables are filled in from the CMF */ 4 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 4 203 2 memory fixed bin, /* amount of memory on this FNP */ 4 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 4 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 4 206 2 service_type fixed bin, /* service type */ 4 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 4 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 4 209 /**** The following are used during system operation to remember the state of the FNP */ 4 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 4 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 4 212 2 mpxe like mpxe, /* standard multiplexer data */ 4 213 2 threads aligned like channel_threads, 4 214 /* same mpx threads as channel */ 4 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 4 216 4 217 /* This structure describes the data necessary to control a multiplexer. 4 218* For FNP's., a copy appears in the fnpe. For communications lines, it 4 219* overlays the initial_command field in the cdte. */ 4 220 4 221 dcl 1 mpxe based (mpxep) aligned, 4 222 2 state fixed bin, /* current state, up, down, loading */ 4 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 4 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 4 225 2 n_bootloads fixed bin, /* count of load attempts */ 4 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 4 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 4 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 4 229 2 time_load_start fixed bin (71), /* time current load started */ 4 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 4 231 2 flags unal, 4 232 3 go bit (1), /* start MPX after it loads */ 4 233 3 listening bit (1), /* listen has been done on subchannels */ 4 234 3 check bit (1), /* loaded with check option */ 4 235 3 retry_load bit (1), /* reload if load fails */ 4 236 3 pad1 bit (32), 4 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 4 238 4 239 /* These threads define the tree of multiplexers in the cdt. */ 4 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 4 241 /* by alpha sort order of the channel name. Daughter points to the */ 4 242 /* first child of this node, if any. Daughter count is the number */ 4 243 /* of children, as a consistency check. Mother is a back pointer to */ 4 244 /* the parent, present in all the children, not just the first. */ 4 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 4 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 4 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 4 248 4 249 dcl 1 channel_threads aligned based, 4 250 2 next_sister fixed bin unaligned, 4 251 2 prev_sister fixed bin unaligned, 4 252 2 daughter fixed bin unaligned, 4 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 4 254 2 pad bit (18) unaligned, 4 255 2 daughter_count fixed bin unaligned; 4 256 4 257 /* Values for cdte.service_type field */ 4 258 4 259 dcl ( 4 260 ANS_SERVICE init (1), /* login or dial */ 4 261 FTP_SERVICE init (2), /* file transfer service */ 4 262 MC_SERVICE init (3), /* message coordinator */ 4 263 SLAVE_SERVICE init (4), /* special channel */ 4 264 DIAL_SERVICE init (5), /* transient state */ 4 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 4 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 4 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 4 268 ) fixed bin internal static options (constant); 4 269 4 270 /* Values for service type in both cdte and fnpe */ 4 271 4 272 dcl ( 4 273 INACTIVE init (7), /* not to be used, even though configured */ 4 274 ACTIVE init (1) 4 275 ) /* for FNP only, configured and to be used */ 4 276 fixed bin internal static options (constant); 4 277 4 278 /* Value for both cdte.in_use and fnpe.state */ 4 279 4 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 4 281 /* was not configured at Multics bootload time */ 4 282 4 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 4 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 4 285 4 286 /* Value for cdte.in_use */ 4 287 4 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 4 289 /* channel deleted by CDT installation */ 4 290 4 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 4 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 4 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 4 294 4 295 4 296 /* Values for mpxe.state field */ 4 297 4 298 dcl ( 4 299 FNP_FREE init (0), /* this fnpe is not used */ 4 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 4 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 4 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 4 303 FNP_UP init (4) /* FNP is up and running fine */ 4 304 ) fixed bin internal static options (constant); 4 305 4 306 dcl ( 4 307 MPX_FREE init (0), /* this mpxe is not used */ 4 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 4 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 4 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 4 311 MPX_UP init (4) /* MPX is up and running fine */ 4 312 ) fixed bin internal static options (constant); 4 313 5 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 5 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 5 8* Add data needed for the uncp multiplexer (DSA gateway) interface 5 9* implementation. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* Values for fnpe.type field */ 5 14 /* 5 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 5 16* Added in March 1982 - DN7100.fd. 5 17**/ 5 18 5 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 5 20 DN6600 init (2), /* a DataNet 6600 FNP */ 5 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 5 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 5 23 ) fixed bin internal static options (constant); 5 24 5 25 dcl fnp_types (4) char (8) int static options (constant) 5 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 5 27 5 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 5 29 init (355, 6600, 6670, 7100); 5 30 5 31 dcl supported_fnp (4) bit (1) int static options (constant) 5 32 init ("0"b, "0"b, "1"b, "1"b); 5 33 5 34 5 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 4 314 4 315 4 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 1742 1743 6 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 6 2 6 3 /* Structure for find_condition_info_. 6 4* 6 5* Written 1-Mar-79 by M. N. Davidoff. 6 6**/ 6 7 6 8 /* automatic */ 6 9 6 10 declare condition_info_ptr pointer; 6 11 6 12 /* based */ 6 13 6 14 declare 1 condition_info aligned based (condition_info_ptr), 6 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 condition_name char (32) varying, /* name of condition */ 6 18 2 info_ptr pointer, /* pointer to the condition data structure */ 6 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 6 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 6 21 2 flags unaligned, 6 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 6 23 3 pad1 bit (35), 6 24 2 pad2 bit (36), 6 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 6 26 2 pad3 (4) bit (36); 6 27 6 28 /* internal static */ 6 29 6 30 declare condition_info_version_1 6 31 fixed binary internal static options (constant) initial (1); 6 32 6 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1744 1745 7 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 7 2 /* format: style2 */ 7 3 7 4 declare condition_info_header_ptr 7 5 pointer; 7 6 declare 1 condition_info_header 7 7 aligned based (condition_info_header_ptr), 7 8 2 length fixed bin, /* length in words of this structure */ 7 9 2 version fixed bin, /* version number of this structure */ 7 10 2 action_flags aligned, /* tell handler how to proceed */ 7 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 7 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 7 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 7 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 7 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 7 16 3 pad bit (32) unaligned, 7 17 2 info_string char (256) varying, /* may contain printable message */ 7 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 7 19 7 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 1746 1747 8 1 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 8 2 8 3 /* format: style4 */ 8 4 8 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 8 6 8 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 8 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 8 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 8 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 8 11* WAIT_DISCARD_WAKEUP 8 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 8 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 8 14**/ 8 15 8 16 /****^ HISTORY COMMENTS: 8 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 8 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 8 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 8 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 22* Add named constants for instance tags. 8 23* END HISTORY COMMENTS */ 8 24 8 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 8 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 8 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 8 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 8 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 8 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 8 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 8 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 8 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 8 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 8 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 8 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 8 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 8 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 8 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 8 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 8 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 8 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 8 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 8 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 8 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 8 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 8 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 8 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 8 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 8 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 8 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 8 52 ) fixed bin internal static options (constant); 8 53 8 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 8 55 /* names of ute.destroy_flag values */ 8 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 8 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 8 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 8 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 8 60 "wait remove"); /* -13 */ 8 61 8 62 /* Values for "cdte.state", typewriter state. */ 8 63 8 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 8 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 8 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 8 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 8 68 ) fixed bin internal static options (constant); 8 69 8 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 8 71 /* names of cdte.state values */ 8 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 8 73 8 74 /* Values for "cdte.in_use" and "ate.active" */ 8 75 8 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 8 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 8 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 8 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 8 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 8 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 8 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 8 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 8 84 ) fixed bin internal static options (constant); 8 85 8 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 8 87 /* names of ute.active values */ 8 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 8 89 8 90 8 91 /**** Values for ute.tag */ 8 92 8 93 dcl (TAG_INTERACTIVE init("a"), 8 94 TAG_UFT init("f"), 8 95 TAG_ABSENTEE init("m"), 8 96 TAG_PROXY init("p"), 8 97 TAG_DAEMON init("z") 8 98 ) char(1) int static options(constant); 8 99 8 100 8 101 /**** Following are constants used to indicate to the process termination 8 102* handler the reason for the process termination. They are used by 8 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 8 104* uc_ls_destroy_request_. */ 8 105 8 106 dcl ( 8 107 PT_FPE initial (1), 8 108 PT_LOGOUT initial (4), 8 109 PT_NEW_PROC_AUTH initial (13), 8 110 PT_HANGUP initial (20), 8 111 PT_SHUTDOWN initial (21), 8 112 PT_BUMP initial (22), 8 113 PT_ALARM initial (23), 8 114 PT_DETACH initial (24), 8 115 PT_UNBUMP initial (25), 8 116 PT_OPERATOR_TERMINATE initial (27), 8 117 PT_DESTROY_REQUEST initial (30), 8 118 PT_NEW_PROC_REQUEST initial (31) 8 119 ) fixed bin (17) internal static options (constant); 8 120 8 121 /**** Values for ute.preempted: 8 122* -1 user unbumped after term signal sent 8 123* 0 user unbumped; ignore alarm___ 8 124* 1 value internally used in load_ctl_ 8 125* 2 user bumped; when alarm___ comes in, send term signal 8 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 8 127* signals come in 8 128* 4 user bumped; process sick, so destroy without sending term signal 8 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 8 130* termsgnl). */ 8 131 8 132 dcl ( 8 133 PREEMPT_UNBUMP initial (-1), 8 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 8 135 PREEMPT_LOAD_CTL initial (1), 8 136 PREEMPT_BUMPED initial (2), 8 137 PREEMPT_TERM_SENT initial (3), 8 138 PREEMPT_BUMPED_NO_TERM initial (4), 8 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 8 140 ) fixed bin (17) internal static options(constant); 8 141 8 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 8 143 "unbumped", 8 144 "not bumped, ignore alarm___", 8 145 "load_ctl_", 8 146 "bumped", 8 147 "bumped, trm_ sent", 8 148 "bumped without trm_", 8 149 "bumped, termsgnl received"); 8 150 8 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 1748 1749 9 1 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 9 2 9 3 /* T. Casey, May 1978 */ 9 4 9 5 dcl event_call_info_ptr ptr; 9 6 9 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 9 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 9 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 9 10 2 sender bit (36), /* process id of sender */ 9 11 2 origin, 9 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 9 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 9 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 9 15 9 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 1750 1751 10 1 /* Begin include file ..... multiplexer_types.incl.pl1 */ 10 2 10 3 10 4 10 5 /****^ HISTORY COMMENTS: 10 6* 1) change(89-03-20,Parisek), approve(89-06-01,MCR8110), 10 7* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 10 8* Add support of protocol mpx. 10 9* END HISTORY COMMENTS */ 10 10 10 11 10 12 /* This include file defines known multiplexer types */ 10 13 /* Prepared August 1978 by Larry Johnson */ 10 14 /* Changed April 1979 to rename the fnp multiplexer mcs */ 10 15 10 16 dcl (TTY_MPX init (0), /* nonmultiplexed channel */ 10 17 MCS_MPX init (1), /* FNP running MCS */ 10 18 USER1_MPX init (2), /* a range of values for user defined multiplexers */ 10 19 USER2_MPX init (3), 10 20 USER3_MPX init (4), 10 21 USER4_MPX init (5), 10 22 USER5_MPX init (6), 10 23 IBM3270_MPX init (7), /* IBM 3270 display terminal controller */ 10 24 VIP7760_MPX init (8), /* Honeywell VIP 7760 terminal controller */ 10 25 STY_MPX init (9), /* Software Terminal Facility */ 10 26 LAP_MPX init (10), /* Link Access Protocol (X.25 level 2) */ 10 27 X25_MPX init (11), /* CCITT X.25 level 3 */ 10 28 HASP_MPX init (12), /* HASP RJE protocol */ 10 29 UNCP_MPX init (13), /* DSA protocol */ 10 30 SYSTEM2_MPX init (14), 10 31 SYSTEM1_MPX init (15), 10 32 PROTOCOL_MPX init (16)) /* TCP/IP network X.25 protocol */ 10 33 int static options (constant); 10 34 10 35 dcl mpx_types (0:16) char (32) int static options (constant) init ( 10 36 "tty", "mcs", "user1", "user2", "user3", "user4", "user5", "ibm3270", 10 37 "vip7760", "sty", "lap", "x25", "hasp", "uncp", "system2", "system1", 10 38 "protocol"); 10 39 10 40 dcl mpx_special_lock (0:16) bit (1) int static options (constant) init ( 10 41 "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, 10 42 "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b, "0"b); 10 43 10 44 /* End include file ..... multiplexer_types.incl.pl1 */ 1752 1753 11 1 /* BEGIN INCLUDE FILE ... mux_init_info.incl.pl1 */ 11 2 11 3 /* Created 8/2/78 by J. Stern */ 11 4 11 5 11 6 dcl miip ptr; /* ptr to mux_init_info structure */ 11 7 dcl mii_chan_count fixed bin; /* channel count when allocating mux_init_info */ 11 8 11 9 11 10 dcl 1 mux_init_info aligned based (miip), /* multiplexer initialization info */ 11 11 2 no_channels fixed bin, /* number of multiplexed channels */ 11 12 2 channels (mii_chan_count refer (mux_init_info.no_channels)), /* one entry per channel */ 11 13 3 name char (32) unal, /* channel name */ 11 14 3 devx fixed bin; /* device index for channel */ 11 15 11 16 11 17 /* END INCLUDE FILE ... mux_init_info.incl.pl1 */ 1754 1755 12 1 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 12 2 12 3 /****^ HISTORY COMMENTS: 12 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 12 5* install(86-10-09,MR12.0-1181): 12 6* This include file was formerly tty_event_message.incl.pl1. It has been 12 7* updated with different fields and new constants, and renamed to 12 8* net_event_message.incl.pl1 12 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 12 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 12 11* Add NETWORK_TYPE_VALUES array. 12 12* END HISTORY COMMENTS */ 12 13 12 14 /* describes event message passed with wakeups from the tty DIM */ 12 15 /* Created 5/24/76 by Robert S. Coren */ 12 16 12 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 12 18 12 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 12 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 12 21 12 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 12 23 2 version bit (2) unaligned, /* Currently version 1 */ 12 24 2 reason bit (16) unaligned, /* Additional info about the event */ 12 25 2 pad bit (6) unaligned, /* Must be zero */ 12 26 2 network_type fixed bin (4) unsigned unaligned, 12 27 /* See below for constants */ 12 28 2 type fixed bin (8) unsigned unaligned, 12 29 /* Type of interrupt, see below */ 12 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 12 31 12 32 /* Network type constants */ 12 33 12 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 12 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 12 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 12 37 12 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 12 39 "MCS", 12 40 "DSA", 12 41 "MOWSE"); 12 42 12 43 12 44 /* MCS event message type constants */ 12 45 12 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 12 47 12 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 12 49 /* used for "start" order, etc. */ 12 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 12 51 /* dialup */ 12 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 12 53 /* hangup */ 12 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 12 55 /* dialout status returned */ 12 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 12 57 /* quit */ 12 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 12 59 /* input arrived */ 12 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 12 61 /* output completed */ 12 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 12 63 /* control tables sent status */ 12 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 12 65 /* channel masked by FNP */ 12 66 12 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 12 68 /* 0 */ 12 69 "dialup", /* 1 */ 12 70 "hangup", /* 2 */ 12 71 "dialout status", /* 3 */ 12 72 "quit", /* 4 */ 12 73 "read", /* 5 */ 12 74 "write", /* 6 */ 12 75 "line status", /* 7 */ 12 76 "masked"); /* 8 */ 12 77 12 78 /* DSA event message type constants */ 12 79 12 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 12 81 12 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 12 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 12 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 12 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 12 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 12 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 12 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 12 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 12 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 12 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 12 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 12 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 12 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 12 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 12 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 12 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 12 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 12 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 12 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 12 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 12 102 12 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 12 104 /* 0 */ 12 105 "attention", /* 1 */ 12 106 "data_attention", /* 2 */ 12 107 "demand_release_sru", /* 3 */ 12 108 "demand_turn", /* 4 */ 12 109 "demand_turn_ack", /* 5 */ 12 110 "purge", /* 6 */ 12 111 "recover", /* 7 */ 12 112 "recover_ack", /* 8 */ 12 113 "release_sru", /* 9 */ 12 114 "resume", /* 10 */ 12 115 "resume_ack", /* 11 */ 12 116 "suspend", /* 12 */ 12 117 "suspend_ack", /* 13 */ 12 118 "terminate_abnormal", /* 14 */ 12 119 "establishment", /* 15 */ 12 120 "terminated", /* 16 */ 12 121 "user_unassign", /* 17 */ 12 122 "data input", /* 18 */ 12 123 "data output"); /* 19 */ 12 124 12 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 1756 1757 13 1 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 13 2 13 3 13 4 /****^ HISTORY COMMENTS: 13 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 13 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 13 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 13 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 13 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 13 10* Reorganized by type of data to improve readability. 13 11* END HISTORY COMMENTS */ 13 12 13 13 13 14 /* ACCESS NAMES */ 13 15 dcl ( 13 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 13 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 13 18 ) char(32) ext static; 13 19 13 20 /* PATHNAMES */ 13 21 dcl ( 13 22 sc_stat_$info_dir, /* admin info segs directory */ 13 23 sc_stat_$log_dir, /* as log segs directory */ 13 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 13 25 sc_stat_$sysdir /* system control directory */ 13 26 ) char(168) ext static; 13 27 13 28 /* OTHER CHAR STRINGS */ 13 29 dcl ( 13 30 sc_stat_$master_channel /* Master TTY channel. */ 13 31 ) char(6) aligned ext static; 13 32 13 33 /* LABELS */ 13 34 dcl ( 13 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 13 36 /* ssu_$null_label unless */ 13 37 /* admin_listener is active. */ 13 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 13 39 /* attributable to a particular */ 13 40 /* command. */ 13 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 13 42 ) label variable ext static; 13 43 13 44 /* POINTERS TO */ 13 45 dcl ( 13 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 13 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 13 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 13 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 13 50 /* by sys_log_. */ 13 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 13 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 13 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 13 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 13 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 13 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 13 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 13 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 13 59 ) ptr ext static; 13 60 13 61 /* SWITCHES */ 13 62 dcl ( 13 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 13 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 13 65 sc_stat_$Multics, /* TRUE after answering service started */ 13 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 13 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 13 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 13 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 13 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 13 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 13 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 13 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 13 74 /* if PNT not yet available. */ 13 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 13 76 sc_stat_$test_mode, /* TRUE if in test environment */ 13 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 13 78 /* by operator signed on system console*/ 13 79 ) bit(1) aligned ext static; 13 80 13 81 13 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 1758 1759 14 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 14 2 /* format: style2 */ 14 3 14 4 /* The include file condition_info_header must be used with this file */ 14 5 14 6 declare sub_error_info_ptr pointer; 14 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 14 8 2 header aligned like condition_info_header, 14 9 2 retval fixed bin (35), /* return value */ 14 10 2 name char (32), /* module name */ 14 11 2 info_ptr ptr; 14 12 14 13 declare sub_error_info_version_1 14 14 internal static options (constant) fixed bin init (1); 14 15 14 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 1760 1761 1762 /* BEGIN MESSAGE DOCUMENTATION 1763* 1764* Message: 1765* multiplexer_mgr_$load_mpx: Loading MPX. ARGS 1766* 1767* S: as (severity1) 1768* 1769* T: $run 1770* 1771* M: A load of the multiplexer named MPX has been started. ARGS, 1772* if present, lists the control arguments given to the load_mpx 1773* command (-check, -go, and/or -force). 1774* 1775* A: $ignore 1776* 1777* Message: 1778* multiplexer_mgr_$load_mpx: MPX not loaded. Unable to determine the 1779* state of its parent. 1780* 1781* S: as (severity1) 1782* 1783* T: $run 1784* 1785* M: An attempt to load the multiplexer named MPX failed because 1786* the system was unable to determine whether its parent multiplexer 1787* was loaded. 1788* 1789* A: $inform 1790* If possible, attempt to load the parent multiplexer. 1791* 1792* Message: 1793* multiplexer_mgr_$load_mpx: MPX cannot be loaded because its parent 1794* multiplexer is not running. 1795* 1796* S: as (severity1) 1797* 1798* T: $run 1799* 1800* M: An attempt to load the multiplexer named MPX failed because 1801* its parent multiplexer was not running. 1802* 1803* A: Try to load the parent multiplexer before retrying the load 1804* of MPX. 1805* 1806* Message: 1807* multiplexer_mgr_$load_mpx: Initialization of MPX already in progress. 1808* 1809* S: as (severity1) 1810* 1811* T: $run 1812* 1813* M: An attempt to load the multiplexer named MPX failed because 1814* a previous load of MPX has not completed. 1815* 1816* A: Either allow the load currently in progress to complete, or 1817* use the dump_mpx command to abort before retrying the load. 1818* 1819* Message: 1820* multiplexer_mgr_$load_mpx: User(s) of N channel(s) would be hung 1821* up. MPX not loaded. Use -force if necessary. 1822* 1823* S: as (severity1) 1824* 1825* T: $run 1826* 1827* M: The multiplexer named MPX has N subchannels with users 1828* logged in. It can only be loaded if the -force control argument is 1829* provided to the load_mpx command. 1830* 1831* A: Either reenter the load_mpx command with the -force control 1832* argument, or wait for the users to be disconnected or logged out. 1833* 1834* Message: 1835* multiplexer_mgr_$load_mpx: MPX has no subchannels. 1836* 1837* S: as (severity1) 1838* 1839* T: $run 1840* 1841* M: The multiplexer named MPX cannot be used because it has no 1842* subchannels specified in the CDT. 1843* 1844* A: $inform_sa 1845* 1846* Message: 1847* multiplexer_mgr_$load_mpx: No devx assigned to MPX.CHAN. 1848* 1849* S: as (severity1) 1850* 1851* T: $run 1852* 1853* M: The subchannel CHAN of multiplexer MPX was not assigned a 1854* device index ("devx") when MPX was initialized. 1855* 1856* A: $inform 1857* 1858* Message: 1859* multiplexer_mgr_$load_mpx: Unable to init channel CHAN on MPX. 1860* 1861* S: as (severity1) 1862* 1863* T: $run 1864* 1865* M: The subchannel CHAN of multiplexer MPX could not be 1866* initialized. 1867* 1868* A: $inform 1869* 1870* Message: 1871* multiplexer_mgr_$shutdown_mpx: Shutting down MPX. [dump] 1872* 1873* S: as (severity1) 1874* 1875* T: $run 1876* 1877* M: If tracing is on, this message appears when a multiplexer is 1878* shut down. The string "dump" appears at the end of the message if 1879* the the shutdown is in response to a dump_mpx command, rather than a 1880* shutdown_mpx command. 1881* 1882* A: $ignore 1883* 1884* Message: 1885* multiplexer_mgr_$COMMAND: Dumping MPX. [force] 1886* 1887* S: as (severity1) 1888* 1889* T: $run 1890* 1891* M: If tracing is on, this message appears when dumping a 1892* multiplexer in response to either a dump_mpx or shutdown_mpx 1893* command (as indicated by COMMAND). The string "force" appears if 1894* the -force control argument was specified. 1895* 1896* A: $ignore 1897* 1898* Message: 1899* multiplexer_mgr_$COMMAND: User(s) of N channel(s) would be hung up. 1900* MPX not dumped. Use -force if necessary. 1901* 1902* S: as (severity1) 1903* 1904* T: $run 1905* 1906* M: The multiplexer named MPX had logged-in users on N 1907* subchannels when a dump_mpx or shutdown_mpx command (as indicated by 1908* COMMAND) was given. The multiplexer cannot be dumped or shut down 1909* unless the -force control argument is used. 1910* 1911* A: Retry the command with the -force control argument, or wait 1912* for the users to be disconnected or logged out. 1913* 1914* Message: 1915* multiplexer_mgr_$start_mpx: Starting MPX. [force] 1916* 1917* S: as (severity1) 1918* 1919* T: $run 1920* 1921* M: If tracing is on, this message appears when the multiplexer 1922* named MPX is started, either automatically after loading, or in 1923* response to an explicit start_mpx command. The string "force" 1924* appears if the -force control argument was specified. 1925* 1926* A: $ignore 1927* 1928* Message: 1929* multiplexer_mgr_$start_mpx: MPX has not been loaded, so it can't be 1930* started. 1931* 1932* S: as (severity1) 1933* 1934* T: $run 1935* 1936* M: A start_mpx command was entered for the multiplexer named 1937* MPX, but it has not been loaded. 1938* 1939* A: Load the multiplexer by using the load_mpx command. 1940* 1941* Message: 1942* multiplexer_mgr_$start_mpx: MPX is already started. 1943* 1944* S: as (severity1) 1945* 1946* T: $run 1947* 1948* M: A start_mpx command was entered for the multiplexer named 1949* MPX, but it had already been started. 1950* 1951* A: $ignore 1952* 1953* Message: 1954* multiplexer_mgr_$start_mpx: MPX is currently loading. It will be 1955* started when load completes. 1956* 1957* S: as (severity1) 1958* 1959* T: $run 1960* 1961* M: A start_mpx command was entered for the multiplexer named 1962* MPX while loading of MPX was in progress. The start_mpx command 1963* will take effect after the load is completed. 1964* 1965* A: $ignore 1966* 1967* Message: 1968* multiplexer_mgr_$stop_mpx: Stopping MPX 1969* 1970* S: as (severity1) 1971* 1972* T: $run 1973* 1974* M: If tracing is on, this message appears in response to a 1975* stop_mpx command for the multiplexer named MPX. 1976* 1977* A: $ignore 1978* 1979* Message: 1980* multiplexer_mgr_$stop_mpx: MPX is running but no longer accepting calls. 1981* 1982* S: as (severity1) 1983* 1984* T: $run 1985* 1986* M: This message acknowledges that a stop_mpx command has been 1987* successfully executed on the running multiplexer named MPX. 1988* 1989* A: $ignore 1990* 1991* Message: 1992* multiplexer_mgr_$stop_mpx: MPX is now loading, but will not be started 1993* 1994* S: as (severity1) 1995* 1996* T: $run 1997* 1998* M: This message acknowledges a stop_mpx command for the 1999* multiplexer named MPX, which is currently being loaded. 2000* 2001* A: $ignore 2002* 2003* Message: 2004* multiplexer_mgr_$stop_mpx: MPX will not be loaded. 2005* 2006* S: as (severity1) 2007* 2008* T: $run 2009* 2010* M: This message acknowledges a stop_mpx command for the 2011* multiplexer named MPX, which is currently not loaded. 2012* 2013* A: $ignore 2014* 2015* Message: 2016* multiplexer_mgr_$listen_mpx: Listening to MPX. 2017* 2018* S: as (severity1) 2019* 2020* T: $run 2021* 2022* M: If tracing is on, this message appears when starting to 2023* listen to the subchannels of the multiplexer named MPX after it has 2024* been loaded and started. 2025* 2026* A: $ignore 2027* 2028* Message: 2029* multiplexer_mgr_$listen_mpx: MPX is not running. Unable to listen 2030* to channels. 2031* 2032* S: as (severity1) 2033* 2034* T: $run 2035* 2036* M: An attempt was made to listen to the subchannels of the 2037* multiplexer named MPX, but the multiplexer was not running. This 2038* might occur if the multiplexer crashed very shortly after being 2039* loaded. 2040* 2041* A: If there is a message indicating that the multiplexer 2042* crashed shortly after loading, try to reload it. Otherwise, contact 2043* the system programming staff. 2044* 2045* Message: 2046* multiplexer_mgr_$listen_mpx: asu_$listen_chanel failed for MPX.CHAN. 2047* 2048* S: as (severity1) 2049* 2050* T: $run 2051* 2052* M: If tracing is on, this message appears if an attempt to 2053* listen to the subchannel named CHAN of the multiplexer named MPX 2054* returned a status code of error_table_$action_not_performed. An 2055* additional message from asu_$asu_listen should appear giving more 2056* information about the failure. 2057* 2058* A: $inform 2059* 2060* Message: 2061* multiplexer_mgr_mpx_loaded: Successful load reported for MPX. 2062* 2063* S: as (severity1) 2064* 2065* T: $run 2066* 2067* M: If tracing is on, this message appears when the answering 2068* service is notified that the multiplexer named MPX has been 2069* successfully loaded. 2070* 2071* A: $ignore 2072* 2073* Message: 2074* multiplexer_mgr_$mpx_load_failed: Report load failure for MPX while 2075* not loading. 2076* 2077* S: as (severity1) 2078* 2079* T: $run 2080* 2081* M: The answering service was notified that loading of the 2082* multiplexer named MPX had failed, but no load of that multiplexer 2083* was in progress at the time. 2084* 2085* A: $inform 2086* 2087* Message: 2088* multiplexer_mgr_$mpx_load_failed: Load of MPX failed. 2089* 2090* S: as (severity1) 2091* 2092* T: $run 2093* 2094* M: If tracing is on, this message appears if the answering 2095* service is notified that an attempt to load the multiplexer named 2096* MPX failed. A previous message should give more information about 2097* the failure. 2098* 2099* A: $ignore 2100* 2101* Message: 2102* multiplexer_mgr_$mpx_crashed: Crash reported for MPX. 2103* 2104* S: as (severity1) 2105* 2106* T: $run 2107* 2108* M: If tracing is on, this message appears when the answering 2109* service is notified that the multiplexer named MPX has crashed. 2110* 2111* A: $ignore 2112* 2113* Message: 2114* multiplexer_mgr_$mpx_crashed: MPX is stopped and will not be reloaded. 2115* 2116* S: as (severity1) 2117* 2118* T: $run 2119* 2120* M: The multiplexer named MPX has crashed and is not being 2121* reloaded because of a previous stop_mpx command. 2122* 2123* A: $ignore 2124* 2125* Message: 2126* multiplexer_mgr_$mpx_crashed: Automatic reloading is disabled. MPX 2127* will not be reloaded. 2128* 2129* S: as (severity1) 2130* 2131* T: $run 2132* 2133* M: The multiplexer named MPX, which has crashed, is not being 2134* reloaded because automatic reloading of multiplexers has been 2135* disabled (by setting the FNP_required_up_time field in the CMF to 2136* 0). 2137* 2138* A: If it is desired to reload the multiplexer, enter a load_mpx 2139* command. 2140* 2141* Message: 2142* multiplexer_mgr_$mpx_crashed: MPX is in apparent crash loop and 2143* will not be reloaded 2144* 2145* S: as (severity1) 2146* 2147* T: $run 2148* 2149* M: The multiplexer named MPX has crashed more than twice in the 2150* interval specified by FNP_required_up_time, and will not be 2151* automatically reloaded. 2152* 2153* A: $inform 2154* 2155* Message: 2156* multiplexer_mgr_$CMD: Command used too early in answering service 2157* initialization. MPX 2158* 2159* S: as (severity1) 2160* 2161* T: $run 2162* 2163* M: An operator command (identified by CMD) has been entered for 2164* the multiplexer named MPX before the answering service has been 2165* initialized. 2166* 2167* A: $ignore 2168* The command may have to be entered manually after answering service 2169* initialization is complete. 2170* 2171* Message: 2172* ERROR. cdt_mgr_$find_cdt_channel: INFO 2173* 2174* S: as (severity1) 2175* 2176* T: $run 2177* 2178* M: An error (identified by the status code reported in ERROR) 2179* has occurred while trying to find a multiplexer name in the CDT. 2180* Further information about the error is given in INFO. 2181* 2182* A: $inform 2183* 2184* Message: 2185* multiplexer_mgr_$validate_mpx_name: Invalid multiplexer name: MPX REASON 2186* 2187* S: as (severity1) 2188* 2189* T: $run 2190* 2191* M: The multiplexer name MPX, which has been used in an operator 2192* command, is invalid, for the reason given by REASON. 2193* 2194* A: If the name was mistyped, reenter the command. Otherwise, 2195* contact the system administrator. 2196* 2197* Message: 2198* multiplexer_mgr_$CMD: Rethreading CDT. 2199* 2200* S: as (severity0) 2201* 2202* T: $run 2203* 2204* M: In the process of performing the action requested by CMD, 2205* the CDT was found to be damaged (as indicated by a separate 2206* message); an attempt will be made to repair the damage. 2207* 2208* A: $ignore 2209* 2210* Message: 2211* multiplexer_mgr_$CMD: Rethreading of CDT complete. 2212* 2213* S: as (severity0) 2214* 2215* T: $run 2216* 2217* M: Damage to the CDT discovered in the course of executing CMD, 2218* and reported in a previous message, has been successfully repaired. 2219* 2220* A: $ignore 2221* 2222* Message: 2223* multiplexer_mgr_$CMD: CDT rethreading failed. 2224* 2225* S: as (severity2) 2226* 2227* T: $run 2228* 2229* M: An attempt to repair damage to the CDT discovered while 2230* executing CMD (and reported in a previous message) has failed. 2231* 2232* A: $inform 2233* 2234* Message: 2235* multiplexer_mgr_$CMD: Threading inconsistency detected in CDT. 2236* Rethreading. 2237* 2238* S: as (severity1) 2239* 2240* T: $run 2241* 2242* M: An inconsistency in the CDT has been discovered in the CDT 2243* while executing CMD. An attempt will be made to repair the 2244* inconsistency. 2245* 2246* A: $ignore 2247* 2248* Message: 2249* multiplexer_mgr_$CMD: Repeated damage to CDT threads encountered. 2250* 2251* S: as (severity1) 2252* 2253* T: $run 2254* 2255* M: After an attempt to repair an inconsistency to the CDT 2256* discovered while executing CMD, the CDT was still inconsistent. 2257* 2258* A: $inform 2259* 2260* Message: 2261* multiplexer_mgr_$CMD: Error while rethreading CDT. 2262* 2263* S: as (severity1) 2264* 2265* T: $run 2266* 2267* M: An error (reported by a previous message) was encountered 2268* while attempting to repair an inconsistency in the CDT discovered 2269* while executing CMD. 2270* 2271* A: $inform 2272* 2273* Message: 2274* multiplexer_mgr_$CMD: Rethreading complete. 2275* 2276* S: as (severity1) 2277* 2278* T: $run 2279* 2280* M: An inconsistency discovered in the CDT while executing CMD 2281* (and reported in a previous message) has been successfully repaired. 2282* 2283* A: $ignore 2284* 2285* Message: 2286* multiplexer_mgr_$CMD: N daughters found for mux MPX(X1)[ at 2287* CHAN(X2]), but daughter count is M 2288* 2289* S: as (severity1) 2290* 2291* T: $run 2292* 2293* M: An inconsistency in the CDT was found while executing CMD. 2294* The CDT indicates that the multiplexer named MPX, occupying entry 2295* number X1, has M subchannels, but N subchannels are threaded to it. 2296* If N > M, the Nth subchannel is CHAN, occupying entry number X2. 2297* 2298* A: $inform 2299* 2300* Message: 2301* multiplexer_mgr_$CMD: MPX(X1) has daughter count N, but first 2302* daughter X2 2303* 2304* S: as (severity1) 2305* 2306* T: $run 2307* 2308* M: An inconsistency has been discovered in the CDT while 2309* executing CMD. The multiplexer named MPX, occupying CDT entry X1, 2310* is marked as having N subchannels, but the first subchannel entry 2311* number is X2, where either N or X2, but not both, is 0. 2312* 2313* A: $inform 2314* 2315* Message: 2316* multiplexer_mgr_$CMD: multiplexers may not be manipulated before AS 2317* initialization. 2318* 2319* S: as (severity1) 2320* 2321* T: $run 2322* 2323* M: An attempt was made to execute the command CMD before the 2324* answering service was initialized. 2325* 2326* A: $ignore 2327* It may be necessary to reenter the command after answering service 2328* initialization is complete. 2329* 2330* Message: 2331* multiplexer_mgr_$init: Shutting down initialized multiplexers prior 2332* to re-initialization. 2333* 2334* S: as (severity1) 2335* 2336* T: $run 2337* 2338* M: Multiplexer management is being reinitialized after some 2339* multiplexers had been loaded. Such multiplexers will be shut down 2340* prior to reinitialization. 2341* 2342* A: $ignore 2343* 2344* Message: 2345* multiplexer_mgr_$shut: Shutting down all multiplexers. 2346* 2347* S: as (severity1) 2348* 2349* T: $run 2350* 2351* M: If tracing is on, this message appears when multiplexers are 2352* being shut down as part of system shutdown or when an error was 2353* encountered during answering service initialization. 2354* 2355* A: $ignore 2356* 2357* Message: 2358* multiplexer_mgr_$load_mpx: ERROR. Unable to get a devx for MPX 2359* 2360* S: as (severity1) 2361* 2362* T: $run 2363* 2364* M: An error code (described by ERROR) has been returned from an 2365* attempt to find the device index ("devx") of the multiplexer named 2366* MPX. 2367* 2368* A: $inform 2369* 2370* Message: 2371* multiplexer_mgr_$load_mpx: ERROR. Unable to initialize MPX. 2372* 2373* S: as (severity1) 2374* 2375* T: $run 2376* 2377* M: An error code (described by ERROR) hs been returned from an 2378* attempt to initialize the multiplexer named MPX in ring 0. 2379* 2380* A: $inform 2381* 2382* Message: 2383* multiplexer_mgr_$load_mpx: ERROR. Unable to load MPX. 2384* 2385* S: as (severity1) 2386* 2387* T: $run 2388* 2389* M: An error (described by ERROR) has prevented the loading of 2390* the multiplexer named MPX. 2391* 2392* A: $inform 2393* 2394* Message: 2395* multiplexer_mgr_$shutdown_mpx: ERROR. Shutting down MPX. 2396* 2397* S: as (severity1) 2398* 2399* T: $run 2400* 2401* M: An error (described by ERROR) has occurred when attempting 2402* to shut down the multiplexer named MPX. 2403* 2404* A: $inform 2405* 2406* Message: 2407* multiplexer_mgr_$shutdown_mpx: ERROR. Unable to dump MPX. 2408* 2409* S: as (severity1) 2410* 2411* T: $run 2412* 2413* M: An error (described by ERROR) has occurred when attempting 2414* to dump the multiplexer named MPX. 2415* 2416* A: $inform 2417* 2418* Message: 2419* multiplexer_mgr_$shutdown_mpx: ERROR. Terminating MPX.CHAN. 2420* 2421* S: as (severity1) 2422* 2423* T: $run 2424* 2425* M: An error (described by ERROR) has occurred while terminating 2426* the subchannel CHAN of the multiplexer named MPX. 2427* 2428* A: $inform 2429* 2430* Message: 2431* multiplexer_mgr_$shutdown_mpx: ERROR. Terminating MPX. 2432* 2433* S: as (severity1) 2434* 2435* T: $run 2436* 2437* M: An error (described by ERROR) has occurred when attempting 2438* to terminate the multiplexer named MPX. 2439* 2440* A: $inform 2441* 2442* Message: 2443* multiplexer_mgr_$start_mpx: ERROR. Can't get devx for MPX. 2444* 2445* S: as (severity1) 2446* 2447* T: $run 2448* 2449* M: An error (described by ERROR) was returned from an attempt 2450* to get the device index ("devx") for the multiplexer named MPX. 2451* 2452* A: $inform 2453* 2454* Message: 2455* multiplexer_mgr_$start_mpx: ERROR. Starting MPX. 2456* 2457* S: as (severity1) 2458* 2459* T: $run 2460* 2461* M: An error (described by ERROR) occurred when attempting to 2462* start the multiplexer named MPX. 2463* 2464* A: $inform 2465* 2466* Message: 2467* multiplexer_mgr_$stop_mpx: ERROR. Can't get devx for MPX. 2468* 2469* S: as (severity1) 2470* 2471* T: $run 2472* 2473* M: An error (described by ERROR) was returned from an attempt 2474* to get the device index ("devx") for the multiplexer named MPX. 2475* 2476* A: $inform 2477* 2478* Message: 2479* multiplexer_mgr_$stop_mpx: ERROR. Unable to stop MPX. 2480* 2481* S: as (severity1) 2482* 2483* T: $run 2484* 2485* M: An error (described by ERROR) occurred when attempting to 2486* stop the multiplexer named MPX. 2487* 2488* A: $inform 2489* 2490* Message: 2491* multiplexer_mgr_$listen_mpx: ERROR. asu_$attach_channel failed MPX.CHAN 2492* 2493* S: as (severity1) 2494* 2495* T: $run 2496* 2497* M: An error was returned by asu_$attach_channel when attempting 2498* to attach the subchannel CHAN while listening to all subchannels of 2499* the multiplexer named MPX. This message only appears if tracing is 2500* on. 2501* 2502* A: $inform 2503* 2504* Message: 2505* multiplexer_mgr_$listen_mpx: ERROR. Channel MPX.CHAN listen failed. 2506* 2507* S: as (severity1) 2508* 2509* T: $run 2510* 2511* M: An attempt to listen to the subchannel CHAN of the 2512* multiplexer MPX encountered an error (described by ERROR). 2513* 2514* A: $inform 2515* 2516* Message: 2517* multiplexer_mgr_$mpx_load_failed: ERROR. Trying to shutdown MPX. 2518* 2519* S: as (severity1) 2520* 2521* T: $run 2522* 2523* M: An error (described by ERROR) occurred when attempting to 2524* shut down the multiplexer named MPX after it had failed to load. 2525* 2526* A: $inform 2527* 2528* Message: 2529* multiplexer_mgr_$mpx_crashed: ERROR. Shutting down MPX 2530* 2531* S: as (severity1) 2532* 2533* T: $run 2534* 2535* M: An error (described by ERROR) occurred when attempting to 2536* shut down the multiplexer named MPX after it had crashed. 2537* 2538* A: $inform 2539* 2540* Message: 2541* multiplexer_mgr_$CMD: ERROR. cdt_mgr_$init: INFO 2542* 2543* S: as (severity0) 2544* 2545* T: $run 2546* 2547* M: An error (described by ERROR, with additional information in 2548* INFO) occurred while trying to get a pointer to the CDT in order to 2549* execute the command named CMD. 2550* 2551* A: $inform 2552* 2553* Message: 2554* multiplexer_mgr_$CMD: ERROR. cdt_mgr_$thread: INFO 2555* 2556* S: as (severity1) 2557* 2558* T: $run 2559* 2560* M: An error (described by ERROR, with additional information in 2561* INFO) occurred while trying to repair damage to the CDT discovered 2562* while executing CMD. 2563* 2564* A: $inform 2565* 2566* Message: 2567* multiplexer_mgr_$CMD: ERROR. cdt_mgr_$init failed. 2568* 2569* S: as (severity1) 2570* 2571* T: $run 2572* 2573* M: An error (desribed by ERROR) occurred when trying to 2574* initialize the CDT in preparation for executing CMD. 2575* 2576* A: $inform 2577* 2578* Message: 2579* multiplexer_mgr_$CMD: ERROR. cdt_mgr_$thread: INFO 2580* 2581* S: as (severity3) 2582* 2583* T: $run 2584* 2585* M: An error (described by ERROR, with additional information in 2586* INFO) occurred while trying to repair damage to the CDT discovered 2587* while executing CMD; the attempt at repair will not be repeated. 2588* 2589* A: $inform 2590* 2591* Message: 2592* multiplexer_mgr_$init: ERROR. Unable to perform requested stop_mpx of MPX. 2593* 2594* S: as (severity1) 2595* 2596* T: $run 2597* 2598* M: An attempt to shut down the multiplexer named MPX, while 2599* reinitializing multiplexer management, encountered an error 2600* (described by ERROR). 2601* 2602* A: $inform 2603* 2604* Message: 2605* multiplexer_mgr_$init: ERROR. From hphcs_$lct_init 2606* 2607* S: as (severity1) 2608* 2609* T: $run 2610* 2611* M: An error (described by ERROR) was returned from 2612* hphcs_$lct_init while trying to initialize multiplexer management. 2613* 2614* A: $inform 2615* 2616* Message: 2617* multiplexer_mgr_$shut: ERROR. Could not shutdown FNP X. 2618* 2619* S: as (severity1) 2620* 2621* T: $run 2622* 2623* M: An error (described by ERROR) occurred when trying to shut 2624* down the FNP named X during system shutdown or after an error in 2625* answering service initialization. 2626* 2627* A: $inform 2628* 2629* Message: 2630* multiplexer_mgr_$shut: ERROR. Could not shutdown MPX. 2631* 2632* S: as (severity1) 2633* 2634* T: $run 2635* 2636* M: An error (described by ERROR) occurred when trying to shut 2637* down the multiplexer named MPX during system shutdown or after an 2638* error in answering service initialization. 2639* 2640* A: $inform 2641* 2642* 2643* 2644* END MESSSAGE DOCUMENTATION */ 2645 end multiplexer_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/89 1005.1 multiplexer_mgr_.pl1 >special_ldd>install>MR12.3-1100>multiplexer_mgr_.pl1 1738 1 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 1740 2 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 2-10 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 1742 4 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 4-314 5 07/21/88 2036.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 1744 6 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1746 7 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 1748 8 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1750 9 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 1752 10 10/25/89 0959.9 multiplexer_types.incl.pl1 >special_ldd>install>MR12.3-1100>multiplexer_types.incl.pl1 1754 11 02/23/79 1434.9 mux_init_info.incl.pl1 >ldd>include>mux_init_info.incl.pl1 1756 12 08/06/87 0913.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 1758 13 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 1760 14 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.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. ACTIVE constant fixed bin(17,0) initial dcl 4-272 ref 252 548 556 727 912 929 1666 ANS_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 707 BAD_THREADS_LABEL 000204 automatic label variable dcl 88 set ref 181* 373* 487* 529* 594* 669* 747* 767* 808* 849* 902* 1540 1604* 1638* 1686* 1708* CHANNEL_DELETED 016510 constant fixed bin(17,0) initial dcl 4-288 ref 1026 1319 DIAL_OUT_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 707 FTP_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 707 INACTIVE constant fixed bin(17,0) initial dcl 4-272 ref 615 872 1610 L_CDTE based structure level 1 dcl 1302 MCS_HANGUP_MSG constant fixed bin(17,0) initial dcl 12-52 ref 440 MCS_MPX constant fixed bin(17,0) initial dcl 10-16 ref 351 1015 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 12-34 ref 438 MC_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 1348 1350 MPX_BOOT constant fixed bin(17,0) initial dcl 4-306 ref 210 307 385 425 541 558 637 816 1648 MPX_DOWN constant fixed bin(17,0) initial dcl 4-306 ref 316 394 830 912 929 1066 1666 MPX_FREE constant fixed bin(17,0) initial dcl 4-306 ref 1012 1121 MPX_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 293 326 345 422 724 982 1037 1137 1255 1356 1358 1363 MPX_UNKNOWN constant fixed bin(17,0) initial dcl 4-306 ref 752 MPX_UP constant fixed bin(17,0) initial dcl 4-306 ref 202 230 385 425 541 548 618 683 775 954 985 1281 1648 NET_EVENT_MESSAGE_VERSION_1 constant bit(2) initial packed unaligned dcl 12-20 ref 437 NOT_CONFIGURED 016511 constant fixed bin(17,0) initial dcl 4-280 ref 1339 NOW_FREE constant fixed bin(17,0) initial dcl 8-76 ref 705 1029 1032 1319 1325 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 8-76 ref 433 1036 1341 SLAVE_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 707 a_code parameter fixed bin(35,0) dcl 999 set ref 997 1003* acceptable_fnp_tbf 54 based fixed bin(17,0) level 2 dcl 4-44 ref 876 881 881 action parameter char packed unaligned dcl 1162 ref 1159 1172 action_flags 2 based structure level 3 dcl 14-7 addr builtin function dcl 149 ref 285 312 312 323 341 418 424 435 437 438 439 440 442 447 447 449 449 701 726 910 911 924 928 952 953 977 984 1008 1009 1025 1039 1101 1101 1118 1119 1135 1140 1260 1260 1275 1277 1313 1365 1415 1415 1423 1423 1519 1519 1646 1647 1661 1665 arg_cdtp parameter pointer dcl 62 set ref 1580 1625* 1693 1700 1700 arg_check_sw parameter bit(1) dcl 54 set ref 172 190* 253 312* arg_code parameter fixed bin(35,0) dcl 61 set ref 153 163* 172 186* 199* 206* 213* 235* 358* 364 378* 390* 463* 469 476 492* 507* 515* 520 534* 544* 551* 562* 570* 578* 582* 587 598* 599 608* 624* 631* 654* 660 676* 686* 692* 735* 740 755* 760 771* 790* 796* 801 812* 819* 837* 842 853* 889* 895 901* 1512* 1528* 1573* 1580 1596* 1597 1619* 1621 1621* 1626* 1693 1713* 1720* arg_count parameter fixed bin(17,0) dcl 55 set ref 1693 1699* 1717* arg_dump_sw parameter bit(1) dcl 58 set ref 364 382* 403 arg_force_sw parameter bit(1) dcl 57 set ref 172 190* 217 469 476 496* 499 520 538* 548 arg_go_sw parameter bit(1) dcl 56 set ref 172 190* 305 arg_mpx_name parameter char packed unaligned dcl 53 ref 153 158 172 176 364 368 469 476 481 520 524 587 591 660 666 740 744 760 764 801 805 842 846 1693 1698 arg_reload_sw parameter bit(1) dcl 59 set ref 842 860* 870 arg_state parameter fixed bin(17,0) dcl 60 set ref 740 752* 754* arg_test_cdtp parameter pointer dcl 155 ref 153 159 as_data_$lct_initialized 000116 external static bit(1) dcl 1-39 set ref 1617 1623* as_data_$lct_size 000120 external static fixed bin(17,0) dcl 1-40 set ref 1054* 1619* as_error_table_$cdt_rethreading_error 000140 external static fixed bin(35,0) dcl 1471 ref 1528 as_error_table_$repeated_cdt_damage 000136 external static fixed bin(35,0) dcl 1470 ref 1512 asu_$asu_listen 000020 constant entry external dcl 114 ref 716 asu_$attach_channel 000022 constant entry external dcl 115 ref 710 asu_$channel_in_use 000024 constant entry external dcl 116 ref 1260 attributes 50 based structure level 3 packed packed unaligned dcl 4-72 author based structure level 2 dcl 2-9 author_dcl based structure level 1 dcl 2-9 auto_condition_info 000220 automatic structure level 1 dcl 91 set ref 1101 1101 1415 1415 1423 1423 1519 1519 boot_ev_chan 62 based fixed bin(71,0) level 2 dcl 4-200 set ref 1011* boot_segp 60 based pointer level 2 dcl 4-200 set ref 1010* cdt based structure level 1 dcl 4-44 cdt_entry 1520 based structure array level 2 dcl 4-44 set ref 285 323 341 418 701 924 977 1025 1135 1260 1260 1313 1661 cdt_list 000100 automatic structure level 1 dcl 278 set ref 312 312 cdt_mgr_$find_cdt_channel 000026 constant entry external dcl 117 ref 1108 cdt_mgr_$init 000130 constant entry external dcl 1409 ref 1443 cdt_mgr_$shut 000114 constant entry external dcl 1631 ref 1682 cdt_mgr_$thread 000132 constant entry external dcl 1410 in procedure "get_cdt_ptr" ref 1437 cdt_mgr_$thread 000134 constant entry external dcl 1469 in procedure "CDT_THREAD_DAMAGE" ref 1533 cdt_mgr_$thread_out_cdt_channel 000030 constant entry external dcl 118 ref 1028 1332 cdte based structure level 1 dcl 4-72 cdtep 000256 automatic pointer dcl 4-41 set ref 285* 286 289 290 291 291 293 295 296 323* 324 326 326 326 328 341* 343 345 345 418* 420 422 424 425 428 430 431 433 439 441 446 447 451 701* 703 705 707 707 707 707 710* 711 716* 717 720 724 726 727 924* 926 928 931 977* 979 982 984 985 988 988 1025* 1026 1029 1032 1034 1034 1035 1036 1037 1039 1041 1042 1046 1047 1048 1049 1050 1051 1052 1135* 1137 1140 1141 1142 1145 1148* 1661* 1663 1665 1668 1669 cdteps 1 000100 automatic pointer array level 2 packed packed unaligned dcl 278 set ref 289* cdtp 000254 automatic pointer dcl 4-41 set ref 159* 178* 179 179 285 286 300 312* 323 324 329 341 343 347 370* 371 371 406* 418 420 454 484* 485 485 526* 527 527 593* 596 602 668* 670 670 701 703 731 746* 748 748 766* 794 807* 848* 876 881 881 899* 904 905 909 910 924 926 934 948* 950 951 952 977 979 990 1004 1004 1007 1008 1024 1025 1028* 1054 1089 1108* 1118 1135 1217 1217 1224 1226 1253 1253 1255 1260 1260 1262 1275 1277 1288 1313 1315 1332* 1387 1388 1392 1393 1397 1398 1412* 1417* 1434 1437* 1439 1443* 1454 1474 1474 1474 1477 1477 1479 1479 1486 1486 1488 1490 1497 1497 1497 1500 1500 1502 1502 1533* 1587* 1588 1635* 1645 1646 1661 1663 1673 1678 1700* 1702* 1703 1703 channel_id 000210 automatic fixed bin(71,0) level 2 dcl 90 set ref 441* channel_threads based structure level 1 dcl 4-249 channels 1 based structure array level 2 dcl 11-10 check 15(02) based bit(1) level 3 packed packed unaligned dcl 4-221 set ref 253* 834 check_count 000103 automatic fixed bin(17,0) dcl 969 in procedure "go_on_down" set ref 975* 978* 978 979 979 979* 991 check_count 000104 automatic fixed bin(17,0) dcl 1300 in procedure "update_cdt" set ref 1309* 1314* 1314 1315 1315 1315* check_count 000103 automatic fixed bin(17,0) dcl 1240 in procedure "count_mpx_users" set ref 1249* 1252* 1252 1253 1253 1253* 1263 1263* check_count 000321 automatic fixed bin(17,0) dcl 1205 in procedure "find_subchannels" set ref 1214* 1216* 1216 1217 1217 1222* 1224 1225 1227 1227* clock builtin function dcl 149 ref 308 776 857 code parameter fixed bin(35,0) dcl 1408 in procedure "get_cdt_ptr" set ref 1405 1430* 1443* 1444 1446* 1451* 1452 code 000100 automatic fixed bin(35,0) dcl 66 in procedure "multiplexer_mgr_" set ref 161 163 184 186 195 225* 232* 233 235 246* 255* 256 258* 262* 263 265* 266* 295* 296 312* 314 317* 326* 333* 334* 358 376 378 387* 388 390 395* 396 396* 406* 407 407* 425* 430* 431 431* 459* 460 460* 463 490 492 514* 515 532 534 566* 567 569* 570 574* 575 577* 578 606 608 620* 621 623* 624 627* 628 630* 631 674 676 710* 711 711* 716* 717 717 717* 727* 752 755 769 771 786* 788 790 794* 796 810 812 826* 827 827* 834 834* 851 853 860* 861 861* 868* 886* 889 916* 931* 954* 985* 1092* 1103* 1104* 1108* 1110 1149* 1153* 1173* 1174 1282* 1286* 1288* 1350* 1607 1607* 1651* 1652 1652* 1668* 1669 1669* 1705* 1711 1713 collate builtin function dcl 149 ref 915 954 954 1286 1286 1479 1490 1502 1502 1650 condition_info based structure level 1 dcl 6-14 condition_info_header based structure level 1 dcl 7-6 ct 000100 automatic fixed bin(17,0) initial level 2 dcl 278 set ref 278* current_mpx_type 2 based fixed bin(17,0) level 2 dcl 4-221 set ref 250* 262* 351 1017* 1041* 1073* 1126 1126* 1142 1142* 1168 1168 1170 1367* current_service_type 1 based fixed bin(17,0) level 2 in structure "mpxe" dcl 4-221 in procedure "multiplexer_mgr_" set ref 252* 548 556* 615* 727 872 912 929 1018* 1042* 1610* 1666 current_service_type 1614 based fixed bin(17,0) array level 3 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1255 current_service_type 74 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" set ref 293 326 345 422 707 707 707 707 724 982 1034* 1037 1137 current_service_type 74 based fixed bin(17,0) level 2 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" set ref 1342* 1348 1356 1362* 1363 current_size 36 based fixed bin(17,0) level 2 dcl 4-44 ref 1024 d parameter fixed bin(17,0) packed unaligned dcl 1561 set ref 1559 1563* d_limit 000317 automatic fixed bin(17,0) dcl 1202 in procedure "find_subchannels" set ref 1207* 1208 1211 1217 1227 d_limit 000103 automatic fixed bin(17,0) dcl 1300 in procedure "update_cdt" set ref 1305* 1306 1315 d_limit 000202 automatic fixed bin(17,0) dcl 87 in procedure "multiplexer_mgr_" set ref 274* 278 278 286 302 324 330 343 348 411* 420 456 698* 703 921* 926 935 1658* 1663 1674 d_limit 000100 automatic fixed bin(17,0) dcl 966 in procedure "go_on_down" set ref 971* 972 979 991 d_limit 000102 automatic fixed bin(17,0) dcl 1240 in procedure "count_mpx_users" set ref 1245* 1246 1253 1263 d_limit parameter fixed bin(17,0) dcl 1382 in procedure "thread_start" set ref 1378 1388* 1393* 1398* 1401 data_ptr 6 000210 automatic pointer level 2 dcl 90 set ref 446* daughter 57 based fixed bin(17,0) level 3 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1397 1500* daughter 135 based fixed bin(17,0) level 3 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" ref 988 988 daughter 1655 based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1392 1497* daughter 225 based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1387 1502* daughter_count 226(18) based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1388 1479* 1490* 1502* daughter_count 1656(18) based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1393 1474* 1486* 1497* daughter_count 136(18) based fixed bin(17,0) level 3 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" ref 1323 1369 daughter_count 106(18) based fixed bin(17,0) level 3 in structure "fnpe" packed packed unaligned dcl 4-200 in procedure "multiplexer_mgr_" ref 956 daughter_count 60(18) based fixed bin(17,0) level 3 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1398 1477* 1488* 1500* dc parameter fixed bin(17,0) packed unaligned dcl 1545 set ref 1542 1548* 1552 1555* 1559 1563* default_restart 2(01) based bit(1) level 4 packed packed unaligned dcl 14-7 ref 1427 1523 dev_signal 5 000210 automatic bit(18) level 3 packed packed unaligned dcl 90 set ref 444* devx 11 based fixed bin(17,0) array level 3 in structure "mux_init_info" dcl 11-10 in procedure "multiplexer_mgr_" set ref 290 1225* devx 000156 automatic fixed bin(17,0) dcl 73 in procedure "multiplexer_mgr_" set ref 255* 262* 333* 387* 395* 459* 566* 574* 620* 627* dial_ev_chn 132 based fixed bin(71,0) level 2 dcl 4-72 set ref 1050* dialed_to_procid 112 based bit(36) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" set ref 1346* dialed_to_procid 112 based bit(36) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 1049* dialup_$simulated_wakeup 000032 constant entry external dcl 119 ref 447 dialup_flags 75(18) based structure level 2 packed packed unaligned dcl 4-72 divide builtin function dcl 149 ref 866 dx 000100 automatic fixed bin(17,0) dcl 1297 set ref 1329* 1332* e parameter char packed unaligned dcl 1185 ref 1182 1189 ename parameter char(32) dcl 1544 set ref 1542 1548* entname 000121 automatic char(32) packed unaligned dcl 1165 set ref 1172* 1173* entvar 000160 automatic entry variable dcl 75 set ref 312 406 1167* 1173* error_table_$action_not_performed 000106 external static fixed bin(35,0) dcl 142 ref 199 206 213 225 246 266 334 507 544 551 562 686 717 819 1092 1153 1573 1720 error_table_$null_info_ptr 000110 external static fixed bin(35,0) dcl 143 ref 1705 error_table_$out_of_sequence 000112 external static fixed bin(35,0) dcl 144 set ref 1582* errorx parameter fixed bin(17,0) dcl 1467 set ref 1462 1474 1474* 1477 1477* 1479 1479* ev_msg 000210 automatic structure level 1 dcl 90 set ref 447 447 449 449 event 72 based fixed bin(71,0) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" set ref 1327* 1344* event 72 based fixed bin(71,0) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 441 1046* event_call_info based structure level 1 dcl 9-7 ex parameter fixed bin(17,0) dcl 1546 set ref 1542 1548* find_condition_info_ 000036 constant entry external dcl 121 ref 1101 1415 1423 1519 firstx 000201 automatic fixed bin(17,0) dcl 86 in procedure "multiplexer_mgr_" set ref 274* 282 321 340 411* 416 698* 700 921* 923 1658* 1660 firstx 000102 automatic fixed bin(17,0) dcl 1300 in procedure "update_cdt" set ref 1305* 1310 firstx 000101 automatic fixed bin(17,0) dcl 1240 in procedure "count_mpx_users" set ref 1245* 1250 firstx parameter fixed bin(17,0) dcl 1381 in procedure "thread_start" set ref 1378 1387* 1392* 1397* 1401 firstx 000101 automatic fixed bin(17,0) dcl 967 in procedure "go_on_down" set ref 971* 976 firstx 000316 automatic fixed bin(17,0) dcl 1201 in procedure "find_subchannels" set ref 1207* 1215 flags 50 based structure level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" flags 15 based structure level 2 in structure "mpxe" packed packed unaligned dcl 4-221 in procedure "multiplexer_mgr_" set ref 1074* flags 53 based structure level 2 in structure "cdt" dcl 4-44 in procedure "multiplexer_mgr_" fnp_entry 120 based structure array level 2 dcl 4-44 set ref 909 910 951 952 1007 1008 1118 1645 1646 fnp_only 000165 automatic bit(1) initial packed unaligned dcl 77 set ref 77* 602* 1132 1600* fnp_sw 000100 automatic bit(1) dcl 1086 set ref 1108* 1116 fnpe based structure level 1 dcl 4-200 fnpep 000260 automatic pointer dcl 4-41 set ref 910* 911 952* 953 956 1008* 1009 1010 1011 1015 1015 1017 1018 1118* 1119 1121 1125 1126 1128 1148* 1646* 1647 get_process_id_ 000042 constant entry external dcl 123 ref 443 get_system_free_area_ 000040 constant entry external dcl 122 ref 1096 go 53 based bit(1) level 3 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 794 904* 950* 1004* go 15 based bit(1) level 3 in structure "mpxe" packed packed unaligned dcl 4-221 in procedure "multiplexer_mgr_" set ref 305* 548 555* 616* 786 834 1611* handle 1 based fixed bin(35,0) level 2 dcl 12-22 set ref 439* hardwired 50(02) based bit(1) level 4 packed packed unaligned dcl 4-72 ref 351 hbound builtin function dcl 149 ref 909 951 1007 1168 1645 hcs_$make_entry 000044 constant entry external dcl 124 ref 1173 header based structure level 2 dcl 14-7 hphcs_$init_channel 000052 constant entry external dcl 127 ref 295 hphcs_$init_multiplexer 000054 constant entry external dcl 128 ref 262 hphcs_$lct_init 000070 constant entry external dcl 134 ref 1619 hphcs_$shutdown_multiplexer 000056 constant entry external dcl 129 ref 395 hphcs_$start_multiplexer 000064 constant entry external dcl 132 ref 574 hphcs_$stop_multiplexer 000066 constant entry external dcl 133 ref 627 hphcs_$terminate_channel 000060 constant entry external dcl 130 ref 326 430 hphcs_$terminate_multiplexer 000062 constant entry external dcl 131 ref 333 459 i 000101 automatic fixed bin(17,0) dcl 1001 in procedure "init_cdt" set ref 1007* 1008* 1024* 1025 1028* i 000101 automatic fixed bin(17,0) dcl 67 in procedure "multiplexer_mgr_" set ref 276* 283* 283 286 286 286* 289 290 302 302* 320* 322* 322 324 324 324* 330 330* 339* 342* 342 343 343 343* 348 348* 415* 419* 419 420 420 420* 456 456* 699* 702* 702 703 703 703* 909* 910 915* 922* 925* 925 926 926 926* 935 935* 951* 952 954 954 956* 991* 1645* 1646 1650* 1659* 1662* 1662 1663 1663 1663* 1674 1674* in_use based fixed bin(17,0) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 433 705 1026 1029* 1032 1036* in_use based fixed bin(17,0) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" set ref 1319 1319 1325* 1339 1341* index builtin function dcl 149 ref 1132 info_ptr 116 based pointer level 2 in structure "sub_error_info" dcl 14-7 in procedure "multiplexer_mgr_" ref 1417 info_ptr 14 000220 automatic pointer level 2 in structure "auto_condition_info" dcl 91 in procedure "multiplexer_mgr_" set ref 1102 1416 1424 1520 info_string 3 based varying char(256) level 3 dcl 14-7 set ref 1104* 1418* 1425* 1521* 1526* initial_command 51 based char(64) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" set ref 1358* 1365 initial_command 51 based char(64) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 424 726 928 984 1039 1140 1665 iox_$err_no_operation 000100 constant entry external dcl 138 ref 1167 j 000100 automatic fixed bin(17,0) dcl 1238 set ref 1257* 1258 last_tbf 14 based fixed bin(17,0) level 2 dcl 4-221 set ref 881 888* 1072* listening 15(01) based bit(1) level 3 packed packed unaligned dcl 4-221 set ref 309* 690 734* local_cdtep 000106 automatic pointer dcl 1301 set ref 1313* 1315 1319 1319 1323 1325 1326 1327 1330 1339 1341 1342 1342 1343 1344 1345 1346 1348 1350 1350 1356 1358 1358 1362 1362 1363 1365 1367 1369 1371 loud 000014 internal static bit(1) initial packed unaligned dcl 104 set ref 190 317 382 496 538 612 680 711 720 783 824 858 1640 1652 1669 1729* 1735* mc_commands_$listen_to_ttys 000102 constant entry external dcl 139 ref 733 mc_commands_$remove_tty 000104 constant entry external dcl 140 ref 1350 mc_tty_$simulated_wakeup 000034 constant entry external dcl 120 ref 449 message 2 000210 automatic fixed bin(71,0) level 2 dcl 90 set ref 442* mii_chan_count 000266 automatic fixed bin(17,0) dcl 11-7 set ref 1211* 1212 1212 miip 000264 automatic pointer dcl 11-6 set ref 242* 243 262* 290 355 355 1187* 1221 1538 1538 mother 1655(18) based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 1217 1253 mother 135(18) based fixed bin(17,0) level 3 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" ref 1315 mother 1(18) based fixed bin(17,0) level 2 in structure "channel_threads" packed packed unaligned dcl 4-249 in procedure "multiplexer_mgr_" ref 1279 1286 1286 1286 1288 mother 135(18) based fixed bin(17,0) level 3 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" ref 286 324 343 420 703 926 979 1663 mpx_area based area dcl 95 ref 1212 mpx_areap 000012 internal static pointer initial dcl 103 set ref 1096 1096* 1212 mpx_cdtep 000112 automatic pointer dcl 69 set ref 312* 351 406* 1125* 1141* mpx_data 47 based structure level 2 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" mpx_data 47 based structure level 2 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" mpx_display_name 000114 automatic varying char(64) dcl 70 set ref 190* 197* 204* 212* 222* 245* 258* 265* 296* 317* 382* 396* 407* 460* 496* 504* 538* 543* 550* 560* 569* 577* 612* 623* 630* 634* 637* 641* 680* 685* 783* 818* 824* 827* 858* 861* 872* 876* 881* 1123* 1139* mpx_name 000102 automatic char(32) packed unaligned dcl 68 in procedure "multiplexer_mgr_" set ref 158* 176* 232* 255* 312* 368* 387* 406* 481* 514* 524* 566* 591* 620* 644 649 666* 733* 744* 764* 780* 786* 794* 805* 826* 834* 846* 860* 886* 915* 916* 1091* 1108* 1123 1132 1139 1151* 1603* 1607* 1650* 1651* 1652* 1698* mpx_name based char(32) level 2 in structure "stop_mpx_list_entry" packed packed unaligned dcl 96 in procedure "multiplexer_mgr_" set ref 644 649* 1603 mpx_service 47(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-72 ref 1042 mpx_type 47 based fixed bin(17,0) level 3 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" ref 1041 1142 1145 mpx_type 47 based fixed bin(17,0) level 3 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" ref 1367 mpx_type 5 based fixed bin(17,0) level 2 in structure "fnpe" dcl 4-200 in procedure "multiplexer_mgr_" set ref 1015 1015* 1017 1126 1128 mpx_types 000000 constant char(32) initial array packed unaligned dcl 10-35 ref 1168 1170 mpx_was_up 000175 automatic bit(1) packed unaligned dcl 82 set ref 398* 401* 413 mpxe based structure level 1 dcl 4-221 in procedure "multiplexer_mgr_" mpxe 64 based structure level 2 in structure "fnpe" dcl 4-200 in procedure "multiplexer_mgr_" set ref 911 953 1009 1119 1647 mpxep 000262 automatic pointer dcl 4-41 set ref 210 230 250 252 253 262 305 306 306 307 308 309 316 351 351 385 385 394 512 541 541 548 548 548 555 556 558 615 616 618 637 683 690 696 726* 727 754 775 776 777 777 777 786 816 830 834 834 834 857 866 866 872 881 881 888 911* 912 912 928* 929 929 953* 954 984* 985 1009* 1012 1014* 1017 1018 1039* 1040* 1041 1042 1119* 1126 1126 1140* 1142 1142 1168 1168 1170 1610 1611 1647* 1648 1648 1665* 1666 1666 msg 000101 automatic varying char(128) dcl 1087 set ref 1112* 1120* 1131* 1136* 1151* mux_init_info based structure level 1 dcl 11-10 set ref 355 1212 1221 1538 mux_mgr_system_init 53(02) based bit(1) level 3 packed packed unaligned dcl 4-44 set ref 179 371 485 527 602 670 748 905* 1004* 1588 1678* 1703 muxx parameter fixed bin(17,0) dcl 1237 in procedure "count_mpx_users" set ref 1234 1245* 1253 1253* 1263* muxx parameter fixed bin(17,0) dcl 1272 in procedure "check_parent_state" ref 1269 1275 1275 1277 muxx parameter fixed bin(17,0) dcl 1383 in procedure "thread_start" set ref 1378 1385 1387 1388 1390 1392 1393 1395 1401* muxx parameter fixed bin(17,0) dcl 965 in procedure "go_on_down" set ref 962 971* 979 979* 991* muxx parameter fixed bin(17,0) dcl 1200 in procedure "find_subchannels" set ref 1197 1207* 1217 1222* 1227* muxx parameter fixed bin(17,0) dcl 1466 in procedure "CDT_THREAD_DAMAGE" set ref 1462 1474 1474 1474* 1474 1477 1479 1479* 1479 1483 1486 1486 1486* 1486 1488 1490 1490* 1490 1494 1497 1497 1497* 1497 1497 1500 1502 1502 1502* 1502 1502 muxx parameter fixed bin(17,0) dcl 1299 in procedure "update_cdt" set ref 1294 1305* 1315 1315* muxx 000177 automatic fixed bin(17,0) dcl 84 in procedure "multiplexer_mgr_" set ref 160* 167* 183* 194* 219* 240* 242* 274* 286 286* 302* 324 324* 330* 343 343* 348* 375* 411* 420 420* 456* 489* 501* 531* 605* 673* 698* 703 703* 751* 768* 809* 850* 1605* 1710* 1717* n parameter fixed bin(17,0) dcl 1239 set ref 1234 1244* 1258* 1258 1260* 1260 n_bootloads 3 based fixed bin(17,0) level 2 dcl 4-221 set ref 306* 306 881 1067* n_cdtes 41 based fixed bin(17,0) level 2 dcl 4-44 ref 286 324 343 420 703 926 979 1217 1253 1315 1663 n_daughters parameter fixed bin(17,0) dcl 1465 set ref 1462 1483 1548* 1555* n_users 000155 automatic fixed bin(17,0) dcl 72 set ref 219* 220 222 222* 222 501* 502 504 504* 504 name 2 based char(32) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 291* 296* 425 431* 711* 717* 720* 727 931 985 1668 1669* name 2 based char(32) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" ref 1350 name 1 based char(32) array level 3 in structure "mux_init_info" packed packed unaligned dcl 11-10 in procedure "multiplexer_mgr_" set ref 1224* name 1522 based char(32) array level 3 in structure "cdt" dcl 4-44 in procedure "multiplexer_mgr_" set ref 1224 1288 1474* 1474* 1477* 1479* 1486* 1497* name 000135 automatic char(64) packed unaligned dcl 71 in procedure "multiplexer_mgr_" set ref 190* 197* 204* 212* 222* 245* 258* 265* 291* 296* 317* 382* 396* 407* 431* 460* 496* 504* 538* 543* 550* 560* 569* 577* 612* 623* 630* 634* 637* 641* 680* 685* 711* 717* 783* 818* 824* 827* 858* 861* 872* 876* 881* 1091* 1104* 1151* 1189* 1418* 1425* 1429* 1436* 1438* 1446* 1511* 1515* 1521* 1525* 1526* 1537* 1548* 1555* 1563* 1572* 1590* 1607* 1640* 1652* 1669* nchan 000100 automatic fixed bin(17,0) dcl 1000 set ref 1006* 1019* 1019 1044* 1044 1054 net_event_message based structure level 1 dcl 12-22 set ref 435* 442 net_event_message_arg 000270 automatic fixed bin(71,0) dcl 12-19 set ref 435 437 438 439 440 442 network_type 0(24) based fixed bin(4,0) level 2 packed packed unsigned unaligned dcl 12-22 set ref 438* new_mpx_type 000157 automatic fixed bin(17,0) dcl 74 set ref 250 1128* 1145* next 10 based pointer level 2 dcl 96 set ref 646 650* 1613 next_sister 134 based fixed bin(17,0) level 3 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" ref 1330 1371 next_sister 1654 based fixed bin(17,0) array level 4 in structure "cdt" packed packed unaligned dcl 4-44 in procedure "multiplexer_mgr_" set ref 300 329 347 454 731 934 990 1226 1262 1673 no_channels based fixed bin(17,0) level 2 dcl 11-10 set ref 355 1212* 1221 1538 null builtin function dcl 149 ref 179 243 295 295 355 371 485 527 596 643 670 748 780 780 1010 1048 1089 1096 1101 1101 1148 1173 1173 1187 1345 1412 1415 1415 1423 1423 1434 1519 1519 1538 1585 1594 1602 1632 1683 1700 1703 origin 5 000210 automatic structure level 2 dcl 90 p 000110 automatic pointer dcl 1303 in procedure "update_cdt" set ref 1365* 1366* 1367 p parameter pointer dcl 1204 in procedure "find_subchannels" set ref 1197 1212* 1224 1225 p 000166 automatic pointer dcl 78 in procedure "multiplexer_mgr_" set ref 424* 425 425 p parameter pointer dcl 1064 in procedure "mpxe_init" ref 1061 1066 1067 1068 1069 1070 1071 1072 1073 1074 parent_state 000164 automatic fixed bin(17,0) dcl 76 set ref 202 1281* 1286* 1288* phcs_$get_devx 000046 constant entry external dcl 125 ref 255 387 566 620 phcs_$tty_control 000050 constant entry external dcl 126 ref 780 pname parameter char(32) dcl 1544 set ref 1542 1548* 1552 1555* 1559 1563* proc_name 000210 constant char(16) initial packed unaligned dcl 110 ref 1189 process 111 based pointer level 2 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" set ref 1345* process 111 based pointer level 2 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" set ref 1048* px parameter fixed bin(17,0) dcl 1546 set ref 1542 1548* 1552 1555* 1559 1563* rank builtin function dcl 149 ref 915 954 954 1286 1286 1479 1490 1502 1502 1650 recent_wakeup_count 127 based fixed bin(17,0) level 2 dcl 4-72 set ref 1052* recent_wakeup_time 130 based fixed bin(71,0) level 2 dcl 4-72 set ref 1051* retry_load 15(03) based bit(1) level 3 packed packed unaligned dcl 4-221 set ref 351* 512* 834 ring 5(18) 000210 automatic fixed bin(17,0) level 3 packed packed unaligned dcl 90 set ref 445* rtrim builtin function dcl 149 ref 1123 1139 1170 sc_stat_$Go_typed 000124 external static bit(1) dcl 13-62 ref 1582 sc_stat_$Multics_typed 000126 external static bit(1) dcl 13-62 ref 1582 sc_stat_$sysdir 000122 external static char(168) packed unaligned dcl 13-21 set ref 1443* segname 000111 automatic char(32) packed unaligned dcl 1165 set ref 1171* 1173* sender 4 000210 automatic bit(36) level 2 dcl 90 set ref 443* service_type 32(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "multiplexer_mgr_" ref 1034 service_type 32(18) based fixed bin(17,0) level 2 in structure "L_CDTE" packed packed unaligned dcl 1302 in procedure "update_cdt" ref 1342 1350 1358 1362 service_type 4 based fixed bin(17,0) level 2 in structure "fnpe" dcl 4-200 in procedure "multiplexer_mgr_" ref 1018 shutdown_dump 000170 automatic bit(1) dcl 79 set ref 473* 479* 514* smlep 000172 automatic pointer dcl 80 set ref 642* 643 644 646* 646 648* 649 650 651 1599* 1602 1603 1613* 1613 spare_channel_count 55 based fixed bin(17,0) level 2 dcl 4-44 ref 1054 state 64 based fixed bin(17,0) level 3 in structure "fnpe" dcl 4-200 in procedure "multiplexer_mgr_" set ref 1121 state based fixed bin(17,0) level 2 in structure "mpxe" dcl 4-221 in procedure "multiplexer_mgr_" set ref 210 230 307* 316* 385 385 394* 425 425 541 541 548 558 618 637 683 754 775* 816 830* 912 929 954 985 1012 1066* 1648 1648 1666 static_cdtp 000010 internal static pointer initial dcl 102 set ref 178 370 484 526 593 668 746 766 807 848 899 948 1412* 1439* 1454* 1585 1587 1594 1625 1632 1635 1682* 1683* 1702 status_code 104 based fixed bin(35,0) level 3 dcl 14-7 set ref 1103 1418* 1425* 1430 1521* 1526* stop_mpx_list_entry based structure level 1 dcl 96 set ref 648 stop_mpx_list_ptr_ 000016 external static pointer initial dcl 106 set ref 642 650 651* 1599 sub_err_ 000072 constant entry external dcl 135 ref 1023 1055 1582 sub_error_ 000000 stack reference condition dcl 147 ref 1099 1413 1421 1517 sub_error_info based structure level 1 dcl 14-7 sub_error_info_ptr 000272 automatic pointer dcl 14-6 set ref 1102* 1103 1104 1416* 1417 1418 1418 1424* 1425 1425 1427 1430 1520* 1521 1521 1523 1526 1526 substr builtin function dcl 149 ref 915 954 954 1286 1286 1479 1490 1502 1502 1650 sys_log_ 000074 constant entry external dcl 136 ref 190 197 204 212 222 245 291 296 382 496 504 538 543 550 560 612 634 637 641 680 685 720 783 818 824 858 872 876 881 1091 1104 1151 1429 1436 1438 1511 1515 1525 1537 1548 1555 1563 1572 1590 1640 sys_log_$error_log 000076 constant entry external dcl 137 ref 258 265 317 396 407 431 460 569 577 623 630 711 717 827 861 1418 1425 1446 1521 1526 1607 1621 1652 1669 tablex parameter fixed bin(17,0) dcl 1085 set ref 1082 1108* 1118 1135 thread_trouble_count 000176 automatic fixed bin(17,0) dcl 83 set ref 1188* 1508 1516* 1688* threads 1654 based structure array level 3 in structure "cdt" dcl 4-44 in procedure "multiplexer_mgr_" set ref 1277 threads 224 based structure array level 3 in structure "cdt" dcl 4-44 in procedure "multiplexer_mgr_" set ref 1275 threads 134 based structure level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" threads 134 based structure level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" threads 104 based structure level 2 in structure "fnpe" dcl 4-200 in procedure "multiplexer_mgr_" threads 56 based structure level 2 in structure "cdt" dcl 4-44 in procedure "multiplexer_mgr_" time_initial_load 4 based fixed bin(71,0) level 2 dcl 4-221 set ref 777 777* 1068* time_last_crash 10 based fixed bin(71,0) level 2 dcl 4-221 set ref 857* 866 1070* time_last_load 6 based fixed bin(71,0) level 2 dcl 4-221 set ref 776* 777 866 1069* time_load_start 12 based fixed bin(71,0) level 2 dcl 4-221 set ref 308* 1071* top_mpxep 000252 automatic pointer dcl 663 set ref 696* 734 tp 000330 automatic pointer dcl 1273 set ref 1275* 1277* 1279 1286 1286 1286 1288 twx 76 based fixed bin(17,0) level 2 in structure "L_CDTE" dcl 1302 in procedure "update_cdt" set ref 1326* 1343* twx 76 based fixed bin(17,0) level 2 in structure "cdte" dcl 4-72 in procedure "multiplexer_mgr_" set ref 290* 291 295* 326 326* 328* 345* 428 430* 439 451* 1047* type 0(28) based fixed bin(8,0) level 2 packed packed unsigned unaligned dcl 12-22 set ref 440* type_name 000100 automatic varying char(32) dcl 1164 set ref 1170* 1171 1172 unspec builtin function dcl 149 set ref 435* 442* 442 up_time 000174 automatic fixed bin(17,0) dcl 81 set ref 866* 881 888 user_name 137 based structure level 2 packed packed unaligned dcl 4-72 set ref 1035* version based bit(2) level 2 packed packed unaligned dcl 12-22 set ref 437* wakeup_handler 75(20) based bit(1) level 3 packed packed unaligned dcl 4-72 ref 447 x 000104 automatic fixed bin(17,0) dcl 1241 in procedure "count_mpx_users" set ref 1250* 1250* 1253 1253* 1255 1257* 1260 1260* 1262 x 000101 automatic fixed bin(17,0) dcl 1298 in procedure "update_cdt" set ref 1310* 1311 1313 1315* 1323* 1329 1330* 1369* 1371* x 000102 automatic fixed bin(17,0) dcl 968 in procedure "go_on_down" set ref 976* 976* 977 979* 990 x 000200 automatic fixed bin(17,0) dcl 85 in procedure "multiplexer_mgr_" set ref 282* 282* 285 286* 300 321* 321* 323 324* 329 340* 340* 341 343* 347 416* 416* 418 420* 454 700* 700* 701 703* 731 923* 923* 924 926* 934 1660* 1660* 1661 1663* 1673 x 000320 automatic fixed bin(17,0) dcl 1203 in procedure "find_subchannels" set ref 1215* 1215* 1217 1222* 1224* 1226 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTIVE_VALUES internal static char(18) initial array dcl 8-86 CDT_version internal static fixed bin(17,0) initial dcl 4-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 4-38 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 4-259 DN355 internal static fixed bin(17,0) initial dcl 5-19 DN6600 internal static fixed bin(17,0) initial dcl 5-19 DN6670 internal static fixed bin(17,0) initial dcl 5-19 DN7100 internal static fixed bin(17,0) initial dcl 5-19 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 12-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 12-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 12-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 12-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 12-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 12-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 12-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 12-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 12-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 12-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 12-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 12-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 12-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 12-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 12-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 12-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 12-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 12-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 12-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 12-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 12-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 12-99 FNP_BOOT internal static fixed bin(17,0) initial dcl 4-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 4-298 FNP_FREE internal static fixed bin(17,0) initial dcl 4-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 4-298 FNP_UP internal static fixed bin(17,0) initial dcl 4-298 HASP_MPX internal static fixed bin(17,0) initial dcl 10-16 IBM3270_MPX internal static fixed bin(17,0) initial dcl 10-16 LAP_MPX internal static fixed bin(17,0) initial dcl 10-16 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 12-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 12-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 12-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 12-50 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 12-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 12-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 12-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 12-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 12-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 12-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 12-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 12-36 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 12-38 NOW_DIALED internal static fixed bin(17,0) initial dcl 8-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 8-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 8-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 8-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 8-76 NOW_LOGGED_IN internal static fixed bin(17,0) initial dcl 8-76 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 8-142 PROTOCOL_MPX internal static fixed bin(17,0) initial dcl 10-16 PT_ALARM internal static fixed bin(17,0) initial dcl 8-106 PT_BUMP internal static fixed bin(17,0) initial dcl 8-106 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 8-106 PT_DETACH internal static fixed bin(17,0) initial dcl 8-106 PT_FPE internal static fixed bin(17,0) initial dcl 8-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 8-106 PT_LOGOUT internal static fixed bin(17,0) initial dcl 8-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 8-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 8-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 8-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 8-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 8-106 STATE_VALUES internal static char(15) initial array dcl 8-70 STY_MPX internal static fixed bin(17,0) initial dcl 10-16 SYSTEM1_MPX internal static fixed bin(17,0) initial dcl 10-16 SYSTEM2_MPX internal static fixed bin(17,0) initial dcl 10-16 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 8-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 8-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 8-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 8-93 TAG_UFT internal static char(1) initial packed unaligned dcl 8-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 4-259 TRA_VEC_VALUES internal static char(32) initial array dcl 8-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 8-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 8-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 8-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 8-64 TTY_MPX internal static fixed bin(17,0) initial dcl 10-16 UNCP_MPX internal static fixed bin(17,0) initial dcl 10-16 USER1_MPX internal static fixed bin(17,0) initial dcl 10-16 USER2_MPX internal static fixed bin(17,0) initial dcl 10-16 USER3_MPX internal static fixed bin(17,0) initial dcl 10-16 USER4_MPX internal static fixed bin(17,0) initial dcl 10-16 USER5_MPX internal static fixed bin(17,0) initial dcl 10-16 VIP7760_MPX internal static fixed bin(17,0) initial dcl 10-16 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 8-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 8-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 8-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 8-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 8-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 8-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 8-25 X25_MPX internal static fixed bin(17,0) initial dcl 10-16 as_data_$BS external static char(1) dcl 1-21 as_data_$CR external static char(1) dcl 1-22 as_data_$abs_dim external static char(32) packed unaligned dcl 1-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 1-24 as_data_$acsdir external static char(168) packed unaligned dcl 1-25 as_data_$ansp external static pointer dcl 1-26 as_data_$as_procid external static bit(36) dcl 1-27 as_data_$as_ring external static fixed bin(3,0) dcl 1-28 as_data_$as_tty automatic char(6) packed unaligned dcl 1-29 as_data_$asmtp external static pointer dcl 1-30 as_data_$autp external static pointer dcl 1-31 as_data_$buzzardp external static pointer dcl 1-32 as_data_$cdtp external static pointer dcl 1-33 as_data_$debug_flag external static bit(1) dcl 1-84 as_data_$default_weight external static fixed bin(35,0) dcl 1-34 as_data_$devtabp external static pointer dcl 1-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 1-36 as_data_$dutp external static pointer dcl 1-37 as_data_$g115_dim external static char(32) packed unaligned dcl 1-38 as_data_$login_args external static structure level 1 dcl 1-62 as_data_$login_words external static fixed bin(17,0) dcl 1-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 1-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 1-87 as_data_$ls_message_buffer_ptr external static pointer dcl 1-88 as_data_$ls_request_server_info_ptr external static pointer dcl 1-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 1-41 as_data_$mgtp external static pointer dcl 1-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 1-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 1-44 as_data_$pdtdir external static char(168) packed unaligned dcl 1-45 as_data_$pit_ptr external static pointer dcl 1-46 as_data_$rcpdir external static char(168) packed unaligned dcl 1-47 as_data_$request_priority external static fixed bin(17,0) dcl 1-48 as_data_$rs_ptrs external static pointer array dcl 1-49 as_data_$rtdtp external static pointer dcl 1-50 as_data_$sat_htp external static pointer dcl 1-51 as_data_$satp external static pointer dcl 1-52 as_data_$signal_types external static structure level 1 dcl 1-67 as_data_$suffix external static char(2) array packed unaligned dcl 1-53 as_data_$sysdir external static char(168) packed unaligned dcl 1-54 as_data_$system_signal_types external static structure level 1 dcl 1-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 1-55 as_data_$terminet_tabs_string external static varying char(144) dcl 1-56 as_data_$tty_dim external static char(32) packed unaligned dcl 1-57 as_data_$update_priority external static fixed bin(17,0) dcl 1-58 as_data_$version external static char(8) packed unaligned dcl 1-59 as_data_$whoptr external static pointer dcl 1-60 as_data_login_words based structure level 1 dcl 1-77 condition_info_header_ptr automatic pointer dcl 7-4 condition_info_ptr automatic pointer dcl 6-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 6-30 event_call_info_ptr automatic pointer dcl 9-5 fnp_models internal static fixed bin(17,0) initial array dcl 5-28 fnp_types internal static char(8) initial array packed unaligned dcl 5-25 generic_destination based char(32) packed unaligned dcl 4-195 mpx_special_lock internal static bit(1) initial array packed unaligned dcl 10-40 sc_stat_$Go external static bit(1) dcl 13-62 sc_stat_$Multics external static bit(1) dcl 13-62 sc_stat_$Star_typed external static bit(1) dcl 13-62 sc_stat_$admin_listener_exit_label external static label variable dcl 13-34 sc_stat_$admin_listener_switch external static bit(1) dcl 13-62 sc_stat_$admin_log_iocb external static pointer dcl 13-45 sc_stat_$admin_log_write_ptr external static pointer dcl 13-45 sc_stat_$admin_sci_ptr external static pointer dcl 13-45 sc_stat_$as_log_write_ptr external static pointer dcl 13-45 sc_stat_$did_part1 external static bit(1) dcl 13-62 sc_stat_$did_part2 external static bit(1) dcl 13-62 sc_stat_$did_part3 external static bit(1) dcl 13-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 13-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$initzer_ttyp external static pointer dcl 13-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$master_abort_label external static label variable dcl 13-34 sc_stat_$master_channel external static char(6) dcl 13-29 sc_stat_$master_iocb external static pointer dcl 13-45 sc_stat_$master_sci_ptr external static pointer dcl 13-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$mc_ansp external static pointer dcl 13-45 sc_stat_$mc_iocb external static pointer dcl 13-45 sc_stat_$mc_is_on external static bit(1) dcl 13-62 sc_stat_$no_operator_login external static bit(1) dcl 13-62 sc_stat_$shutdown_typed external static bit(1) dcl 13-62 sc_stat_$sv1_iocb external static pointer dcl 13-45 sc_stat_$sv2_iocb external static pointer dcl 13-45 sc_stat_$sv3_iocb external static pointer dcl 13-45 sc_stat_$system_shutdown_label external static label variable dcl 13-34 sc_stat_$test_mode external static bit(1) dcl 13-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 13-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 13-62 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 14-13 supported_fnp internal static bit(1) initial array packed unaligned dcl 5-31 sys_info$max_seg_size external static fixed bin(19,0) dcl 145 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_COUNT 011754 constant label dcl 1720 ref 1708 CDT_THREAD_DAMAGE 015203 constant entry internal dcl 1462 ref 286 324 343 420 703 926 979 1222 1253 1315 1663 CDT_THREAD_DAMAGE$$BRIEF 015575 constant entry internal dcl 1505 ref 1105 CDT_THREAD_DAMAGE$$DAUGHTERS 015461 constant entry internal dcl 1494 ref 1401 CDT_THREAD_DAMAGE$$TOO_FEW_DAUGHTERS 015344 constant entry internal dcl 1483 ref 302 330 348 456 935 991 1227 1263 1674 CONSIDER_EACH 014117 constant label dcl 1311 ERROR_EARLY_CALL 010632 constant label dcl 1570 ref 179 371 485 527 670 748 E_COMMON 015602 constant label dcl 1508 ref 1481 1492 GIVE_UP 015126 constant label dcl 1446 ref 1434 GIVE_UP_SHUT 011607 constant label dcl 1678 ref 1686 INIT_RE_STOP_MPX 011047 constant label dcl 1605 ref 1604 NON_DELETED 014226 constant label dcl 1336 RETURN 010665 constant label dcl 1576 in procedure "multiplexer_mgr_" ref 1513 1529 RETURN 015201 constant label dcl 1455 in procedure "get_cdt_ptr" ref 1431 RE_DUMP_MPX 004604 constant label dcl 481 ref 487 RE_LISTEN_MPX 006225 constant label dcl 666 ref 669 RE_LOAD_MPX 002067 constant label dcl 176 ref 181 RE_MPX_CRASHED 007631 constant label dcl 846 ref 849 RE_MPX_LOADED 007066 constant label dcl 764 ref 767 RE_MPX_LOAD_FAILED 007322 constant label dcl 805 ref 808 RE_SHUT 011625 constant label dcl 1686 ref 1638 RE_SHUTDOWN_MPX 003613 constant label dcl 368 ref 373 RE_START_MPX 005057 constant label dcl 524 ref 529 RE_STATE_MPX 006767 constant label dcl 744 ref 747 RE_STOP_MPX 005533 constant label dcl 591 ref 594 RE_SYSTEM_INIT 010243 constant label dcl 899 ref 902 SHUTDOWN_DUMP_COMMON 004604 constant label dcl 481 ref 474 SHUTDOWN_MPX_LOOP 004144 constant label dcl 416 SKIP 012337 constant label dcl 1029 ref 1023 bad_mpx_name 013131 constant label dcl 1151 ref 1121 1132 1137 build_entvar 013175 constant entry internal dcl 1159 ref 311 405 check_parent_state 013761 constant entry internal dcl 1269 ref 194 count_mpx_users 013577 constant entry internal dcl 1234 in procedure "multiplexer_mgr_" ref 219 501 1257 1717 count_mpx_users 011637 constant entry external dcl 1693 dump_mpx 004554 constant entry external dcl 476 end_early_stop_mpx 006172 constant label dcl 652 ref 644 error_few 016250 constant entry internal dcl 1552 ref 1486 1488 1490 error_many 016165 constant entry internal dcl 1542 ref 1474 1477 1479 error_none 016325 constant entry internal dcl 1559 ref 1497 1500 1502 find_subchannels 013435 constant entry internal dcl 1197 ref 242 get_cdt_ptr 014470 constant entry internal dcl 1405 ref 598 1596 go_on_down 012006 constant entry internal dcl 962 ref 956 959 988 init 010672 constant entry external dcl 1580 init_cdt 012175 constant entry internal dcl 997 ref 1451 listen_mpx 006176 constant entry external dcl 660 ref 794 954 985 load_mpx 002041 constant entry external dcl 172 ref 727 834 886 916 931 load_mpx_return 003545 constant label dcl 355 ref 247 259 267 335 mpx_crashed 007602 constant entry external dcl 842 mpx_load_failed 007274 constant entry external dcl 801 mpx_loaded 007037 constant entry external dcl 760 mpxe_init 012441 constant entry internal dcl 1061 ref 1014 1040 1366 multiplexer_mgr_ 001741 constant entry external dcl 48 set_entry_name 013372 constant entry internal dcl 1182 ref 157 175 367 472 480 523 590 665 743 763 804 845 898 947 1584 1637 1696 set_loud 011761 constant entry external dcl 1726 set_quiet 011774 constant entry external dcl 1732 shut 011216 constant entry external dcl 1629 ref 1591 shutdown_mpx 003565 constant entry external dcl 364 ref 232 425 514 826 860 1651 1668 shutdown_mpx_command 004521 constant entry external dcl 469 start_mpx 005026 constant entry external dcl 520 ref 786 state_mpx 006741 constant entry external dcl 740 ref 1286 1288 stop_mpx 005507 constant entry external dcl 587 system_go 010516 constant entry external dcl 944 system_init 010223 constant entry external dcl 895 test_update_mpx 001754 constant entry external dcl 153 thread_start 014372 constant entry internal dcl 1378 ref 274 411 698 921 971 1207 1245 1305 1658 update_cdt 014071 constant entry internal dcl 1294 ref 167 240 1323 1369 validate_mpx_name 012477 constant entry internal dcl 1082 ref 160 183 375 489 531 605 673 751 768 809 850 1605 1710 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 17642 20004 16514 17652 Length 20756 16514 142 736 1125 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME multiplexer_mgr_ 402 external procedure is an external procedure. begin block on line 277 148 begin block uses auto adjustable storage. go_on_down 89 internal procedure calls itself recursively. init_cdt 80 internal procedure enables or reverts conditions. on unit on line 1023 64 on unit mpxe_init 64 internal procedure is called by several nonquick procedures. validate_mpx_name 166 internal procedure enables or reverts conditions. on unit on line 1099 100 on unit build_entvar 116 internal procedure is called by several nonquick procedures. set_entry_name internal procedure shares stack frame of external procedure multiplexer_mgr_. find_subchannels internal procedure shares stack frame of external procedure multiplexer_mgr_. count_mpx_users 82 internal procedure calls itself recursively. check_parent_state internal procedure shares stack frame of external procedure multiplexer_mgr_. update_cdt 100 internal procedure calls itself recursively. thread_start 72 internal procedure is called by several nonquick procedures. get_cdt_ptr 106 internal procedure enables or reverts conditions. on unit on line 1413 106 on unit enables or reverts conditions. on unit on line 1421 100 on unit CDT_THREAD_DAMAGE 186 internal procedure enables or reverts conditions. on unit on line 1517 100 on unit error_many internal procedure shares stack frame of internal procedure CDT_THREAD_DAMAGE. begin block on line 1570 begin block shares stack frame of external procedure multiplexer_mgr_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_cdtp multiplexer_mgr_ 000012 mpx_areap multiplexer_mgr_ 000014 loud multiplexer_mgr_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 277 000100 cdt_list begin block on line 277 build_entvar 000100 type_name build_entvar 000111 segname build_entvar 000121 entname build_entvar count_mpx_users 000100 j count_mpx_users 000101 firstx count_mpx_users 000102 d_limit count_mpx_users 000103 check_count count_mpx_users 000104 x count_mpx_users go_on_down 000100 d_limit go_on_down 000101 firstx go_on_down 000102 x go_on_down 000103 check_count go_on_down init_cdt 000100 nchan init_cdt 000101 i init_cdt multiplexer_mgr_ 000100 code multiplexer_mgr_ 000101 i multiplexer_mgr_ 000102 mpx_name multiplexer_mgr_ 000112 mpx_cdtep multiplexer_mgr_ 000114 mpx_display_name multiplexer_mgr_ 000135 name multiplexer_mgr_ 000155 n_users multiplexer_mgr_ 000156 devx multiplexer_mgr_ 000157 new_mpx_type multiplexer_mgr_ 000160 entvar multiplexer_mgr_ 000164 parent_state multiplexer_mgr_ 000165 fnp_only multiplexer_mgr_ 000166 p multiplexer_mgr_ 000170 shutdown_dump multiplexer_mgr_ 000172 smlep multiplexer_mgr_ 000174 up_time multiplexer_mgr_ 000175 mpx_was_up multiplexer_mgr_ 000176 thread_trouble_count multiplexer_mgr_ 000177 muxx multiplexer_mgr_ 000200 x multiplexer_mgr_ 000201 firstx multiplexer_mgr_ 000202 d_limit multiplexer_mgr_ 000204 BAD_THREADS_LABEL multiplexer_mgr_ 000210 ev_msg multiplexer_mgr_ 000220 auto_condition_info multiplexer_mgr_ 000252 top_mpxep multiplexer_mgr_ 000254 cdtp multiplexer_mgr_ 000256 cdtep multiplexer_mgr_ 000260 fnpep multiplexer_mgr_ 000262 mpxep multiplexer_mgr_ 000264 miip multiplexer_mgr_ 000266 mii_chan_count multiplexer_mgr_ 000270 net_event_message_arg multiplexer_mgr_ 000272 sub_error_info_ptr multiplexer_mgr_ 000316 firstx find_subchannels 000317 d_limit find_subchannels 000320 x find_subchannels 000321 check_count find_subchannels 000330 tp check_parent_state update_cdt 000100 dx update_cdt 000101 x update_cdt 000102 firstx update_cdt 000103 d_limit update_cdt 000104 check_count update_cdt 000106 local_cdtep update_cdt 000110 p update_cdt validate_mpx_name 000100 fnp_sw validate_mpx_name 000101 msg validate_mpx_name THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ent_var_desc call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other begin_return_mac return_mac tra_ext_1 tra_ext_2 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc divide_fx3 op_alloc_ alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. asu_$asu_listen asu_$attach_channel asu_$channel_in_use cdt_mgr_$find_cdt_channel cdt_mgr_$init cdt_mgr_$shut cdt_mgr_$thread cdt_mgr_$thread cdt_mgr_$thread_out_cdt_channel dialup_$simulated_wakeup find_condition_info_ get_process_id_ get_system_free_area_ hcs_$make_entry hphcs_$init_channel hphcs_$init_multiplexer hphcs_$lct_init hphcs_$shutdown_multiplexer hphcs_$start_multiplexer hphcs_$stop_multiplexer hphcs_$terminate_channel hphcs_$terminate_multiplexer iox_$err_no_operation mc_commands_$listen_to_ttys mc_commands_$remove_tty mc_tty_$simulated_wakeup phcs_$get_devx phcs_$tty_control sub_err_ sys_log_ sys_log_$error_log THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$lct_initialized as_data_$lct_size as_error_table_$cdt_rethreading_error as_error_table_$repeated_cdt_damage error_table_$action_not_performed error_table_$null_info_ptr error_table_$out_of_sequence sc_stat_$Go_typed sc_stat_$Multics_typed sc_stat_$sysdir stop_mpx_list_ptr_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 77 001735 48 001740 153 001747 157 001773 158 002002 159 002010 160 002013 161 002021 163 002023 164 002024 167 002025 168 002033 172 002034 175 002062 176 002067 178 002075 179 002100 181 002110 183 002113 184 002121 186 002123 187 002124 190 002125 194 002174 195 002176 197 002200 199 002232 200 002235 202 002236 204 002241 206 002273 207 002276 210 002277 212 002302 213 002334 214 002337 217 002340 219 002343 220 002353 222 002355 225 002430 226 002433 230 002434 232 002437 233 002461 235 002463 236 002464 240 002465 242 002473 243 002475 245 002501 246 002533 247 002536 250 002537 252 002542 253 002544 255 002552 256 002573 258 002575 259 002633 262 002634 263 002652 265 002654 266 002712 267 002715 274 002716 276 002730 277 002731 278 002734 282 002743 283 002751 285 002752 286 002757 289 003005 290 003012 291 003016 293 003052 295 003056 296 003073 300 003135 302 003145 305 003161 306 003170 307 003171 308 003173 309 003175 311 003177 312 003212 313 003250 314 003251 316 003253 317 003255 320 003320 321 003321 322 003326 323 003327 324 003333 326 003360 328 003400 329 003402 330 003411 333 003424 334 003435 335 003440 339 003441 340 003442 341 003446 342 003452 343 003453 345 003500 347 003506 348 003515 351 003530 355 003545 358 003556 359 003560 364 003561 367 003604 368 003613 370 003621 371 003624 373 003634 375 003637 376 003645 378 003647 379 003650 382 003651 385 003712 387 003717 388 003740 390 003742 391 003743 394 003744 395 003746 396 003757 398 004017 399 004021 401 004022 403 004023 405 004027 406 004041 407 004064 411 004127 413 004141 415 004143 416 004144 418 004150 419 004154 420 004155 422 004202 424 004207 425 004211 427 004243 428 004244 430 004246 431 004257 433 004321 435 004324 437 004326 438 004332 439 004336 440 004341 441 004345 442 004347 443 004351 444 004362 445 004364 446 004366 447 004370 449 004405 451 004416 454 004420 456 004427 459 004442 460 004453 463 004514 465 004516 469 004517 472 004542 473 004550 474 004551 476 004552 479 004575 480 004577 481 004604 484 004612 485 004615 487 004625 489 004630 490 004636 492 004640 493 004641 496 004642 499 004702 501 004705 502 004715 504 004717 507 004772 508 004775 512 004776 514 005001 515 005021 516 005023 520 005024 523 005047 524 005057 526 005065 527 005070 529 005100 531 005103 532 005111 534 005113 535 005114 538 005115 541 005155 543 005162 544 005214 545 005217 548 005220 550 005234 551 005266 552 005271 555 005272 556 005275 558 005277 560 005302 562 005334 563 005337 566 005340 567 005361 569 005363 570 005421 571 005423 574 005424 575 005435 577 005437 578 005476 579 005500 582 005501 583 005502 587 005503 590 005526 591 005533 593 005541 594 005544 596 005547 598 005553 599 005561 602 005563 605 005571 606 005577 608 005601 609 005602 612 005603 615 005640 616 005643 618 005645 620 005650 621 005671 623 005673 624 005731 625 005733 627 005734 628 005745 630 005747 631 006010 632 006012 634 006013 635 006045 637 006046 641 006103 642 006135 643 006141 644 006146 646 006153 647 006155 648 006156 649 006162 650 006165 651 006171 654 006172 655 006173 660 006174 665 006215 666 006225 668 006233 669 006236 670 006241 673 006251 674 006257 676 006261 677 006262 680 006263 683 006317 685 006322 686 006354 687 006357 690 006360 692 006364 693 006365 696 006366 698 006367 699 006401 700 006402 701 006406 702 006412 703 006413 705 006440 707 006442 710 006456 711 006467 714 006532 716 006533 717 006544 720 006610 724 006640 726 006645 727 006647 731 006710 733 006717 734 006730 735 006733 736 006734 740 006735 743 006760 744 006767 746 006775 747 007000 748 007003 751 007013 752 007021 754 007027 755 007032 756 007034 760 007035 763 007056 764 007066 766 007074 767 007077 768 007102 769 007110 771 007112 772 007113 775 007114 776 007116 777 007121 780 007125 783 007161 786 007215 788 007243 790 007245 791 007246 794 007247 796 007267 797 007271 801 007272 804 007313 805 007322 807 007330 808 007333 809 007336 810 007344 812 007346 813 007347 816 007350 818 007353 819 007405 820 007410 824 007411 826 007445 827 007467 830 007527 834 007531 837 007576 838 007577 842 007600 845 007621 846 007631 848 007637 849 007642 850 007645 851 007653 853 007655 854 007656 857 007657 858 007662 860 007716 861 007737 866 010002 868 010011 870 010012 872 010016 876 010054 881 010112 886 010156 888 010212 889 010215 890 010217 895 010220 898 010234 899 010243 901 010246 902 010247 904 010252 905 010255 909 010257 910 010265 911 010271 912 010273 915 010301 916 010307 919 010343 921 010345 922 010360 923 010361 924 010366 925 010372 926 010373 928 010420 929 010423 931 010431 934 010471 935 010500 937 010514 944 010515 947 010524 948 010534 950 010537 951 010542 952 010547 953 010553 954 010555 956 010603 958 010620 959 010622 960 010631 1572 010632 1573 010660 1574 010663 1576 010665 1580 010666 1582 010705 1584 010737 1585 010744 1587 010751 1588 010753 1590 010757 1591 011004 1594 011010 1596 011015 1597 011023 1599 011025 1600 011031 1602 011033 1603 011040 1604 011044 1605 011047 1607 011055 1610 011116 1611 011121 1613 011123 1614 011126 1617 011127 1619 011132 1621 011142 1623 011205 1625 011210 1626 011213 1627 011214 1629 011215 1632 011224 1635 011231 1637 011233 1638 011240 1640 011243 1645 011273 1646 011301 1647 011305 1648 011307 1650 011314 1651 011322 1652 011344 1656 011406 1658 011410 1659 011423 1660 011424 1661 011430 1662 011434 1663 011435 1665 011462 1666 011465 1668 011473 1669 011521 1673 011564 1674 011573 1678 011607 1682 011612 1683 011621 1684 011624 1686 011625 1688 011630 1693 011631 1696 011660 1698 011667 1699 011675 1700 011676 1702 011706 1703 011711 1705 011721 1706 011724 1708 011725 1710 011730 1711 011736 1713 011740 1714 011741 1717 011742 1718 011753 1720 011754 1722 011757 1726 011760 1729 011767 1730 011772 1732 011773 1735 012002 1736 012004 962 012005 971 012013 972 012027 975 012031 976 012032 977 012036 978 012044 979 012045 982 012075 984 012103 985 012105 988 012130 990 012145 991 012155 993 012173 997 012174 1003 012202 1004 012204 1006 012212 1007 012213 1008 012221 1009 012227 1010 012231 1011 012233 1012 012235 1014 012237 1015 012246 1017 012254 1018 012257 1019 012261 1021 012262 1023 012264 1024 012303 1025 012315 1026 012323 1028 012326 1029 012337 1032 012342 1034 012345 1035 012351 1036 012361 1037 012363 1039 012367 1040 012371 1041 012400 1042 012406 1044 012412 1046 012413 1047 012416 1048 012417 1049 012421 1050 012422 1051 012424 1052 012425 1053 012426 1054 012430 1055 012436 1056 012437 1061 012440 1066 012446 1067 012452 1068 012454 1069 012456 1070 012457 1071 012460 1072 012461 1073 012462 1074 012463 1076 012475 1082 012476 1089 012504 1091 012511 1092 012542 1093 012546 1096 012547 1099 012561 1101 012575 1102 012616 1103 012624 1104 012627 1105 012665 1106 012672 1108 012673 1110 012714 1112 012717 1113 012724 1116 012725 1118 012730 1119 012736 1120 012740 1121 012745 1123 012747 1125 013001 1126 013003 1128 013010 1129 013012 1131 013013 1132 013020 1135 013033 1136 013041 1137 013046 1139 013052 1140 013104 1141 013107 1142 013111 1145 013120 1148 013124 1149 013127 1150 013130 1151 013131 1153 013167 1154 013173 1159 013174 1167 013210 1168 013215 1170 013223 1171 013253 1172 013301 1173 013334 1174 013366 1177 013371 1182 013372 1187 013403 1188 013405 1189 013406 1190 013433 1197 013435 1207 013437 1208 013451 1211 013454 1212 013455 1214 013470 1215 013471 1216 013476 1217 013477 1221 013515 1222 013522 1224 013535 1225 013553 1226 013554 1227 013561 1230 013575 1234 013576 1244 013604 1245 013606 1246 013621 1249 013623 1250 013624 1252 013630 1253 013631 1255 013664 1257 013675 1258 013706 1259 013711 1260 013712 1262 013733 1263 013743 1265 013760 1269 013761 1275 013763 1277 013773 1279 013777 1281 014004 1282 014006 1283 014007 1286 014010 1288 014041 1290 014067 1294 014070 1305 014076 1306 014112 1309 014114 1310 014115 1311 014117 1313 014122 1314 014127 1315 014130 1319 014157 1323 014164 1325 014200 1326 014202 1327 014204 1329 014206 1330 014210 1332 014213 1334 014225 1339 014226 1341 014230 1342 014232 1343 014236 1344 014237 1345 014241 1346 014243 1347 014244 1348 014245 1350 014253 1354 014307 1356 014310 1358 014312 1362 014322 1363 014326 1365 014332 1366 014334 1367 014343 1369 014350 1371 014363 1373 014367 1375 014370 1378 014371 1385 014377 1387 014402 1388 014411 1389 014417 1390 014420 1392 014421 1393 014427 1394 014435 1395 014436 1397 014437 1398 014444 1401 014450 1403 014466 1405 014467 1412 014475 1413 014501 1415 014515 1416 014536 1417 014544 1418 014547 1421 014605 1423 014621 1424 014643 1425 014653 1427 014712 1429 014721 1430 014747 1431 014760 1433 014763 1434 014764 1436 014775 1437 015027 1438 015043 1439 015072 1441 015077 1443 015100 1444 015123 1446 015126 1448 015162 1451 015163 1452 015172 1454 015175 1455 015201 1462 015202 1474 015213 1477 015244 1479 015276 1481 015342 1483 015343 1486 015354 1488 015376 1490 015422 1492 015457 1494 015460 1497 015471 1500 015515 1502 015543 1505 015573 1508 015602 1511 015605 1512 015633 1513 015637 1515 015642 1516 015670 1517 015673 1519 015707 1520 015730 1521 015736 1523 015775 1525 016003 1526 016031 1528 016075 1529 016102 1531 016105 1533 016106 1537 016121 1538 016150 1540 016162 1542 016165 1548 016171 1550 016247 1552 016250 1555 016254 1557 016324 1559 016325 1563 016331 1564 016400 ----------------------------------------------------------- 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