COMPILATION LISTING OF SEGMENT mc_wakeups_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1035.1 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 /* format: style4 */ 14 mc_wakeups_: procedure; 15 16 /* This procedure is part of the message coordinator. It receives 17* all wakeups handled by the message coordinator. 18* 19* The message coordinator was originally created by Dennis Capps 20* with help from TH VanVleck in October of 1972. 21* "mc_wakeups_" originally created by Bill Silver in May, 74. 22* Modified 751215 by PG to make any_other handler just return, and fix error handling 23* Modified June 1976 by Larry Johnson to use new ocdim_ alarm order call 24* Modified August 1976 by Robert Coren to use CDT entry for tty channels 25* Modified 770725 by PG to fix bug in folding of multi-line messages 26* Modified 25 Sept 1979 by T. Casey to allow setting of message limits. 27* Modified June 1981 by T. Casey for MR9.0 to add metering. 28* Modified 830620 by E. A. Ranzenbach for new console recovery scheme... 29* * 84-11-16, W. Olin Sibert: Modified to handle zero wakeup from 30* * ocdcm_ as signal to deactivate console recovery. 31* * 1985-01-02, BIM: new logging and other improvements. 32**/ 33 34 /****^ HISTORY COMMENTS: 35* 1) change(86-02-21,MSharpe), approve(87-06-12,MCR7690), 36* audit(87-05-07,Parisek), install(87-08-06,MR12.1-1054): 37* Modified to use new version of mc_anstbl.incl.pl1; Fixed bug in "router" 38* that lost stream.source when using the star_entry. 39* 2) change(87-02-05,GDixon), approve(87-06-12,MCR7690), 40* audit(87-05-07,Parisek), install(87-08-06,MR12.1-1054): 41* Modified for a change to mc_anstbl.incl.pl1. All entrypoints that refer 42* to mc_anstbl must now set the automatic variable mc_ansp from 43* mc_ansp_stat. 44* 3) change(87-09-17,Parisek), audit(87-09-21,GDixon), 45* approve(87-09-21,MECR0008), install(87-09-21,MR12.1-1114): 46* Return with error if status code equals error_table_$unable_to_do_io from 47* calling mrd_util_. This status code represents a condition error 48* signalled from mrd_util_. (phx20928) 49* END HISTORY COMMENTS */ 50 51 /* Declaration of Parameters */ 52 declare 53 arg_mc_ansp ptr, 54 arg_mcmp ptr, 55 arg_messp ptr, 56 arg_event_call_info_ptr ptr, 57 arg_temp_SDBp ptr; 58 59 /* Declarations of POINTERS */ 60 declare 61 buffer_ptr pointer, 62 log_buffer_ptr pointer, 63 tty_buffer_ptr pointer, 64 hismp ptr, /* to message seg of a source */ 65 linep ptr, /* to something in a device queue to be printed */ 66 mc_ansp_stat ptr int static init (null ()), /* to mc_anstbl */ 67 mcmp ptr int static init (null), /* to message seg for message coordinator */ 68 messp ptr int static init (null), /* to a particular message */ 69 mrtp ptr int static init (null), /* to Message Routing Table */ 70 qp ptr, /* to queue of lines to be typed on a device */ 71 streamp ptr, /* to a stream entry in MRT */ 72 temp_SDBp ptr int static init (null), /* to temp_SDB */ 73 vcep ptr, /* to an entry in virtual console table */ 74 vconsp ptr int static init (null); /* to Virtual CONSole table */ 75 76 /* Fixed binary quantities */ 77 declare 78 ackn fixed bin (71) init (0), /* event message for calls to hcs_$wakeup */ 79 code fixed bin (35), /* error code */ 80 dest fixed bin, /* Index when looping thru phys devices in vcons_tab */ 81 i fixed bin, /* a temporary index */ 82 k fixed bin, /* loop counter for protocol and router */ 83 last_line fixed bin, /* 1 link back in q of lines to be typed */ 84 limit fixed bin, /* No of lines typer_out will try to type */ 85 lng fixed bin, /* Length of formatted string for output */ 86 mrt_source fixed bin, /* Index of source entry in MRT */ 87 mrt_stream fixed bin, /* Index of stream entry in source entry in MRT */ 88 n fixed bin (21), /* No of characters to be typed */ 89 nt fixed bin (21), /* No of characters actually typed */ 90 offset fixed bin, /* No of characters already typed */ 91 this_line fixed bin, /* Current link in q of lines to be typed */ 92 ucs_recursion fixed bin initial (0), /* Recursion counter for any_other handler */ 93 vc fixed bin, /* Index when looping thru vcons in MRT */ 94 vce fixed bin, /* Index of Virtual Console table Entry */ 95 wait_time fixed bin (71) int static init (5), /* Settable time to wait til try to print some more */ 96 max_limit fixed bin int static init (20), /* settable number of messages to print before waiting */ 97 when_sent fixed bin (71); /* Postmark from each message. */ 98 declare log_buffer_length fixed bin (21); 99 declare state fixed bin; 100 101 /* Character strings */ 102 103 declare (buffer_space, 104 log_buffer_space) char (500) unaligned; 105 106 declare tty_buffer_space char (132) unaligned; 107 declare timestamp char (50) varying; 108 109 declare 110 buffer char (nt) based (buffer_ptr), 111 chain char (8), /* whence the message is to be taken */ 112 log_buffer char (log_buffer_length) based (log_buffer_ptr), 113 stream_source char (32), /* saves the stream.source in case star entry is used */ 114 pigeon_hole char (32), /* Name of a message segment to be initiated */ 115 sysdir char (168) int static init (">system_control_1"), /* ditto */ 116 /* where to find the message segs */ 117 time char (24); /* for putting in messages */ 118 119 dcl NL char (1) aligned int static options (constant) init (" 120 "); 121 dcl stars char (16) aligned int static options (constant) init (" 122 *********** 123 "); /* There are three BEL chars in this string */ 124 125 /* BIT strings */ 126 declare 127 created_seg (8) bit (1) init ((8) (1)"0"b), /* In case we want to write messages */ 128 dont_log bit (1), /* "1"b=>Sentinel-- Needn't be logged */ 129 sendalarm bit (1); /* TRUE if alarm message, at distribute */ 130 131 /* builtins */ 132 133 dcl (addr, index, max, min, null, string, substr, length, addcharno, byte, rtrim) 134 builtin; 135 136 dcl any_other condition; 137 138 /* EXTERNAL ENTRIES */ 139 declare 140 as_any_other_handler_ entry (character (*), entry, label, label), 141 com_err_ entry options (variable), 142 com_err_$suppress_name entry () options (variable), 143 date_time_$format entry (character (*), fixed binary (71), character (*), character (*)) 144 returns (character (250) var), 145 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 146 hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)), 147 ioa_$rsnnl entry () options (variable), 148 ioa_ entry options (variable), 149 mc_con_rec_$output entry (fixed bin (71)), 150 mc_util_$mrt_source entry (char (*) aligned, fixed bin, fixed bin (35)), 151 mc_util_$mrt_stream entry (fixed bin, char (*) aligned, ptr, fixed bin, fixed bin (35)), 152 mc_util_$queue entry (ptr, bit (1), ptr, fixed bin, fixed bin, fixed bin (35)), 153 mrd_util_$discard_remainder entry (ptr, fixed bin, fixed bin (35)), 154 mrd_util_$read entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (21), char (*), ptr, fixed bin, fixed bin (35)), 155 timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 156 157 declare log_write_$message entry (pointer, fixed binary, character (*), pointer, fixed binary (35)); 158 159 declare hphcs_$syserr entry options (variable); 160 declare hphcs_$syserr_error_code entry options (variable); 161 declare sys_log_ entry options (variable); 162 declare sys_log_$error_log entry options (variable); 163 declare timed_io_$put_chars entry (pointer, fixed binary (71), pointer, fixed binary (21), fixed binary (21), 164 fixed binary (35)); 165 declare (as_$meter_enter, as_$meter_exit) entry (fixed bin); 166 167 /* EXTERNAL constants */ 168 declare 169 ( 170 error_table_$ioname_not_found, 171 error_table_$no_message ext, 172 error_table_$notalloc, 173 error_table_$timeout, 174 error_table_$unable_to_do_io) fixed bin (35) ext static; 175 176 /* STRUCTURES */ 177 declare 178 1 based_ackn based, 179 2 source_index fixed bin (35), 180 2 stream_index fixed bin (35); 181 182 183 184 /* Program */ 185 186 init: entry (arg_mc_ansp, arg_temp_SDBp, arg_mcmp, arg_messp); 187 188 /* This entry is called by mc_util_$init. It sets up the internal static 189* variables that were once part of the unified message_coordr_ procedure. 190**/ 191 192 mc_ansp, mc_ansp_stat = arg_mc_ansp; 193 temp_SDBp = arg_temp_SDBp; 194 mcmp = arg_mcmp; 195 messp = arg_messp; 196 197 sysdir = mc_anstbl.sysdir; 198 mrtp = mc_anstbl.mrtp; 199 vconsp = mc_anstbl.vconsp; 200 201 return; 202 203 204 /* This entry is called when a wakeup arrives on the 205* message coordinator's protocol channel. This happens 206* whenever a source attaches an i/o stream through mrd_ 207* or detaches such a stream (if no previous protocol message is still pending) 208* or when this program sends itself a wakeup after processing 20 messages. */ 209 210 protocol: entry (arg_event_call_info_ptr); 211 212 event_call_info_ptr = arg_event_call_info_ptr; 213 on any_other call as_any_other_handler_ ("mc_wakeups_$prototol", mc_wakeups_handler_, ABORT_EXIT, ABORT_EXIT); 214 call as_$meter_enter (MSGCORD_METER); /* meter cpu time and paging used by this procedure */ 215 chain = "proto"; 216 do k = 1 to 20; /* Do at most 20 messages. */ 217 218 /* Read part (or all) of the first available message in the chain 219* and get its index. */ 220 call mrd_util_$read (temp_SDBp, addr (buffer_space), 0, length (buffer_space), nt, chain, messp, state, code); 221 if code = error_table_$no_message | 222 code = error_table_$unable_to_do_io then goto METER_EXIT; 223 /* There weren't 20 messages. */ 224 when_sent = message_block.time_sent; 225 if message_block.flags.introduction then goto introduction; 226 if message_block.flags.farewell then goto farewell; 227 228 /* If we get here, complain and */ 229 call hphcs_$syserr (ANNOUNCE, "mc_wakeups_: Bad protocol: index = ^d", message_block.next_message); 230 goto attached; 231 232 introduction: /* This is where we fill in the MRT so that 233* the router can do its work . */ 234 235 /* Get indices in MRT */ 236 /* First the source */ 237 call mc_util_$mrt_source (message_block.from_source, mrt_source, code); 238 if code ^= 0 then 239 if code ^= error_table_$ioname_not_found then /* A real error */ 240 do; 241 gripe: call hphcs_$syserr_error_code (ANNOUNCE, code, "mc_wakeups_", "Protocol error: ^a ^a", 242 message_block.from_source, message_block.from_stream); 243 goto attached; 244 end; 245 else do; /* This is a source for which no routing has been provided. Make one. */ 246 if mrt_source = 0 then mrt_source, /* Need to allocate new entry */ 247 MRT.no_of_sources = MRT.no_of_sources + 1; 248 MRT.source (mrt_source).source = message_block.from_source; 249 MRT.source (mrt_source).hismess = null; 250 MRT.source (mrt_source).no_of_streams = 0; 251 MRT.source (mrt_source).flags.init = "0"b; /* "message" segment not initiated */ 252 MRT.source (mrt_source).flags.valid = "1"b; /* info otherwise correct */ 253 goto make_stream; 254 end; 255 256 /* Next the stream. */ 257 call mc_util_$mrt_stream (mrt_source, message_block.from_stream, streamp, mrt_stream, code); 258 if code ^= 0 then 259 if code ^= error_table_$ioname_not_found then goto gripe; /* A real error */ 260 else do; /* No routing provided for this stream. Make new entry. */ 261 if mrt_stream = 0 then /* Need to allocate new entry */ 262 if MRT.source (mrt_source).no_of_streams < 8 then /* Room for another? */ 263 make_stream: mrt_stream, 264 MRT.source (mrt_source).no_of_streams = MRT.source (mrt_source).no_of_streams + 1; 265 else do; /* No room. */ 266 code = error_table_$notalloc; 267 goto gripe; 268 end; 269 streamp = addr (MRT.source (mrt_source).stream (mrt_stream)); 270 string (stream.flags) = "0"b; 271 stream.flags.valid = "1"b; /* Entry contains correct info */ 272 stream.source = message_block.from_source; 273 stream.stream = message_block.from_stream; 274 stream.ourmess = mcmp; 275 stream.source_index = mrt_source; 276 stream.stream_index = mrt_stream; 277 278 stream.no_of_vcons = MRT.star_entry.stream.no_of_vcons; 279 280 do vc = 1 to stream.no_of_vcons; 281 stream.vcons (vc) = MRT.star_entry.stream.vcons (vc); 282 stream.vcons_index (vc) = MRT.star_entry.stream.vcons_index (vc); 283 end; 284 285 end; 286 287 /* now fill in pointer to message segment for this source */ 288 if MRT.source (mrt_source).flags.init then hismp = MRT.source (mrt_source).hismess; 289 else do; /* first time through, initiate it. */ 290 i = index (stream.source, " ") - 1; 291 pigeon_hole = substr (stream.source, 1, i) || ".message"; 292 call hcs_$initiate (sysdir, pigeon_hole, "", 0, 1, hismp, code); 293 if hismp = null then go to gripe; /* EEK. message segment missing. */ 294 MRT.source (mrt_source).hismess = hismp; 295 MRT.source (mrt_source).flags.init = "1"b; /* "message" segment now initiated */ 296 end; 297 298 stream.hismess = MRT.source (mrt_source).hismess; 299 stream.flags.active = "1"b; /* stream attached and sending */ 300 301 /* Acknowledge the protocol, sending the indeces in the MRT */ 302 addr (ackn) -> based_ackn.source_index = mrt_source; 303 addr (ackn) -> based_ackn.stream_index = mrt_stream; 304 call hcs_$wakeup (hismp -> syscon_mseg.current_process_id, 305 hismp -> syscon_mseg.proto_el.channel, 306 ackn, code); 307 if code ^= 0 then call com_err_ (code, "mc_wakeups_", 308 "Protocol cannot wake ^a", stream.source); 309 goto attached; 310 311 /* Reset active and send acknowledgement. */ 312 farewell: 313 mrt_source = message_block.source_index; 314 mrt_stream = message_block.stream_index; 315 316 streamp = addr (MRT.source (mrt_source).stream (mrt_stream)); 317 stream.flags.active = "0"b; 318 319 hismp = stream.hismess; 320 321 if hismp -> syscon_mseg.no_of_streams = 0 then MRT.source (mrt_source).flags.init = "0"b; /* More tidy */ 322 323 ackn = 0; 324 call hcs_$wakeup (hismp -> syscon_mseg.current_process_id, 325 hismp -> syscon_mseg.proto_el.channel, 326 ackn, code); 327 attached: call mrd_util_$discard_remainder (temp_SDBp, state, code); /* Leave campsite as clean as found it */ 328 329 end; /* When we have done 20, give rest of process a chance 330* But remember to do more later. */ 331 call hcs_$wakeup (mcmp -> syscon_mseg.current_process_id, 332 mcmp -> syscon_mseg.proto_el.channel, 0, code); 333 goto METER_EXIT; 334 335 /* ROUTER - called when a wakeup arrives on the "normal" event channel. 336* Daemons send a wakeup after they have sent output, and router sends itself 337* a wakeup after processing 20 messages. 338* 339* Under most circumstances (stream.source <= 4 chars), the maximum line length 340* will be 118 characters...just enough to fit on a TermiNet */ 341 342 router: entry (arg_event_call_info_ptr); 343 344 mc_ansp = mc_ansp_stat; 345 event_call_info_ptr = arg_event_call_info_ptr; 346 on any_other call as_any_other_handler_ ("mc_wakeups_$router", mc_wakeups_handler_, ABORT_EXIT, ABORT_EXIT); 347 call as_$meter_enter (MSGCORD_METER); /* meter cpu time and paging used by this procedure */ 348 chain = "normal"; 349 350 buffer_ptr = addr (buffer_space); 351 log_buffer_ptr = addr (log_buffer_space); 352 tty_buffer_ptr = addr (tty_buffer_space); 353 354 do k = 1 to 20; /* Do 20 messages at a time. */ 355 356 /* Read part (or all) of first available message in the chain */ 357 358 call mrd_util_$read (temp_SDBp, buffer_ptr, 0, length (buffer_space), nt, chain, messp, state, code); 359 if mc_anstbl.trace 360 then call trace_mrd_util_read; 361 362 if code = error_table_$no_message | 363 code = error_table_$unable_to_do_io then goto METER_EXIT; 364 /* There weren't 20 things in queue. */ 365 /* Find the MRT entry */ 366 mrt_source = message_block.source_index; 367 mrt_stream = message_block.stream_index; 368 369 if mrt_source = 0 | mrt_stream = 0 then do; /* AARGH! */ 370 call hphcs_$syserr (ANNOUNCE, "mc_wakeups_: bad message from ^a.", message_block.from_source); 371 call hphcs_$syserr (ANNOUNCE, "mc_wakeups_: message is ""^a"".", substr (message_block.message_body, 1, message_block.length)); 372 call mrd_util_$discard_remainder (temp_SDBp, state, code); 373 go to METER_EXIT; /* for now */ 374 end; 375 376 when_sent = message_block.time_sent; /* Get this too while at it. */ 377 streamp = addr (MRT.source (mrt_source).stream (mrt_stream)); 378 hismp = stream.hismess; 379 stream_source = stream.source; /* save this, as you won't find it in the star entry */ 380 if stream.no_of_vcons = 0 then streamp = addr (MRT.star_entry.stream); /* Whoops! */ 381 382 /* Set up line to be typed */ 383 another: dont_log = "0"b; 384 if message_block.flags.sentinel then do; /* No special format */ 385 dont_log = "1"b; 386 if nt = 0 then go to get_rest; /* Unlikely */ 387 tty_buffer_ptr = addr (buffer_space); /* reset ptr */ 388 lng = nt; 389 end; 390 else do; 391 time = date_time_$format ("^Hd^MH", when_sent, "", ""); 392 if substr (buffer, nt, 1) = NL then nt = nt - 1; /* Remove extraneous nl */ 393 timestamp = ""; /* varying string, initialize */ 394 call ioa_$rsnnl (" ^a ^4a ", timestamp, (0), time, stream_source); /* just prepare stamp */ 395 call ioa_$rsnnl ("^va ^a", log_buffer_space, log_buffer_length, max (4, length (rtrim (stream_source))), stream.source, buffer); 396 end; 397 398 do vc = 1 to stream.no_of_vcons; /* Send message to each virtual console */ 399 vce = stream.vcons_index (vc); 400 sendalarm = substr (stream.flags.alarm, vc, 1); /* Set alarm switch. */ 401 vcep = addr (vcons_tab.vcons (vce)); 402 if vcons.no_of_dest = 0 then vcep = addr (vcons_tab.star_entry); /* Whoops! */ 403 404 do dest = 1 to vcons.no_of_dest; /* Send it to each physical device */ 405 if vcons.dest (dest).type = 1 then do; /* This is a typewriter */ 406 qp = vcons.dest (dest).queue_seg_ptr; 407 if dont_log /* just a sentinel */ 408 then do; 409 call mc_util_$queue (qp, sendalarm, tty_buffer_ptr, lng, mrt_source, code); 410 hismp -> syscon_mseg.mescount = hismp -> syscon_mseg.mescount + 1; 411 end; 412 else call queue_tty_message; /* send one or more messages as needed to fit in 132 per message char limit */ 413 end; 414 else if vcons.dest (dest).type = 2 then do; /* This is a log */ 415 if sendalarm then i = 2; 416 else i = 1; 417 if ^dont_log then /* Interesting later? */ 418 call log_write_$message (vcons.dest (dest).queue_seg_ptr, i, log_buffer, (null ()), (0)); 419 end; 420 else if vcons.dest (dest).type = 3 then ; /* Sink */ 421 end; 422 423 end; 424 call check_off_message; 425 get_rest: if state ^= 0 then do; /* Message cont more than 1 line or more chars than asked. */ 426 call mrd_util_$read (temp_SDBp, addr (buffer_space), 0, length (buffer_space), nt, chain, messp, state, code); 427 if mc_anstbl.trace then call trace_mrd_util_read; 428 if code = error_table_$unable_to_do_io then goto METER_EXIT; 429 if nt ^= 0 then goto another; 430 end; 431 end; 432 call hcs_$wakeup (mcmp -> syscon_mseg.current_process_id, 433 mcmp -> syscon_mseg.ipc_el.channel, 0, code); 434 goto METER_EXIT; /* Fell out of loop. Big backlog. 435* Allow rest of process a chance, but insure we come back. */ 436 437 check_off_message: proc; 438 439 hismp -> syscon_mseg.mescount = hismp -> syscon_mseg.mescount - 1; 440 if hismp -> syscon_mseg.mescount <= 0 then do; 441 hismp -> syscon_mseg.mescount = 0; 442 if hismp -> syscon_mseg.output_wait then do; 443 hismp -> syscon_mseg.output_wait = "0"b; 444 call hcs_$wakeup (hismp -> syscon_mseg.current_process_id, 445 hismp -> syscon_mseg.ipc_el.channel, 0, code); 446 end; 447 end; 448 449 end check_off_message; 450 451 452 /* This entry is called when a wakeup arrives on the event 453* channel associated with a device queue. This can happen 454* in three ways. When a line is placed in a previously empty queue 455* a wakeup is sent to initiate processing by the typer_out. 456* If the typer_out cannot complete typing all messages in a 457* queue, it sets a timer to wake itself later to try again. 458* If the typer_out cannot type all the characters of a given 459* message it sets the output_wait switch in the mc answer 460* table entry for this typewriter and expects system_control_$tty_aught 461* to send a wakeup when hardcore is ready for more work. 462* 463* No lock is necessary on the device queues because mc$router and mc$typer_out 464* are executed in the same process. */ 465 466 typer_out: entry (arg_event_call_info_ptr); 467 468 mc_ansp = mc_ansp_stat; 469 event_call_info_ptr = arg_event_call_info_ptr; 470 on any_other call as_any_other_handler_ ("mc_wakeups_$typer_out", mc_wakeups_handler_, ABORT_EXIT, ABORT_EXIT); 471 call as_$meter_enter (MSGCORD_METER); /* meter cpu time and paging used by this procedure */ 472 473 qp = event_call_info.data_ptr; /* What queue are we processing? */ 474 if device_queue.no_of_messages = 0 then goto METER_EXIT; /* Nothing to do. */ 475 mc_atep = device_queue.mc_atep; 476 cdtep = mc_ate.cdtep; 477 if mc_ate.control.inhibit then /* Waiting for operator? */ 478 do; /* Tell mc_tty_ to talk to us */ 479 mc_ate.control.output_pending = "1"b; 480 goto METER_EXIT; 481 end; 482 483 n, last_line = 0; 484 this_line = device_queue.top_of_queue; /* First message to type. */ 485 limit = min (max_limit, device_queue.no_of_messages); /* Total number to type. */ 486 487 do i = 1 to limit; 488 mrt_source = device_queue.line (this_line).source; 489 if mrt_source = 0 then hismp = null; 490 else hismp = MRT.source (mrt_source).hismess; 491 linep = addr (device_queue.line (this_line).string); 492 offset = device_queue.line (this_line).offset; 493 n = device_queue.line (this_line).line_length - offset; 494 if mc_anstbl.trace then begin; 495 declare line char (n) based (addcharno (linep, offset)); 496 call sys_log_ (SL_LOG_SILENT, 497 "MC (mc_wakeups_ - typer_out): tty: ^a^[; physical channel: ^a^;^s^]; this_line: ^d; line_length: ^d; offset: ^d; n: ^d; line: ^a", 498 mc_ate.virtual_tty_name, mc_ate.virtual, 499 mc_ate.real_tty_name, this_line, 500 device_queue.line (this_line).line_length, 501 device_queue.line (this_line).offset, n, line); 502 end; 503 nt = 0; 504 505 if device_queue.line (this_line).alarm /* alarm needed */ 506 then if mc_ate.the_system_console 507 then call iox_$control (mc_ate.iocb, "alarm", null, code); 508 else call timed_io_$put_chars (mc_ate.iocb, 5 * 1000 * 1000, addr (stars), length (stars), (0), code); /* allow this to wait */ 509 510 device_queue.line (this_line).alarm = "0"b; 511 512 if mc_ate.the_system_console 513 then do; 514 call iox_$put_chars (mc_ate.iocb, addcharno (linep, offset), n, code); 515 if code = 0 then nt = n; 516 end; 517 else do; 518 call timed_io_$put_chars (mc_ate.iocb, 0, addcharno (linep, offset), n, nt, code); 519 if code = error_table_$timeout then code = 0; 520 end; 521 if mc_anstbl.trace 522 then call sys_log_$error_log (SL_LOG_SILENT, code, "MC (mc_wakeups_ - typer_out)", "called put_chars nt: ^d", nt); 523 524 if code ^= 0 then do; 525 nt = 0; 526 go to finish; 527 end; 528 529 if nt ^= n then go to finish; /* Hardcore buffers full. Can't do any more now */ 530 last_line = this_line; /* Useful below when unchaining */ 531 this_line = device_queue.line (this_line).next_line; /* Next message to type. */ 532 if hismp ^= null then call check_off_message; 533 end; 534 535 device_queue.line (last_line).next_line = device_queue.free_top; /* Unchain */ 536 device_queue.free_top = device_queue.top_of_queue; 537 device_queue.top_of_queue = this_line; 538 device_queue.no_of_messages = device_queue.no_of_messages - limit; 539 if this_line = 0 then device_queue.end_of_queue = 0; 540 else call timer_manager_$alarm_wakeup (wait_time, "11"b, /* More to do. Come back later. */ 541 device_queue.channel); 542 mc_ate.control.output_wait = "0"b; /* Did all wanted to do. */ 543 goto exit; 544 545 finish: 546 if mc_anstbl.trace 547 then call sys_log_ (SL_LOG_SILENT, 548 "MC (mc_wakeups - finish): tty: ^a^[; physical channel: ^a^;^s^]; length: ^d; length transmitted ^d; offset: ^d", 549 mc_ate.virtual_tty_name, mc_ate.virtual, 550 mc_ate.real_tty_name, n, nt, offset); 551 mc_ate.control.output_wait = "1"b; /* Tell tty_aught to wake us when hardcore ready. */ 552 device_queue.line (this_line).offset = nt + offset; /* Remember how much got typed. */ 553 device_queue.line (this_line).not_done = "1"b; 554 device_queue.no_of_messages = device_queue.no_of_messages - i + 1; 555 if last_line = 0 then goto exit; /* Stuck on first one? */ 556 device_queue.line (last_line).next_line = device_queue.free_top; /* No. Unchain. */ 557 device_queue.free_top = device_queue.top_of_queue; 558 device_queue.top_of_queue = this_line; 559 exit: if mc_ate.the_system_console then call iox_$control (mc_ate.iocb, "start", null, code); /* In case we stole a wakeup */ 560 goto METER_EXIT; 561 562 con_rec: entry (arg_event_call_info_ptr); 563 564 /* This entry is called when a wakeup arrives on the console recovery 565* event channel. The event message will contain either a positive value which 566* is used to recover a syserr message or a negative value which will be 567* used to retrieve the message from oc_data. This message will be sent to 568* used to retrieve the message from oc_data. This message will be sent to 569* mc_con_rec_ for the actual work. If the event message is zero, it means 570* that the console has come back into operation, and console recovery is 571* deactivated; this is all handled by mc_con_rec_. 572**/ 573 574 mc_ansp = mc_ansp_stat; 575 event_call_info_ptr = arg_event_call_info_ptr; 576 on any_other call as_any_other_handler_ ("mc_wakeups_$con_rec", mc_wakeups_handler_, ABORT_EXIT, ABORT_EXIT); 577 call as_$meter_enter (MSGCORD_METER); /* meter cpu time and paging used by this procedure */ 578 579 if ^mc_anstbl.con_rec.flags.enabled /* Ignore wakeup if console recovery not enabled. */ 580 then goto METER_EXIT; 581 582 call mc_con_rec_$output (event_call_info.message);/* process the message... */ 583 584 goto METER_EXIT; 585 586 /* ALL RETURNS MUST COME HERE TO TURN OFF METERING BEFORE RETURNING !!! */ 587 588 ABORT_EXIT: 589 METER_EXIT: 590 call as_$meter_exit (MSGCORD_METER); /* turn off metering before returning */ 591 return; 592 593 queue_tty_message: 594 procedure; 595 596 declare SPACE_IN_A_QUEUE_ENTRY fixed bin init (131) int static options (constant); /* device_queue.string = 132, NL = 1 */ 597 declare to_go fixed bin (21); 598 declare to_go_1 fixed bin; 599 declare n_sent fixed bin (21); 600 declare max_to_send fixed bin; 601 declare done bit (1) aligned; 602 603 max_to_send = SPACE_IN_A_QUEUE_ENTRY - length (timestamp); 604 to_go = nt; 605 n_sent = 0; 606 to_go_1 = 0; 607 608 /**** This loop must be executed at least once to insure that blank lines 609* are processed. Since we haven't got do until, we simulate with 610* the "done" flag. to_go is decremented at the end of the loop 611* so it is co-located with recalculating done. */ 612 613 done = "0"b; 614 do while (^done); 615 to_go_1 = min (to_go, max_to_send); /* Zero is fine */ 616 substr (tty_buffer_space, 1, length (timestamp)) = timestamp; 617 substr (tty_buffer_space, length (timestamp) + 1, to_go_1) = substr (buffer_space, n_sent + 1, to_go_1); /* Zero length is fine */ 618 substr (tty_buffer_space, length (timestamp) + 1 + to_go_1, 1) = byte (10); 619 call mc_util_$queue (qp, sendalarm, addr (tty_buffer_space), 620 to_go_1 + length (timestamp) + 1, mrt_source, code); /* l(timestamp)+ NL */ 621 if code ^= 0 then call hphcs_$syserr_error_code (LOG, code, 622 "mc_wakeups_", "Failed to queue message for ^a.", 623 device_queue.mc_atep -> mc_ate.virtual_tty_name); 624 sendalarm = "0"b; /* Once is enough per message */ 625 hismp -> syscon_mseg.mescount = hismp -> syscon_mseg.mescount + 1; 626 if mc_anstbl.trace 627 then call sys_log_ (SL_LOG_SILENT, "MC (mc_wakeups_ - queue_tty_message): n_sent: ^d; to_go: ^d; to_go_1: ^d; this_line: ^a", 628 n_sent, to_go, to_go_1, substr (tty_buffer_space, 1, to_go_1 + length (timestamp))); 629 n_sent = n_sent + to_go_1; 630 to_go = to_go - to_go_1; /* This many left */ 631 done = (to_go <= 0); /* none left? Note that if to_go started as zero (a blank line), then to_go_1 will be zero, 0-0 = 0, so this terminates */ 632 end; 633 return; 634 end queue_tty_message; 635 636 mc_wakeups_handler_: 637 procedure; 638 639 /* This procedure is a handler for the "any_other" condition. 640**/ 641 642 /**** Nothing to do here? Not even send some protocol wakeups? */ 643 644 645 end mc_wakeups_handler_; 646 647 set_mc_message_limits: entry; 648 649 dcl (argval, nargs) fixed bin; 650 dcl l_wait_time fixed bin (71); 651 dcl l_max_limit fixed bin; 652 dcl ct_dly bit (1) aligned; 653 654 dcl mcl_me char (24) init ("set_mc_message_limits") static options (constant); 655 656 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 657 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 658 dcl argp ptr, argl fixed bin (21), arg char (argl) based (argp); 659 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 660 661 dcl error_table_$badopt fixed bin (35) ext static; 662 dcl error_table_$noarg fixed bin (35) ext static; 663 664 l_wait_time = wait_time; 665 l_max_limit = max_limit; 666 call cu_$arg_count (nargs, code); 667 if code ^= 0 then call com_err_ (code, "set_mc_message_limits"); 668 if nargs < 1 then do; 669 call com_err_$suppress_name (0, mcl_me, "USAGE: set_mc_message_limits {-count N} {-delay N} {-print}"); 670 return; 671 end; 672 673 do i = 1 to nargs; 674 call cu_$arg_ptr (i, argp, argl, code); 675 if arg = "-count" | arg = "-ct" | 676 arg = "-delay" | arg = "-dly" then do; 677 i = i + 1; 678 if i > nargs then do; 679 call com_err_ (error_table_$noarg, mcl_me, "Following ^a.", arg); 680 return; 681 end; 682 ct_dly = substr (arg, 2, 1) = "c"; 683 call cu_$arg_ptr (i, argp, argl, code); 684 argval = cv_dec_check_ ((arg), code); 685 if (code ^= 0 | argval <= 0) then do; 686 call com_err_ (0, mcl_me, "^a is not a positive decimal number", arg); 687 return; 688 end; 689 if ct_dly then l_max_limit = argval; 690 else l_wait_time = argval; 691 end; 692 else if arg = "-print" | arg = "-pr" then 693 call ioa_ ("^a: Message coordinator message limit is ^d messages per ^d seconds.", mcl_me, l_max_limit, l_wait_time); 694 else do; 695 call com_err_ (error_table_$badopt, mcl_me, "^a", arg); 696 return; 697 end; 698 end; 699 700 max_limit = l_max_limit; 701 wait_time = l_wait_time; 702 return; 703 704 705 set_shutdown_limits: entry; 706 707 max_limit = 131071; 708 wait_time = 1; 709 return; 710 711 trace_mrd_util_read: 712 procedure; 713 714 call sys_log_$error_log (SL_LOG_SILENT, code, "mc_wakeups_ (router)", "buffer: ^a; nt: ^d; chain: ^a; state: ^d", 715 substr (buffer_space, 1, nt), 716 nt, chain, state); 717 call sys_log_ (SL_LOG_SILENT, "mc_wakeups_ (router): time ^a; from_source ^a; from_stream ^a; source_index ^d; stream_index ^d; next_message ^d; ^[continue^] ^[introduction^] ^[farewell^] ^[sentinel^]", 718 date_time_$format ("time", message_block.time_sent, "", ""), 719 message_block.from_source, 720 message_block.from_stream, 721 message_block.source_index, 722 message_block.stream_index, 723 message_block.next_message, 724 message_block.continue, 725 message_block.introduction, 726 message_block.farewell, 727 message_block.sentinel); 728 call sys_log_ (SL_LOG_SILENT, "mc_wakeups_ (router): length: ^d; message ^a", message_block.length, substr (message_block.message_body, 1, message_block.length)); 729 return; 730 end trace_mrd_util_read; 731 732 /* include files */ 733 /* format: off */ 734 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 1 2 1 3 /* Written 05/04/78 by C. D. Tavares */ 1 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 1 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 1 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 1 7 1 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 1 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 1 10 iox_$close entry (pointer, fixed bin (35)), 1 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 1 12 iox_$delete_record entry (pointer, fixed bin (35)), 1 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 1 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 1 15 iox_$err_not_attached entry options (variable), 1 16 iox_$err_not_closed entry options (variable), 1 17 iox_$err_no_operation entry options (variable), 1 18 iox_$err_not_open entry options (variable), 1 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 1 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 1 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 1 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 1 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 1 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 1 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 1 28 iox_$propagate entry (pointer), 1 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 1 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 1 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 1 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 1 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 1 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 1 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 1 40 1 41 dcl (iox_$user_output, 1 42 iox_$user_input, 1 43 iox_$user_io, 1 44 iox_$error_output) external static pointer; 1 45 1 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 734 735 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 2 2 2 3 /* These are the names and numbers of the slots in as_meter_table 2 4* (see as_meter_table.incl.pl1). 2 5* 2 6* Written March 1980 by Tom Casey 2 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 2 8**/ 2 9 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 2 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 2 14* A) Add NETUP_METER. 2 15* B) Add AS_METER_NAMES array. 2 16* END HISTORY COMMENTS */ 2 17 2 18 2 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 2 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 2 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 2 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 2 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 2 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 2 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 2 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 2 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 2 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 2 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 2 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 2 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 2 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 2 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 2 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 2 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 2 36* (the attempts might fail because of load control limits) */ 2 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 2 38 2 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 2 40 2 41 /* Bit length of recursion_possible equals highest slot number given above. */ 2 42 2 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 2 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 2 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 2 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 2 47 "FIXPDT", "TRYABSLG", "NETUP"); 2 48 2 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 735 736 /* ====== BEGIN INCLUDE SEGMENT syscon_mseg.incl.pl1 ====================================== */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(87-09-02,Parisek), approve(87-09-03,MECR0005), 3 7* audit(87-09-02,GDixon), install(87-09-03,MR12.1-1098): 3 8* Increase quit_bits from 72 bits to 504 bits so more than 72 sources 3 9* may enable quit without error. (phx20974) 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* Message Coordinator message segment declaration. Each daemon process 3 14* enqueues its messages in a segment like this one. 3 15* 3 16* The segment consists of a header followed by many message blocks, 3 17* each capable of holding a message of 132 characters plus 3 18* information on when the message was sent, who it's from, etc. 3 19* These blocks are "allocated" only as needed and placed on a free 3 20* storage list when freed. Blocks in use are chained together in a 3 21* first-in-first-out queue. */ 3 22 3 23 dcl buff_len fixed bin init (132) internal static; 3 24 3 25 dcl 1 syscon_mseg aligned based, /* This header is of length 24 dec 30 oct words */ 3 26 2 mlock bit (36) aligned, 3 27 2 current_process_id bit (36), 3 28 2 ipc_el, /* mrdim_ blocks on this list for normal reads */ 3 29 3 n fixed bin, 3 30 3 pad fixed bin, 3 31 3 channel fixed bin (71), 3 32 2 proto_el, /* mrdim_ blocks on this list for attach and detach */ 3 33 3 n fixed bin, 3 34 3 pad fixed bin, 3 35 3 channel fixed bin (71), 3 36 2 flags unaligned, 3 37 3 test_mode bit (1), /* ON if running in test environment */ 3 38 3 receiver_woken bit (1), /* ON if wakeup sent but not received yet */ 3 39 3 unused bit (34), 3 40 2 first_message fixed bin, /* index of head of message chain */ 3 41 2 last_message fixed bin, /* index of tail of message chain */ 3 42 2 first_proto fixed bin, /* index of head of protocol chain */ 3 43 2 last_proto fixed bin, /* index of tail of protocol chain */ 3 44 2 first_free_buffer fixed bin, /* head of free chain */ 3 45 2 last_assigned_buffer fixed bin, /* high water mark of buffers ever used */ 3 46 2 no_of_streams fixed bin, 3 47 2 quit_bits bit (504), /* used in mc.message to mark a source waiting to be quit */ 3 48 2 locked_by_pid bit (36), /* process id of locker */ 3 49 2 mescount fixed bin, /* Count of unprinted messages */ 3 50 2 output_wait bit (1), /* TRUE if in output wait - mc_wakeups resets */ 3 51 2 pad fixed bin, 3 52 2 message (1) like message_block aligned; /* the array of messages */ 3 53 3 54 dcl 1 message_block aligned based (messp), /* 56 dec 70 oct words */ 3 55 2 time_sent fixed bin (71), 3 56 2 from_source char (32), 3 57 2 from_stream char (32), 3 58 2 source_index fixed bin, /* index in MRT */ 3 59 2 stream_index fixed bin, /* .. */ 3 60 2 next_message fixed bin, /* foward pointer of message chain */ 3 61 2 flags unal, 3 62 3 continue bit (1), /* ON if message continued in next block */ 3 63 3 introduction bit (1), /* ON if message is an introduction */ 3 64 3 farewell bit (1), /* ON if message is farewell */ 3 65 3 sentinel bit (1), /* ON if special formatting wanted */ 3 66 3 trace bit (1), /* used only by dump_msg */ 3 67 3 unused bit (31) unal, 3 68 2 length fixed bin, /* number of characters in body */ 3 69 2 message_body char (132); /* text of message */ 3 70 3 71 dcl 1 debug_info based aligned, 3 72 2 flag fixed bin (71), 3 73 2 time fixed bin (71), 3 74 2 last_pid bit (36), 3 75 2 first_msg fixed bin, 3 76 2 last_msg fixed bin, 3 77 2 first_pro fixed bin, 3 78 2 last_pro fixed bin, 3 79 2 free_chain fixed bin; 3 80 3 81 /* ------ END INCLUDE SEGMENT syscon_mseg.incl.pl1 -------------------------------------- */ 736 737 /* Begin include file mess_route_table.incl.pl1 */ 4 2 4 3 /* 4 4*Message Routing Table 4 5* 4 6*This table will be used by the protocol & router entries of the 4 7*message coordinator to match source (e.g. I/O Daemon, answering 4 8*service) -- stream (e.g. "user_i/o","error_output") combinations 4 9*with virtual consoles to which messages are to be directed. 4 10**/ 4 11 4 12 dcl 1 MRT aligned based(mrtp), /* header 4 words */ 4 13 2 lock bit(36), /* 0 */ 4 14 2 no_of_sources fixed bin, 4 15 2 flags bit(36), 4 16 2 pad1 fixed bin, 4 17 2 star_entry aligned, /* 4 * */ 4 18 3 source char(32), 4 19 3 hismess ptr, 4 20 3 no_of_streams fixed bin, 4 21 3 flags, 4 22 4 init bit(1) unal, 4 23 4 valid bit(1) unal, 4 24 4 unused bit(34) unal, 4 25 3 stream like stream aligned, /* 20 * str */ 4 26 2 source(16) aligned, /* source entry head 12 dec 14 oct words */ 4 27 3 source char(32), /* 220-1,2240-2,4260-3 */ 4 28 3 hismess ptr, 4 29 3 no_of_streams fixed bin, 4 30 3 flags, 4 31 4 init bit(1) unal, 4 32 4 valid bit(1) unal, 4 33 4 unused bit(34) unal, 4 34 3 stream(8) like stream aligned; 4 35 4 36 4 37 dcl 1 stream aligned based(streamp), /* 128dec 200 oct words */ 4 38 2 gumbo(28) fixed bin, /* This stuff is not used */ 4 39 2 ourmess ptr, 4 40 2 hismess ptr, 4 41 2 source char(32), 4 42 2 stream char(32), 4 43 2 source_index fixed bin, /* Our own address */ 4 44 2 stream_index fixed bin, 4 45 2 flags, 4 46 3 valid bit(1) unal, 4 47 3 read bit(1) unal, 4 48 3 write bit(1) unal, 4 49 3 active bit(1) unal, 4 50 3 more bit(1) unal, 4 51 3 unused bit(23) unal, 4 52 3 alarm bit (8) unal, 4 53 2 prev_trans, 4 54 3 first_block fixed bin, 4 55 3 end_block fixed bin, 4 56 3 current_block fixed bin, 4 57 3 offset fixed bin, 4 58 4 59 2 no_of_vcons fixed bin, 4 60 2 vcons(8) char(32), 4 61 2 vcons_index(8) fixed bin; 4 62 /* 4 63*MRT 4 64*lock 4 65*no_of_sources Number of source rows in this matrix. 4 66*flags 4 67*star_entry Contains default routing. 4 68*source The source rows 4 69*source Name of this source. 4 70*no_of_streams Number of stream columns that have 4 71* entries in this row. 4 72*flags 4 73*init "1"b -- This entry is for a source which 4 74* is currently attached & sending messages. 4 75*valid "1"b -- This entry contains correct information. 4 76*stream The virtual consoles for this element 4 77* of the matrix. 4 78* The Source Data Block, which 4 79* corresponds to the Stream Data 4 80* Block on the mrd side has been included 4 81* in the MRT. 4 82*gumbo Stream DB has stuff here we dont need. 4 83*ourmess Pointer to message seg for this 4 84* function (in this case mc_ ). 4 85*hismess Pointer to message seg for other 4 86* guy (in this case, the source). 4 87*source Name of this source 4 88*stream Name of this stream. 4 89*source_index in MRT 4 90*stream_index 4 91*flags 4 92*valid "1"b -- This entry contains correct information. 4 93*active "1"b -- This entry is for a stream which 4 94* is currently attached & sending messages. 4 95*alarm "1"b -- These messages are "alarm-class" messages. 4 96*prev_trans Information useful to mrd_util_ if more than 4 97* one read call is made. 4 98*first_block of the message 4 99*end_block of the message 4 100*current_block out of which we are taking text 4 101*offset of current character in current_block 4 102* 4 103*no_of_vcons 4 104*vcons Virtual consoles to which messages should 4 105* go when originating from this source 4 106* over this stream. 4 107*vcons-index Index in the virtual console table 4 108*ev_chn For waking up function waiting for 4 109* input. 4 110*messp Pointer to message segment if this is 4 111* input stream. 4 112**/ 4 113 4 114 /* End include file mess_route_table.incl.pl1 */ 737 738 /* BEGIN INCLUDE FILE vcons_tab.incl.pl1 */ 5 2 /* 5 3*Virtual Console Table 5 4* 5 5*Associates virtual consoles with physical devices and/or log 5 6*segments. */ 5 7 5 8 5 9 dcl 1 vcons_tab aligned based based(vconsp), /* header 4 words */ 5 10 2 lock bit(36), 5 11 2 no_of_vcons fixed bin, 5 12 2 flags bit(36), 5 13 2 pad1 fixed bin, 5 14 2 star_entry like vcons aligned, 5 15 2 vcons(32) like vcons aligned; 5 16 5 17 dcl 1 vcons aligned based(vcep), /* This header 10 dec 12 oct words */ 5 18 2 vcons char(32), 5 19 2 no_of_dest fixed bin, 5 20 2 flags, 5 21 3 inuse bit(1) unal, 5 22 3 unused bit(35) unal, 5 23 2 dest(8) aligned, /* 12 dec 14 oct words */ 5 24 3 type fixed bin, 5 25 3 pad2 fixed bin, 5 26 3 dest char(32), 5 27 3 queue_seg_ptr ptr; 5 28 /* 5 29* 5 30*vcons_tab 5 31*lock 5 32*no_of_vcons 5 33*vcons 5 34*vcons Symbolic name of virtual console 5 35*no_of_dest Number of physical destinations for 5 36* messages to this virtual console. 5 37*inuse "1"b if this entry is in use. 5 38*dest Where the message is to be sent 5 39*type 1 for tty, 2 for segment 5 40*dest Symbolic name of physical destination 5 41*tty_index If tty, index in mess coordr answer table 5 42*seg_ptr if segment, pointer to it. 5 43**/ 5 44 /* END INCLUDE FILE vcons_tab.incl.pl1 */ 738 739 /* Beginning of include file device_queue.incl.pl1 */ 6 2 6 3 /* This structure describes the queue segment associated with 6 4*each operator console in which are placed lines to be typed. */ 6 5 6 6 declare 6 7 1 device_queue aligned based(qp), /* Header 24 dec 30 oct words */ 6 8 2 mc_atep ptr, 6 9 2 channel fixed bin(71), 6 10 2 device_name char(32), 6 11 2 no_of_messages fixed bin, 6 12 2 top_of_queue fixed bin, 6 13 2 end_of_queue fixed bin, 6 14 2 free_top fixed bin, 6 15 2 next_free fixed bin, 6 16 2 pad(7) fixed bin, 6 17 2 line (1), /* 40 dec 50 oct words */ 6 18 3 not_done bit(1) unal, 6 19 3 alarm bit (1) unal, 6 20 3 xpad bit (16) unal, 6 21 3 source fixed bin (17) unal, 6 22 3 next_line fixed bin, 6 23 3 pad(3) fixed bin, 6 24 3 offset fixed bin, 6 25 3 line_length fixed bin, 6 26 3 string char(132); 6 27 6 28 /* End of include file device_queue.incl.pl1 */ 739 740 /* BEGIN INCLUDE FILE ... mc_anstbl.incl.pl1 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(85-12-19,MSharpe), approve(87-05-25,MCR7690), 7 6* audit(87-03-30,GDixon), install(87-08-04,MR12.1-1056): 7 7* Added the pending and virtual flags and virtual_tty_name to mc_ate; 7 8* changed mc_ate.tty_name to mc_ate.real_tty_name; added mc_ate.ls_procid, 7 9* mc_ate.ls_term_ev_chn, mc_ate.ls_resp_ev_chn, mc_ate.ls_handle. 7 10* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 7 11* audit(87-06-01,Parisek), install(87-08-04,MR12.1-1056): 7 12* Add mc_ate.vchn_requires_accept in support of virtual channels. Explicitly 7 13* declare implicit pad fields which the compile adds for element alignment 7 14* purposes. Declare mc_ansp and mc_atep, on which major structures are 7 15* based, rather than depending upon includers do to so. 7 16* 3) change(87-03-27,Parisek), approve(87-05-25,MCR7690), 7 17* audit(87-06-11,GDixon), install(87-08-04,MR12.1-1056): 7 18* Added the dsa_ring_number element to provide a constant for determining 7 19* the DSA ring. 7 20* END HISTORY COMMENTS */ 7 21 7 22 7 23 /* format: style3,idind30 */ 7 24 7 25 dcl 1 mc_anstbl based (mc_ansp) aligned, 7 26 /* Structure of answer table */ 7 27 2 max_size fixed bin, /* max number of entries table can grow */ 7 28 2 current_size fixed bin, /* actual size of table (in entries) */ 7 29 2 mc_procid bit (36), /* process ID of message coordinator */ 7 30 2 sysdir char (168), /* name of main system control directory */ 7 31 2 pad_ptrs bit (36), 7 32 2 mrtp ptr, 7 33 2 vconsp ptr, 7 34 2 cons_cont_proc entry, /* mc_tty_ */ 7 35 2 con_rec, /* Data for console recovery. */ 7 36 3 mc_ate_ptr ptr, /* Pts to recovery device. */ 7 37 3 ec_id fixed bin (71), /* Recovery event chan. */ 7 38 3 seq_num fixed bin (35), /* Syserr sequence number. */ 7 39 3 offset bit (18), /* Log entry offset. */ 7 40 3 flags, 7 41 ( 4 enabled bit (1), /* ON => recovery possible. */ 7 42 4 active bit (1), 7 43 4 pad_flags bit (16) 7 44 ) unaligned, /* ON => recovery going on. */ 7 45 2 n_sources fixed bin, /* number of communicating sources */ 7 46 2 max_sources fixed bin, /* maximum number of sources allowed */ 7 47 2 current_time fixed bin (71), /* Time of last transaction */ 7 48 2 trace bit (1) aligned, 7 49 2 dsa_ring_number fixed bin, /* DSA ring number */ 7 50 2 pad_entries (30) bit (36) aligned, 7 51 2 entry (0 refer (mc_anstbl.current_size)) aligned like mc_ate, 7 52 mc_ansp ptr; 7 53 7 54 dcl 1 mc_ate based (mc_atep) aligned, 7 55 /* declaration of a single answer table entry */ 7 56 2 flags aligned, 7 57 3 virtual bit (1) unaligned, /* 1 => login -vchn XXX */ 7 58 3 pending bit (1) unaligned, /* 1 => pending entry created for DSA channel 7 59* since we can't keep info in cdte for it */ 7 60 3 active bit (1) unaligned, 7 61 3 the_system_console bit (1) unaligned, /* otw_/ocd_ */ 7 62 3 a_system_console bit (1) unaligned, /* Not yet implemented -- a random opc through a */ 7 63 /* nonexistent I/O module */ 7 64 3 pad001 bit (1) unaligned, 7 65 3 signed_on bit (1) unaligned, 7 66 3 reply_restricted bit (1) unaligned, 7 67 3 broadcast bit (1) unaligned, 7 68 3 broadcast_all bit (1) unaligned, 7 69 3 vchn_requires_accept bit (1) unaligned, 7 70 3 pad_flags bit (25) unaligned, 7 71 2 virtual_tty_name char (32) unaligned, 7 72 2 real_tty_name char (32) unaligned, 7 73 2 pad_ptrs bit (36), 7 74 2 cdtep pointer, /* we get info from cdt */ 7 75 2 iocb pointer, /* do I/O here */ 7 76 2 sci_ptr pointer, 7 77 2 tra_vec fixed bin, 7 78 2 restrict_reply char (32), /* Source name. if "", everybody. */ 7 79 /* Broadcasting information. */ 7 80 2 n_casts fixed bin, /* If flag is 1 */ 7 81 2 cast (10) char (32), /* If flag is 1, list of consoles. */ 7 82 2 oper_info, /* for oper assigned this console... */ 7 83 3 personid char (32), 7 84 3 last_input_time fixed bin (71), /* time of last input on this console... */ 7 85 2 queue_ptr ptr, 7 86 2 queue_event fixed bin (71), 7 87 2 event fixed binary (71), /* name of event call channel associated with TTY */ 7 88 2 ls_procid bit (36), /* ID of login_server who will wake us up with connect 7 89* and disconnect -- used only for network channels */ 7 90 2 pad_ev_chn bit (36), 7 91 2 ls_term_ev_chn fixed bin (71), /* event channel to send terminate response to ls */ 7 92 2 ls_resp_ev_chn fixed bin (71), /* event channel to send operator response to ls */ 7 93 2 ls_handle bit (72), /* login server handle for this connection */ 7 94 2 authority, 7 95 3 privilege (36) bit (1) unaligned, 7 96 2 control, 7 97 3 inhibit bit (1) unal, 7 98 3 output_wait bit (1) unal, 7 99 3 output_pending bit (1) unal, 7 100 3 pad_control bit (33) unal, 7 101 mc_atep ptr; 7 102 7 103 declare ( 7 104 MC_WAIT_DIALUP init (1), 7 105 MC_WAIT_ANSWERBACK init (2), 7 106 MC_WAIT_READY init (3), 7 107 MC_WAIT_COMMAND init (4) 7 108 ) fixed bin int static options (constant); 7 109 7 110 /* END INCLUDE FILE ... mc_anstbl.incl.pl1 */ 740 741 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 8 2 8 3 /* format: style3,idind25,indcomtxt */ 8 4 8 5 /* Channel Definition Table. 8 6* This table lists all of the hardware channels (ports) connected 8 7* to the system, and maintains the attributes of each one. 8 8* 8 9* PG 741230 8 10* Modified by Mike Grady 5/6/76 to add FNP info. 8 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 8 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 8 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 8 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 8 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 8 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 8 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 8 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 8 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 8 20* Modified August 1982 by E. N. Kittlitz for check_acs. 8 21* Modified January 1983 by Keith Loepere for generic_destination. 8 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 8 23* Modified 831216 by E. N. Kittlitz for required_access_class. 8 24* Modified 84-04-01 by BIM to finish communications AIM: 8 25* access class ranges, 8 26* access_control flags. 8 27**/ 8 28 8 29 8 30 /****^ HISTORY COMMENTS: 8 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 8 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 33* Add support for answering service to use IOCBs when tty_ cannot be 8 34* used to service login channels. 8 35* END HISTORY COMMENTS */ 8 36 8 37 8 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 8 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 8 40 8 41 dcl (cdtp, cdtep, fnpep, mpxep) 8 42 ptr; 8 43 8 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 8 45 2 author like author_dcl.author, /* standard header */ 8 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 8 47 2 current_size fixed bin, /* number of last cdte. */ 8 48 2 version fixed bin, 8 49 2 freep fixed bin, /* chain of free cdte's */ 8 50 2 n_cdtes fixed bin, /* number of used cdte's */ 8 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 8 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 8 53 2 cpu_in_dialup fixed bin (71), /* .. */ 8 54 2 pf_in_dialup fixed bin, /* .. */ 8 55 2 pp_in_dialup fixed bin, /* .. */ 8 56 2 entries_to_dialup fixed bin, /* .. */ 8 57 2 flags, 8 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 8 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 8 60 3 mux_mgr_system_init 8 61 bit (1) unal, /* mux mgr has loaded top-levels */ 8 62 3 pad1 bit (33) unal, 8 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 8 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 8 65 2 threads aligned like channel_threads, 8 66 /* root of non-fnp-top-level-multiplexers */ 8 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 8 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 8 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 8 70 8 71 8 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 8 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 8 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 8 75 2 pad1 bit (36) aligned, 8 76 2 name char (32), /* ASCII name of channel */ 8 77 2 access_class (2) bit (72) aligned, /* access class range */ 8 78 2 comment char (48), /* printable message about channel */ 8 79 2 charge_type fixed bin (17) unal, /* billing group */ 8 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 8 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 8 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 8 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 8 84 2 pad2 bit (18) unaligned, 8 85 2 answerback char (8), /* answerback string expected */ 8 86 2 initial_terminal_type 8 87 char (32) unal, /* as specified in the CMF */ 8 88 2 mpx_data unal, /* data used only for multiplexed channels */ 8 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 8 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 8 91 2 flags, 8 92 ( 3 attributes, 8 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 8 94 4 audit_access_error 8 95 bit (1), /* ON means ck that person auth is inside access class range */ 8 96 /* this implies that the access_class describes a range of 8 97* legitimate user auths. */ 8 98 4 hardwired bit (1), /* ON means it is */ 8 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 8 100 4 dont_read_answerback 8 101 bit (1), /* ON means don't try to read answerback */ 8 102 4 pada bit (4), 8 103 3 access_control unaligned, /* As below */ 8 104 4 dial_out bit (1), /* dialing user must be on ACS */ 8 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 8 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 8 107 4 login bit (1), /* logging in user must be on acs */ 8 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 8 109 4 pado bit (3), 8 110 3 options, 8 111 4 execute_initial_command 8 112 bit (1), /* ON means to do it */ 8 113 4 attached_by_operator 8 114 bit (1), /* ON means temporary attachment. */ 8 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 8 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 8 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 8 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 8 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 8 120 4 generic_destination_present 8 121 bit (1), /* ON means that the initial_command field contains 8 122* a generic destination to match on dial_out or priv attach */ 8 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 8 124 4 pado bit (9) 8 125 ) unaligned, 8 126 2 initial_command char (64), /* pseudo first input line */ 8 127 /**** The following variables represent dynamic control info, and 8 128* are used mostly by dialup_ and asu_ */ 8 129 2 event fixed bin (71), /* event call channel for channel events */ 8 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 8 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 8 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 8 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 8 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 8 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 8 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 8 137 /* 0 = dialup_, 1 = mc_tty_ */ 8 138 3 save_arg bit (1) unal, /* -save login arg given */ 8 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 8 140 3 detach_after_hangup 8 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 8 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 8 143 3 hold_arg bit (1) unal, /* -hold arg given */ 8 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 8 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 8 146 3 current_access_class_valid 8 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 8 148 3 pad bit (7) unal, 8 149 2 twx fixed bin, /* channel device index */ 8 150 2 state fixed bin, /* channel state */ 8 151 2 tty_id_code char (4), /* channel id (answerback) */ 8 152 2 current_terminal_type 8 153 char (32) unal, /* most recently-set terminal type */ 8 154 2 process ptr unal, /* ptr to ATE owning this channel */ 8 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 8 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 8 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 8 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 8 159* We do not yet define multi-class connections, but we will someday. */ 8 160 2 disconnected_ate_index 8 161 fixed bin (17) unal, /* index of ate of disconnected process */ 8 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 8 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 8 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 8 165 2 pad3 bit (14) unaligned, 8 166 /**** The following variables are kept for metering purposes. */ 8 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 8 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 8 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 8 170 2 dialup_time fixed bin (71), /* time of present dialup */ 8 171 2 disconnected_proc_command 8 172 fixed bin (12) unsigned unal, 8 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 8 174 2 disconnected_proc_number 8 175 fixed bin (12) unsigned unal, 8 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 8 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 8 178 /* number of disconnected processes that user has */ 8 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 8 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 8 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 8 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 8 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 8 184 /**** had the space. */ 8 185 2 threads aligned like channel_threads, 8 186 /**** The use name is that of the user who gave the dial or slave ****/ 8 187 /**** preaccess request. ****/ 8 188 2 user_name unaligned, 8 189 3 person char (20) unaligned, 8 190 3 project char (9) unaligned, 8 191 3 pad char (3) unaligned, /* no tag */ 8 192 2 iocbp ptr unaligned; /* 104 words */ 8 193 8 194 8 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 8 196* overlays initial_command field for slave and autocall lines */ 8 197 8 198 8 199 8 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 8 201 /* These variables are filled in from the CMF */ 8 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 8 203 2 memory fixed bin, /* amount of memory on this FNP */ 8 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 8 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 8 206 2 service_type fixed bin, /* service type */ 8 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 8 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 8 209 /**** The following are used during system operation to remember the state of the FNP */ 8 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 8 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 8 212 2 mpxe like mpxe, /* standard multiplexer data */ 8 213 2 threads aligned like channel_threads, 8 214 /* same mpx threads as channel */ 8 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 8 216 8 217 /* This structure describes the data necessary to control a multiplexer. 8 218* For FNP's., a copy appears in the fnpe. For communications lines, it 8 219* overlays the initial_command field in the cdte. */ 8 220 8 221 dcl 1 mpxe based (mpxep) aligned, 8 222 2 state fixed bin, /* current state, up, down, loading */ 8 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 8 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 8 225 2 n_bootloads fixed bin, /* count of load attempts */ 8 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 8 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 8 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 8 229 2 time_load_start fixed bin (71), /* time current load started */ 8 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 8 231 2 flags unal, 8 232 3 go bit (1), /* start MPX after it loads */ 8 233 3 listening bit (1), /* listen has been done on subchannels */ 8 234 3 check bit (1), /* loaded with check option */ 8 235 3 retry_load bit (1), /* reload if load fails */ 8 236 3 pad1 bit (32), 8 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 8 238 8 239 /* These threads define the tree of multiplexers in the cdt. */ 8 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 8 241 /* by alpha sort order of the channel name. Daughter points to the */ 8 242 /* first child of this node, if any. Daughter count is the number */ 8 243 /* of children, as a consistency check. Mother is a back pointer to */ 8 244 /* the parent, present in all the children, not just the first. */ 8 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 8 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 8 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 8 248 8 249 dcl 1 channel_threads aligned based, 8 250 2 next_sister fixed bin unaligned, 8 251 2 prev_sister fixed bin unaligned, 8 252 2 daughter fixed bin unaligned, 8 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 8 254 2 pad bit (18) unaligned, 8 255 2 daughter_count fixed bin unaligned; 8 256 8 257 /* Values for cdte.service_type field */ 8 258 8 259 dcl ( 8 260 ANS_SERVICE init (1), /* login or dial */ 8 261 FTP_SERVICE init (2), /* file transfer service */ 8 262 MC_SERVICE init (3), /* message coordinator */ 8 263 SLAVE_SERVICE init (4), /* special channel */ 8 264 DIAL_SERVICE init (5), /* transient state */ 8 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 8 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 8 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 8 268 ) fixed bin internal static options (constant); 8 269 8 270 /* Values for service type in both cdte and fnpe */ 8 271 8 272 dcl ( 8 273 INACTIVE init (7), /* not to be used, even though configured */ 8 274 ACTIVE init (1) 8 275 ) /* for FNP only, configured and to be used */ 8 276 fixed bin internal static options (constant); 8 277 8 278 /* Value for both cdte.in_use and fnpe.state */ 8 279 8 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 8 281 /* was not configured at Multics bootload time */ 8 282 8 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 8 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 8 285 8 286 /* Value for cdte.in_use */ 8 287 8 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 8 289 /* channel deleted by CDT installation */ 8 290 8 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 8 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 8 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 8 294 8 295 8 296 /* Values for mpxe.state field */ 8 297 8 298 dcl ( 8 299 FNP_FREE init (0), /* this fnpe is not used */ 8 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 8 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 8 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 8 303 FNP_UP init (4) /* FNP is up and running fine */ 8 304 ) fixed bin internal static options (constant); 8 305 8 306 dcl ( 8 307 MPX_FREE init (0), /* this mpxe is not used */ 8 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 8 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 8 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 8 311 MPX_UP init (4) /* MPX is up and running fine */ 8 312 ) fixed bin internal static options (constant); 8 313 9 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 9 2 9 3 9 4 9 5 /****^ HISTORY COMMENTS: 9 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 9 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 9 8* Add data needed for the uncp multiplexer (DSA gateway) interface 9 9* implementation. 9 10* END HISTORY COMMENTS */ 9 11 9 12 9 13 /* Values for fnpe.type field */ 9 14 /* 9 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 9 16* Added in March 1982 - DN7100.fd. 9 17**/ 9 18 9 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 9 20 DN6600 init (2), /* a DataNet 6600 FNP */ 9 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 9 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 9 23 ) fixed bin internal static options (constant); 9 24 9 25 dcl fnp_types (4) char (8) int static options (constant) 9 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 9 27 9 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 9 29 init (355, 6600, 6670, 7100); 9 30 9 31 dcl supported_fnp (4) bit (1) int static options (constant) 9 32 init ("0"b, "0"b, "1"b, "1"b); 9 33 9 34 9 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 8 314 8 315 8 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 741 742 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 10 2 10 3 /* This include file declares the "author" substructure 10 4* in a form suitable for using the PL/I "like" attribute. 10 5* 10 6* Written 750304 by PG 10 7**/ 10 8 10 9 dcl 1 author_dcl aligned based, 11 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 11 2 11 3 /* the "author" items must always be the first ones in the table. The 11 4* module which moves the converted table to the System Control process 11 5* fills in these data items and assumes them to be at the head of the segment 11 6* regardless of the specific table's actual declaration. The variables 11 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 11 8* respectively. For tables installed in multiple processes, these 11 9* are to be used to lock out multiple installations. */ 11 10 11 11 /* Lock should be used as a modification lock. Since, in general, 11 12* entries may not be moved in system tables, even by installations, 11 13* it is sufficient for only installers and programs that change threads 11 14* to set or respect the lock. Simply updating data in an entry 11 15* requires no such protection. 11 16* 11 17* Last_install_time is used by readers of system tables to detect 11 18* installations or other serious modifications. By checking it before 11 19* and after copying a block of data, they can be protected against 11 20* modifications. 11 21* 11 22* Modules that set the lock should save proc_group_id, and then 11 23* put their group id there for the time they hold the lock. 11 24* if they do not actually install the, they should restore the group id. 11 25**/ 11 26 11 27 2 author aligned, /* validation data about table's author */ 11 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 11 29 3 lock bit (36), /* installation lock */ 11 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 11 31 3 update_authorization bit (1) unal, /* update only authorizations */ 11 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 11 33 3 pad bit (33) unaligned, 11 34 3 last_install_time fixed bin (71), 11 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 11 36 3 w_dir char (64), /* author's working directory */ 11 37 11 38 /* END INCLUDE FILE author.incl.pl1 */ 10 10 10 11 2 pad; 10 12 10 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 742 743 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 12 2 12 3 /* T. Casey, May 1978 */ 12 4 12 5 dcl event_call_info_ptr ptr; 12 6 12 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 12 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 12 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 12 10 2 sender bit (36), /* process id of sender */ 12 11 2 origin, 12 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 12 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 12 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 12 15 12 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 743 744 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 13 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 13 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 13 4 13 5 /* This include file has an ALM version. Keep 'em in sync! */ 13 6 13 7 dcl ( 13 8 13 9 /* The following constants define the message action codes. This indicates 13 10*how a message is to be handled. */ 13 11 13 12 SYSERR_CRASH_SYSTEM init (1), 13 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 13 14 13 15 SYSERR_TERMINATE_PROCESS init (2), 13 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 13 17 13 18 SYSERR_PRINT_WITH_ALARM init (3), 13 19 BEEP init (3), /* Beep and print the message on the console. */ 13 20 13 21 SYSERR_PRINT_ON_CONSOLE init (0), 13 22 ANNOUNCE init (0), /* Just print the message on the console. */ 13 23 13 24 SYSERR_LOG_OR_PRINT init (4), 13 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 13 26 13 27 SYSERR_LOG_OR_DISCARD init (5), 13 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 13 29 13 30 13 31 /* The following constants are added to the normal severities to indicate 13 32*different sorting classes of messages. */ 13 33 13 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 13 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 13 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 13 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 13 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 13 39 ) fixed bin internal static options (constant); 13 40 13 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 744 745 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 14 2 14 3 14 4 /****^ HISTORY COMMENTS: 14 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 14 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 7* Added sl_info structure and associated named constants for use in calling 14 8* sys_log_$general. 14 9* END HISTORY COMMENTS */ 14 10 14 11 14 12 /* format: style4 */ 14 13 14 14 dcl ( 14 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 14 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 14 17 SL_TYPE init (-1), /* type message */ 14 18 SL_LOG_SILENT init (0), /* log message */ 14 19 SL_LOG init (1), /* log & type message */ 14 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 14 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 14 22 ) fixed bin internal static options (constant); 14 23 14 24 dcl 1 sl_info aligned automatic, 14 25 2 version char(8), /* structure version */ 14 26 2 arg_list_ptr ptr, /* arg_list with values */ 14 27 2 loc, 14 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 14 29 /* These flags control where the corresponding data item is found.*/ 14 30 /* -1: data appears in the corresponding structure element below */ 14 31 /* 0: data is not present anywhere */ 14 32 /* +N: data is Nth item in argument list pointed to by */ 14 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 14 34 /* corresponding structure element. */ 14 35 /* if data = +N: */ 14 36 /* argN is data_ptr, argN+1 is data_len */ 14 37 /* if ioa_msg = +N: */ 14 38 /* argN+1, ... argLAST are arguments substituted into the */ 14 39 /* ioa_msg control string. The formatted msg is returned. */ 14 40 2 flags, 14 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 14 42 3 flags_pad bit(35) unal, 14 43 2 mode fixed bin, /* as-mode, command-mode */ 14 44 2 severity fixed bin, /* error severity */ 14 45 2 code fixed bin(35), /* error table code */ 14 46 2 caller char(65) varying, /* caller refname$entryname*/ 14 47 2 data, /* binary data ptr/length */ 14 48 3 data_ptr ptr, 14 49 3 data_lth fixed bin(21), 14 50 2 class char(10) varying, /* binary data class */ 14 51 2 ioa_msg char(500) varying; /* formatted message text */ 14 52 14 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 54 /* */ 14 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 14 56 /* their data types should be as shown in the structure above, except that */ 14 57 /* character strings should be char(*) nonvarying. */ 14 58 /* */ 14 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 60 14 61 /* value for sl_info.version */ 14 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 14 63 14 64 /* values for sl_info.mode */ 14 65 dcl (SL_INFO_as_mode init(1), 14 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 14 67 14 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 14 69 dcl (SL_INFO_arg_given_in_structure init(-1), 14 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 14 71 14 72 14 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 74 /* */ 14 75 /* The following static structures are commonly used in the Login Server */ 14 76 /* user control software. */ 14 77 /* */ 14 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 79 14 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 14 81 14 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 14 83 2 version char(8) init ("sl_info1"), 14 84 2 arg_list_ptr ptr init (null), 14 85 2 loc, 14 86 3 (mode init (-1), 14 87 severity init ( 1), 14 88 code init ( 2), 14 89 caller init (-1), 14 90 data init ( 0), 14 91 class init ( 0), 14 92 ioa_msg init ( 3)) fixed bin, 14 93 2 flags, 14 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 95 3 flags_pad bit(35) unal init ("0"b), 14 96 2 mode fixed bin init ( 1), 14 97 2 severity fixed bin init ( 0), 14 98 2 code fixed bin(35) init ( 0), 14 99 2 caller char(65) varying init (""), 14 100 2 data, 14 101 3 data_ptr ptr init (null), 14 102 3 data_lth fixed bin(21) init ( 0), 14 103 2 class char(10) varying init (""), 14 104 2 ioa_msg char(500) varying init (""); 14 105 14 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 14 107 14 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 14 109 2 version char(8) init ("sl_info1"), 14 110 2 arg_list_ptr ptr init (null), 14 111 2 loc, 14 112 3 (mode init (-1), 14 113 severity init ( 1), 14 114 code init ( 0), 14 115 caller init (-1), 14 116 data init ( 0), 14 117 class init ( 0), 14 118 ioa_msg init ( 2)) fixed bin, 14 119 2 flags, 14 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 121 3 flags_pad bit(35) unal init ("0"b), 14 122 2 mode fixed bin init ( 1), 14 123 2 severity fixed bin init ( 0), 14 124 2 code fixed bin(35) init ( 0), 14 125 2 caller char(65) varying init (""), 14 126 2 data, 14 127 3 data_ptr ptr init (null), 14 128 3 data_lth fixed bin(21) init ( 0), 14 129 2 class char(10) varying init (""), 14 130 2 ioa_msg char(500) varying init (""); 14 131 14 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 14 133 14 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 14 135 2 version char(8) init ("sl_info1"), 14 136 2 arg_list_ptr ptr init (null), 14 137 2 loc, 14 138 3 (mode init (-1), 14 139 severity init ( 1), 14 140 code init ( 0), 14 141 caller init (-1), 14 142 data init ( 0), 14 143 class init ( 0), 14 144 ioa_msg init ( 2)) fixed bin, 14 145 2 flags, 14 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 14 147 3 flags_pad bit(35) unal init ("0"b), 14 148 2 mode fixed bin init ( 1), 14 149 2 severity fixed bin init ( 0), 14 150 2 code fixed bin(35) init ( 0), 14 151 2 caller char(65) varying init (""), 14 152 2 data, 14 153 3 data_ptr ptr init (null), 14 154 3 data_lth fixed bin(21) init ( 0), 14 155 2 class char(10) varying init (""), 14 156 2 ioa_msg char(500) varying init (""); 14 157 14 158 14 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 14 160 14 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 14 162 2 version char(8) init ("sl_info1"), 14 163 2 arg_list_ptr ptr init (null), 14 164 2 loc, 14 165 3 (mode init (-1), 14 166 severity init ( 1), 14 167 code init ( 2), 14 168 caller init (-1), 14 169 data init ( 0), 14 170 class init ( 0), 14 171 ioa_msg init ( 4)) fixed bin, 14 172 2 flags, 14 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 174 3 flags_pad bit(35) unal init ("0"b), 14 175 2 mode fixed bin init ( 1), 14 176 2 severity fixed bin init ( 0), 14 177 2 code fixed bin(35) init ( 0), 14 178 2 caller char(65) varying init (""), 14 179 2 data, 14 180 3 data_ptr ptr init (null), 14 181 3 data_lth fixed bin(21) init ( 0), 14 182 2 class char(10) varying init (""), 14 183 2 ioa_msg char(500) varying init (""); 14 184 14 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 14 186 14 187 dcl 1 sl_info_code_msg aligned int static options(constant), 14 188 2 version char(8) init ("sl_info1"), 14 189 2 arg_list_ptr ptr init (null), 14 190 2 loc, 14 191 3 (mode init (-1), 14 192 severity init (-1), 14 193 code init ( 1), 14 194 caller init (-1), 14 195 data init ( 0), 14 196 class init ( 0), 14 197 ioa_msg init ( 2)) fixed bin, 14 198 2 flags, 14 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 200 3 flags_pad bit(35) unal init ("0"b), 14 201 2 mode fixed bin init ( 1), 14 202 2 severity fixed bin init ( 0), 14 203 2 code fixed bin(35) init ( 0), 14 204 2 caller char(65) varying init (""), 14 205 2 data, 14 206 3 data_ptr ptr init (null), 14 207 3 data_lth fixed bin(21) init ( 0), 14 208 2 class char(10) varying init (""), 14 209 2 ioa_msg char(500) varying init (""); 14 210 14 211 14 212 /* Syntax: call Trace (ioa_ctl, args); */ 14 213 14 214 dcl 1 sl_info_msg aligned int static options(constant), 14 215 2 version char(8) init ("sl_info1"), 14 216 2 arg_list_ptr ptr init (null), 14 217 2 loc, 14 218 3 (mode init (-1), 14 219 severity init (-1), 14 220 code init ( 0), 14 221 caller init (-1), 14 222 data init ( 0), 14 223 class init ( 0), 14 224 ioa_msg init ( 1)) fixed bin, 14 225 2 flags, 14 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 227 3 flags_pad bit(35) unal init ("0"b), 14 228 2 mode fixed bin init ( 1), 14 229 2 severity fixed bin init ( 0), 14 230 2 code fixed bin(35) init ( 0), 14 231 2 caller char(65) varying init (""), 14 232 2 data, 14 233 3 data_ptr ptr init (null), 14 234 3 data_lth fixed bin(21) init ( 0), 14 235 2 class char(10) varying init (""), 14 236 2 ioa_msg char(500) varying init (""); 14 237 14 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 745 746 747 end mc_wakeups_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.0 mc_wakeups_.pl1 >special_ldd>install>MR12.2-1061>mc_wakeups_.pl1 734 1 05/23/83 0916.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 735 2 08/06/87 0913.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 736 3 09/04/87 2012.1 syscon_mseg.incl.pl1 >ldd>include>syscon_mseg.incl.pl1 737 4 05/06/74 1743.1 mess_route_table.incl.pl1 >ldd>include>mess_route_table.incl.pl1 738 5 05/06/74 1759.4 vcons_tab.incl.pl1 >ldd>include>vcons_tab.incl.pl1 739 6 07/29/76 1747.7 device_queue.incl.pl1 >ldd>include>device_queue.incl.pl1 740 7 08/06/87 0913.5 mc_anstbl.incl.pl1 >ldd>include>mc_anstbl.incl.pl1 741 8 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 8-314 9 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 742 10 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 10-10 11 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 743 12 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 744 13 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 745 14 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.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. ANNOUNCE 000077 constant fixed bin(17,0) initial dcl 13-7 set ref 229* 241* 370* 371* LOG 000100 constant fixed bin(17,0) initial dcl 13-7 set ref 621* MRT based structure level 1 dcl 4-12 MSGCORD_METER 000000 constant fixed bin(17,0) initial dcl 2-29 set ref 214* 347* 471* 577* 588* NL 005336 constant char(1) initial dcl 119 ref 392 SL_LOG_SILENT 000077 constant fixed bin(17,0) initial dcl 14-14 set ref 496* 521* 545* 626* 714* 717* 728* SPACE_IN_A_QUEUE_ENTRY constant fixed bin(17,0) initial dcl 596 ref 603 ackn 000120 automatic fixed bin(71,0) initial dcl 77 set ref 77* 302 303 304* 323* 324* active 62(03) based bit(1) level 3 packed packed unaligned dcl 4-37 set ref 299* 317* addcharno builtin function dcl 133 ref 496 514 514 518 518 addr builtin function dcl 133 ref 220 220 269 302 303 316 350 351 352 377 380 387 401 402 426 426 491 508 508 619 619 alarm 62(28) based bit(8) level 3 in structure "stream" packed packed unaligned dcl 4-37 in procedure "mc_wakeups_" set ref 400 alarm 30(01) based bit(1) array level 3 in structure "device_queue" packed packed unaligned dcl 6-6 in procedure "mc_wakeups_" set ref 505 510* any_other 000654 stack reference condition dcl 136 ref 213 346 470 576 arg based char packed unaligned dcl 658 set ref 675 675 675 675 679* 682 684 686* 692 692 695* arg_event_call_info_ptr parameter pointer dcl 52 ref 210 212 342 345 466 469 562 575 arg_mc_ansp parameter pointer dcl 52 ref 186 192 arg_mcmp parameter pointer dcl 52 ref 186 194 arg_messp parameter pointer dcl 52 ref 186 195 arg_temp_SDBp parameter pointer dcl 52 ref 186 193 argl 000672 automatic fixed bin(21,0) dcl 658 set ref 674* 675 675 675 675 679 679 682 683* 684 686 686 692 692 695 695 argp 000670 automatic pointer dcl 658 set ref 674* 675 675 675 675 679 682 683* 684 686 692 692 695 argval 000662 automatic fixed bin(17,0) dcl 649 set ref 684* 685 689 690 as_$meter_enter 000154 constant entry external dcl 165 ref 214 347 471 577 as_$meter_exit 000156 constant entry external dcl 165 ref 588 as_any_other_handler_ 000102 constant entry external dcl 139 ref 213 346 470 576 author based structure level 2 dcl 10-9 author_dcl based structure level 1 dcl 10-9 based_ackn based structure level 1 unaligned dcl 177 buffer based char packed unaligned dcl 109 set ref 392 395* buffer_ptr 000100 automatic pointer dcl 60 set ref 350* 358* 392 395 buffer_space 000146 automatic char(500) packed unaligned dcl 103 set ref 220 220 220 220 350 358 358 387 426 426 426 426 617 714 714 byte builtin function dcl 133 ref 618 cdte based structure level 1 dcl 8-72 cdtep 22 based pointer level 2 in structure "mc_ate" dcl 7-54 in procedure "mc_wakeups_" ref 476 cdtep 000700 automatic pointer dcl 8-41 in procedure "mc_wakeups_" set ref 476* chain 000620 automatic char(8) packed unaligned dcl 109 set ref 215* 220* 348* 358* 426* 714* channel 2 based fixed bin(71,0) level 2 in structure "device_queue" dcl 6-6 in procedure "mc_wakeups_" set ref 540* channel 10 based fixed bin(71,0) level 3 in structure "syscon_mseg" dcl 3-25 in procedure "mc_wakeups_" set ref 304* 324* 331* channel 4 based fixed bin(71,0) level 3 in structure "syscon_mseg" dcl 3-25 in procedure "mc_wakeups_" set ref 432* 444* channel_threads based structure level 1 dcl 8-249 code 000122 automatic fixed bin(35,0) dcl 77 set ref 220* 221 221 232* 238 238 241* 257* 258 258 266* 292* 304* 307 307* 324* 327* 331* 358* 362 362 372* 409* 426* 428 432* 444* 505* 508* 514* 515 518* 519 519* 521* 524 559* 619* 621 621* 666* 667 667* 674* 683* 684* 685 714* com_err_ 000104 constant entry external dcl 139 ref 307 667 679 686 695 com_err_$suppress_name 000106 constant entry external dcl 139 ref 669 con_rec 66 based structure level 2 dcl 7-25 continue 25 based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 717* control 213 based structure level 2 dcl 7-54 created_seg 000650 automatic bit(1) initial array packed unaligned dcl 126 set ref 126* ct_dly 000667 automatic bit(1) dcl 652 set ref 682* 689 cu_$arg_count 000172 constant entry external dcl 656 ref 666 cu_$arg_ptr 000174 constant entry external dcl 657 ref 674 683 current_process_id 1 based bit(36) level 2 dcl 3-25 set ref 304* 324* 331* 432* 444* cv_dec_check_ 000176 constant entry external dcl 659 ref 684 data_ptr 6 based pointer level 2 dcl 12-7 ref 473 date_time_$format 000110 constant entry external dcl 139 ref 391 717 dest 000123 automatic fixed bin(17,0) dcl 77 in procedure "mc_wakeups_" set ref 404* 405 406 414 417 420* dest 12 based structure array level 2 in structure "vcons" dcl 5-17 in procedure "mc_wakeups_" device_queue based structure level 1 dcl 6-6 done 000734 automatic bit(1) dcl 601 set ref 613* 614 631* dont_log 000651 automatic bit(1) packed unaligned dcl 126 set ref 383* 385* 407 417 enabled 74 based bit(1) level 4 packed packed unaligned dcl 7-25 ref 579 end_of_queue 16 based fixed bin(17,0) level 2 dcl 6-6 set ref 539* error_table_$badopt 000200 external static fixed bin(35,0) dcl 661 set ref 695* error_table_$ioname_not_found 000160 external static fixed bin(35,0) dcl 168 ref 238 258 error_table_$no_message 000162 external static fixed bin(35,0) dcl 168 ref 221 362 error_table_$noarg 000202 external static fixed bin(35,0) dcl 662 set ref 679* error_table_$notalloc 000164 external static fixed bin(35,0) dcl 168 ref 266 error_table_$timeout 000166 external static fixed bin(35,0) dcl 168 ref 519 error_table_$unable_to_do_io 000170 external static fixed bin(35,0) dcl 168 ref 221 362 428 event_call_info based structure level 1 dcl 12-7 event_call_info_ptr 000702 automatic pointer dcl 12-5 set ref 212* 345* 469* 473 575* 582 farewell 25(02) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 226 717* flags 62 based structure level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 270* flags 233 based structure array level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" flags based structure level 2 in structure "mc_ate" dcl 7-54 in procedure "mc_wakeups_" flags 25 based structure level 2 in structure "message_block" packed packed unaligned dcl 3-54 in procedure "mc_wakeups_" flags 74 based structure level 3 in structure "mc_anstbl" dcl 7-25 in procedure "mc_wakeups_" fnpe based structure level 1 dcl 8-200 free_top 17 based fixed bin(17,0) level 2 dcl 6-6 set ref 535 536* 556 557* from_source 2 based char(32) level 2 dcl 3-54 set ref 232* 241* 248 272 370* 717* from_stream 12 based char(32) level 2 dcl 3-54 set ref 241* 257* 273 717* hcs_$initiate 000112 constant entry external dcl 139 ref 292 hcs_$wakeup 000114 constant entry external dcl 139 ref 304 324 331 432 444 hismess 36 based pointer level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 298* 319 378 hismess 230 based pointer array level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 249* 288 294* 298 490 hismp 000106 automatic pointer dcl 60 set ref 288* 292* 293 294 304 304 319* 321 324 324 378* 410 410 439 439 440 441 442 443 444 444 489* 490* 532 625 625 hphcs_$syserr 000142 constant entry external dcl 159 ref 229 370 371 hphcs_$syserr_error_code 000144 constant entry external dcl 160 ref 241 621 i 000124 automatic fixed bin(17,0) dcl 77 set ref 290* 291 415* 416* 417* 487* 554 673* 674* 677* 677 678 683* index builtin function dcl 133 ref 290 inhibit 213 based bit(1) level 3 packed packed unaligned dcl 7-54 ref 477 init 233 based bit(1) array level 4 packed packed unaligned dcl 4-12 set ref 251* 288 295* 321* introduction 25(01) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 225 717* ioa_ 000120 constant entry external dcl 139 ref 692 ioa_$rsnnl 000116 constant entry external dcl 139 ref 394 395 iocb 24 based pointer level 2 dcl 7-54 set ref 505* 508* 514* 518* 559* iox_$control 000204 constant entry external dcl 1-8 ref 505 559 iox_$put_chars 000206 constant entry external dcl 1-8 ref 514 ipc_el 2 based structure level 2 dcl 3-25 k 000125 automatic fixed bin(17,0) dcl 77 set ref 216* 354* l_max_limit 000666 automatic fixed bin(17,0) dcl 651 set ref 665* 689* 692* 700 l_wait_time 000664 automatic fixed bin(71,0) dcl 650 set ref 664* 690* 692* 701 last_line 000126 automatic fixed bin(17,0) dcl 77 set ref 483* 530* 535 555 556 length 26 based fixed bin(17,0) level 2 in structure "message_block" dcl 3-54 in procedure "mc_wakeups_" set ref 371 371 728* 728 728 length builtin function dcl 133 in procedure "mc_wakeups_" ref 220 220 358 358 395 395 426 426 508 508 603 616 617 618 619 626 626 limit 000127 automatic fixed bin(17,0) dcl 77 set ref 485* 487 538 line 30 based structure array level 2 in structure "device_queue" dcl 6-6 in procedure "mc_wakeups_" line based char packed unaligned dcl 495 in begin block on line 494 set ref 496* line_length 36 based fixed bin(17,0) array level 3 dcl 6-6 set ref 493 496* linep 000110 automatic pointer dcl 60 set ref 491* 496 514 514 518 518 lng 000130 automatic fixed bin(17,0) dcl 77 set ref 388* 409* log_buffer based char packed unaligned dcl 109 set ref 417* log_buffer_length 000144 automatic fixed bin(21,0) dcl 98 set ref 395* 417 417 log_buffer_ptr 000102 automatic pointer dcl 60 set ref 351* 417 log_buffer_space 000343 automatic char(500) packed unaligned dcl 103 set ref 351 395* log_write_$message 000140 constant entry external dcl 157 ref 417 max builtin function dcl 133 ref 395 395 max_limit 000026 internal static fixed bin(17,0) initial dcl 77 set ref 485 665 700* 707* max_to_send 000733 automatic fixed bin(17,0) dcl 600 set ref 603* 615 mc_ansp 000674 automatic pointer dcl 7-25 set ref 192* 197 198 199 344* 359 427 468* 494 521 545 574* 579 626 mc_ansp_stat 000010 internal static pointer initial dcl 60 set ref 192* 344 468 574 mc_anstbl based structure level 1 dcl 7-25 mc_ate based structure level 1 dcl 7-54 mc_atep based pointer level 2 in structure "device_queue" dcl 6-6 in procedure "mc_wakeups_" ref 475 621 mc_atep 000676 automatic pointer dcl 7-54 in procedure "mc_wakeups_" set ref 475* 476 477 479 496 496 496 505 505 508 512 514 518 542 545 545 545 551 559 559 mc_con_rec_$output 000122 constant entry external dcl 139 ref 582 mc_util_$mrt_source 000124 constant entry external dcl 139 ref 232 mc_util_$mrt_stream 000126 constant entry external dcl 139 ref 257 mc_util_$queue 000130 constant entry external dcl 139 ref 409 619 mcl_me 000001 constant char(24) initial packed unaligned dcl 654 set ref 669* 679* 686* 692* 695* mcmp 000012 internal static pointer initial dcl 60 set ref 194* 274 331 331 432 432 mescount 41 based fixed bin(17,0) level 2 dcl 3-25 set ref 410* 410 439* 439 440 441* 625* 625 message 2 based fixed bin(71,0) level 2 dcl 12-7 set ref 582* message_block based structure level 1 dcl 3-54 message_body 27 based char(132) level 2 dcl 3-54 ref 371 371 728 728 messp 000014 internal static pointer initial dcl 60 set ref 195* 220* 224 225 226 229 232 241 241 248 257 272 273 312 314 358* 366 367 370 371 371 371 371 376 384 426* 717 717 717 717 717 717 717 717 717 717 728 728 728 728 728 min builtin function dcl 133 ref 485 615 mpxe based structure level 1 dcl 8-221 mrd_util_$discard_remainder 000132 constant entry external dcl 139 ref 327 372 mrd_util_$read 000134 constant entry external dcl 139 ref 220 358 426 mrt_source 000131 automatic fixed bin(17,0) dcl 77 set ref 232* 246 246* 248 249 250 251 252 257* 261 261 261 269 275 288 288 294 295 298 302 312* 316 321 366* 369 377 409* 488* 489 490 619* mrt_stream 000132 automatic fixed bin(17,0) dcl 77 set ref 257* 261 261* 269 276 303 314* 316 367* 369 377 mrtp 56 based pointer level 2 in structure "mc_anstbl" dcl 7-25 in procedure "mc_wakeups_" ref 198 mrtp 000016 internal static pointer initial dcl 60 in procedure "mc_wakeups_" set ref 198* 246 246 248 249 250 251 252 261 261 261 269 278 281 282 288 288 294 295 298 316 321 377 380 490 n 000133 automatic fixed bin(21,0) dcl 77 set ref 483* 493* 496* 496 496 514* 515 518* 529 545* n_sent 000732 automatic fixed bin(21,0) dcl 599 set ref 605* 617 626* 629* 629 nargs 000663 automatic fixed bin(17,0) dcl 649 set ref 666* 668 673 678 next_line 31 based fixed bin(17,0) array level 3 dcl 6-6 set ref 531 535* 556* next_message 24 based fixed bin(17,0) level 2 dcl 3-54 set ref 229* 717* no_of_dest 10 based fixed bin(17,0) level 2 dcl 5-17 ref 402 404 no_of_messages 14 based fixed bin(17,0) level 2 dcl 6-6 set ref 474 485 538* 538 554* 554 no_of_sources 1 based fixed bin(17,0) level 2 dcl 4-12 set ref 246 246* no_of_streams 21 based fixed bin(17,0) level 2 in structure "syscon_mseg" dcl 3-25 in procedure "mc_wakeups_" ref 321 no_of_streams 232 based fixed bin(17,0) array level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 250* 261 261 261* no_of_vcons 67 based fixed bin(17,0) level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 278* 280 380 398 no_of_vcons 107 based fixed bin(17,0) level 4 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 278 not_done 30 based bit(1) array level 3 packed packed unaligned dcl 6-6 set ref 553* nt 000134 automatic fixed bin(21,0) dcl 77 set ref 220* 358* 386 388 392 392 392* 392 395 395 426* 429 503* 515* 518* 521* 525* 529 545* 552 604 714 714 714* null builtin function dcl 133 ref 249 293 417 489 505 505 532 559 559 offset 35 based fixed bin(17,0) array level 3 in structure "device_queue" dcl 6-6 in procedure "mc_wakeups_" set ref 492 496* 552* offset 000135 automatic fixed bin(17,0) dcl 77 in procedure "mc_wakeups_" set ref 492* 493 496 514 514 518 518 545* 552 ourmess 34 based pointer level 2 dcl 4-37 set ref 274* output_pending 213(02) based bit(1) level 3 packed packed unaligned dcl 7-54 set ref 479* output_wait 213(01) based bit(1) level 3 in structure "mc_ate" packed packed unaligned dcl 7-54 in procedure "mc_wakeups_" set ref 542* 551* output_wait 42 based bit(1) level 2 in structure "syscon_mseg" dcl 3-25 in procedure "mc_wakeups_" set ref 442 443* pigeon_hole 000632 automatic char(32) packed unaligned dcl 109 set ref 291* 292* proto_el 6 based structure level 2 dcl 3-25 qp 000112 automatic pointer dcl 60 set ref 406* 409* 473* 474 475 484 485 488 491 492 493 496 496 505 510 531 535 535 536 536 537 538 538 539 540 552 553 554 554 556 556 557 557 558 619* 621 queue_seg_ptr 24 based pointer array level 3 dcl 5-17 set ref 406 417* real_tty_name 11 based char(32) level 2 packed packed unaligned dcl 7-54 set ref 496* 545* rtrim builtin function dcl 133 ref 395 395 sendalarm 000652 automatic bit(1) packed unaligned dcl 126 set ref 400* 409* 415 619* 624* sentinel 25(03) based bit(1) level 3 packed packed unaligned dcl 3-54 set ref 384 717* source 220 based char(32) array level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 248* source 30(18) based fixed bin(17,0) array level 3 in structure "device_queue" packed packed unaligned dcl 6-6 in procedure "mc_wakeups_" ref 488 source 220 based structure array level 2 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" source 40 based char(32) level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 272* 290 291 307* 379 395* source_index 22 based fixed bin(17,0) level 2 in structure "message_block" dcl 3-54 in procedure "mc_wakeups_" set ref 312 366 717* source_index based fixed bin(35,0) level 2 in structure "based_ackn" dcl 177 in procedure "mc_wakeups_" set ref 302* source_index 60 based fixed bin(17,0) level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 275* star_entry 4 based structure level 2 in structure "vcons_tab" dcl 5-9 in procedure "mc_wakeups_" set ref 402 star_entry 4 based structure level 2 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" stars 000007 constant char(16) initial dcl 121 set ref 508 508 508 508 state 000145 automatic fixed bin(17,0) dcl 99 set ref 220* 327* 358* 372* 425 426* 714* stream 20 based structure level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 380 stream based structure level 1 dcl 4-37 in procedure "mc_wakeups_" stream 234 based structure array level 3 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 269 316 377 stream 50 based char(32) level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 273* stream_index 61 based fixed bin(17,0) level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 276* stream_index 23 based fixed bin(17,0) level 2 in structure "message_block" dcl 3-54 in procedure "mc_wakeups_" set ref 314 367 717* stream_index 1 based fixed bin(35,0) level 2 in structure "based_ackn" dcl 177 in procedure "mc_wakeups_" set ref 303* stream_source 000622 automatic char(32) packed unaligned dcl 109 set ref 379* 394* 395 395 streamp 000114 automatic pointer dcl 60 set ref 257* 269* 270 271 272 273 274 275 276 278 280 281 282 290 291 298 299 307 316* 317 319 377* 378 379 380 380* 395 398 399 400 string 37 based char(132) array level 3 in structure "device_queue" dcl 6-6 in procedure "mc_wakeups_" set ref 491 string builtin function dcl 133 in procedure "mc_wakeups_" set ref 270* substr builtin function dcl 133 set ref 291 371 371 392 400 616* 617* 617 618* 626 626 682 714 714 728 728 sys_log_ 000146 constant entry external dcl 161 ref 496 545 626 717 728 sys_log_$error_log 000150 constant entry external dcl 162 ref 521 714 syscon_mseg based structure level 1 dcl 3-25 sysdir 000027 internal static char(168) initial packed unaligned dcl 109 in procedure "mc_wakeups_" set ref 197* 292* sysdir 3 based char(168) level 2 in structure "mc_anstbl" dcl 7-25 in procedure "mc_wakeups_" ref 197 temp_SDBp 000020 internal static pointer initial dcl 60 set ref 193* 220* 327* 358* 372* 426* the_system_console 0(03) based bit(1) level 3 packed packed unaligned dcl 7-54 ref 505 512 559 this_line 000136 automatic fixed bin(17,0) dcl 77 set ref 484* 488 491 492 493 496* 496 496 505 510 530 531* 531 537 539 552 553 558 time 000642 automatic char(24) packed unaligned dcl 109 set ref 391* 394* time_sent based fixed bin(71,0) level 2 dcl 3-54 set ref 224 376 717* timed_io_$put_chars 000152 constant entry external dcl 163 ref 508 518 timer_manager_$alarm_wakeup 000136 constant entry external dcl 139 ref 540 timestamp 000601 automatic varying char(50) dcl 107 set ref 393* 394* 603 616 616 617 618 619 626 626 to_go 000730 automatic fixed bin(21,0) dcl 597 set ref 604* 615 626* 630* 630 631 to_go_1 000731 automatic fixed bin(17,0) dcl 598 set ref 606* 615* 617 617 618 619 626* 626 626 629 630 top_of_queue 15 based fixed bin(17,0) level 2 dcl 6-6 set ref 484 536 537* 557 558* trace 102 based bit(1) level 2 dcl 7-25 ref 359 427 494 521 545 626 tty_buffer_ptr 000104 automatic pointer dcl 60 set ref 352* 387* 409* tty_buffer_space 000540 automatic char(132) packed unaligned dcl 106 set ref 352 616* 617* 618* 619 619 626 626 type 12 based fixed bin(17,0) array level 3 dcl 5-17 ref 405 414 420 ucs_recursion 000137 automatic fixed bin(17,0) initial dcl 77 set ref 77* valid 62 based bit(1) level 3 in structure "stream" packed packed unaligned dcl 4-37 in procedure "mc_wakeups_" set ref 271* valid 233(01) based bit(1) array level 4 in structure "MRT" packed packed unaligned dcl 4-12 in procedure "mc_wakeups_" set ref 252* vc 000140 automatic fixed bin(17,0) dcl 77 set ref 280* 281 281 282 282* 398* 399 400* vce 000141 automatic fixed bin(17,0) dcl 77 set ref 399* 401 vcep 000116 automatic pointer dcl 60 set ref 401* 402 402* 404 405 406 414 417 420 vcons 156 based structure array level 2 in structure "vcons_tab" dcl 5-9 in procedure "mc_wakeups_" set ref 401 vcons 70 based char(32) array level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 281* vcons based structure level 1 dcl 5-17 in procedure "mc_wakeups_" vcons 110 based char(32) array level 4 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 281 vcons_index 170 based fixed bin(17,0) array level 2 in structure "stream" dcl 4-37 in procedure "mc_wakeups_" set ref 282* 399 vcons_index 210 based fixed bin(17,0) array level 4 in structure "MRT" dcl 4-12 in procedure "mc_wakeups_" set ref 282 vcons_tab based structure level 1 dcl 5-9 vconsp 60 based pointer level 2 in structure "mc_anstbl" dcl 7-25 in procedure "mc_wakeups_" ref 199 vconsp 000022 internal static pointer initial dcl 60 in procedure "mc_wakeups_" set ref 199* 401 402 virtual based bit(1) level 3 packed packed unaligned dcl 7-54 set ref 496* 545* virtual_tty_name 1 based char(32) level 2 packed packed unaligned dcl 7-54 set ref 496* 545* 621* wait_time 000024 internal static fixed bin(71,0) initial dcl 77 set ref 540* 664 701* 708* when_sent 000142 automatic fixed bin(71,0) dcl 77 set ref 224* 376* 391* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 2-28 ABS_TRYLOG_METER internal static fixed bin(17,0) initial dcl 2-35 ACCTUP_METER internal static fixed bin(17,0) initial dcl 2-26 ACTIVE internal static fixed bin(17,0) initial dcl 8-272 ADMIN_METER internal static fixed bin(17,0) initial dcl 2-32 ANS_SERVICE internal static fixed bin(17,0) initial dcl 8-259 ASINIT_METER internal static fixed bin(17,0) initial dcl 2-19 AS_METER_NAMES internal static char(8) initial array packed unaligned dcl 2-43 AUM_METER internal static fixed bin(17,0) initial dcl 2-22 AU_METER internal static fixed bin(17,0) initial dcl 2-23 BEEP internal static fixed bin(17,0) initial dcl 13-7 CDT_version internal static fixed bin(17,0) initial dcl 8-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 8-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 8-288 COMMAND_METER internal static fixed bin(17,0) initial dcl 2-30 CPG_METER internal static fixed bin(17,0) initial dcl 2-24 CRASH internal static fixed bin(17,0) initial dcl 13-7 DIALUP_METER internal static fixed bin(17,0) initial dcl 2-20 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 8-259 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 8-259 DN355 internal static fixed bin(17,0) initial dcl 9-19 DN6600 internal static fixed bin(17,0) initial dcl 9-19 DN6670 internal static fixed bin(17,0) initial dcl 9-19 DN7100 internal static fixed bin(17,0) initial dcl 9-19 DPG_METER internal static fixed bin(17,0) initial dcl 2-25 DUM_METER internal static fixed bin(17,0) initial dcl 2-21 FIXPDT_METER internal static fixed bin(17,0) initial dcl 2-34 FNP_BOOT internal static fixed bin(17,0) initial dcl 8-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 8-298 FNP_FREE internal static fixed bin(17,0) initial dcl 8-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 8-298 FNP_UP internal static fixed bin(17,0) initial dcl 8-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 8-259 INACTIVE internal static fixed bin(17,0) initial dcl 8-272 INSTALL_METER internal static fixed bin(17,0) initial dcl 2-27 JUST_LOG internal static fixed bin(17,0) initial dcl 13-7 MC_SERVICE internal static fixed bin(17,0) initial dcl 8-259 MC_WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 7-103 MC_WAIT_COMMAND internal static fixed bin(17,0) initial dcl 7-103 MC_WAIT_DIALUP internal static fixed bin(17,0) initial dcl 7-103 MC_WAIT_READY internal static fixed bin(17,0) initial dcl 7-103 MPX_BOOT internal static fixed bin(17,0) initial dcl 8-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 8-306 MPX_FREE internal static fixed bin(17,0) initial dcl 8-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 8-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 8-306 MPX_UP internal static fixed bin(17,0) initial dcl 8-306 NETUP_METER internal static fixed bin(17,0) initial dcl 2-37 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 8-280 SAC_METER internal static fixed bin(17,0) initial dcl 2-31 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 8-259 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 14-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 14-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 14-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 14-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 14-62 SL_LOG internal static fixed bin(17,0) initial dcl 14-14 SL_LOG_BEEP internal static fixed bin(17,0) initial dcl 14-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 14-14 SSU_METER internal static fixed bin(17,0) initial dcl 2-33 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 13-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 13-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 13-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 13-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 13-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 13-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 13-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 13-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 13-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 13-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 13-7 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 8-259 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 13-7 buff_len internal static fixed bin(17,0) initial dcl 3-23 cdt based structure level 1 dcl 8-44 cdtp automatic pointer dcl 8-41 debug_info based structure level 1 dcl 3-71 fnp_models internal static fixed bin(17,0) initial array dcl 9-28 fnp_types internal static char(8) initial array packed unaligned dcl 9-25 fnpep automatic pointer dcl 8-41 generic_destination based char(32) packed unaligned dcl 8-195 iox_$attach_loud 000000 constant entry external dcl 1-8 iox_$attach_name 000000 constant entry external dcl 1-8 iox_$attach_ptr 000000 constant entry external dcl 1-8 iox_$close 000000 constant entry external dcl 1-8 iox_$close_file 000000 constant entry external dcl 1-8 iox_$delete_record 000000 constant entry external dcl 1-8 iox_$destroy_iocb 000000 constant entry external dcl 1-8 iox_$detach 000000 constant entry external dcl 1-8 iox_$detach_iocb 000000 constant entry external dcl 1-8 iox_$err_no_operation 000000 constant entry external dcl 1-8 iox_$err_not_attached 000000 constant entry external dcl 1-8 iox_$err_not_closed 000000 constant entry external dcl 1-8 iox_$err_not_open 000000 constant entry external dcl 1-8 iox_$error_output external static pointer dcl 1-41 iox_$find_iocb 000000 constant entry external dcl 1-8 iox_$find_iocb_n 000000 constant entry external dcl 1-8 iox_$get_chars 000000 constant entry external dcl 1-8 iox_$get_line 000000 constant entry external dcl 1-8 iox_$look_iocb 000000 constant entry external dcl 1-8 iox_$modes 000000 constant entry external dcl 1-8 iox_$move_attach 000000 constant entry external dcl 1-8 iox_$open 000000 constant entry external dcl 1-8 iox_$open_file 000000 constant entry external dcl 1-8 iox_$position 000000 constant entry external dcl 1-8 iox_$propagate 000000 constant entry external dcl 1-8 iox_$read_key 000000 constant entry external dcl 1-8 iox_$read_length 000000 constant entry external dcl 1-8 iox_$read_record 000000 constant entry external dcl 1-8 iox_$rewrite_record 000000 constant entry external dcl 1-8 iox_$seek_key 000000 constant entry external dcl 1-8 iox_$user_input external static pointer dcl 1-41 iox_$user_io external static pointer dcl 1-41 iox_$user_output external static pointer dcl 1-41 iox_$write_record 000000 constant entry external dcl 1-8 mpxep automatic pointer dcl 8-41 recursion_possible internal static bit(18) initial packed unaligned dcl 2-39 sl_info automatic structure level 1 dcl 14-24 sl_info_code_msg internal static structure level 1 dcl 14-187 sl_info_msg internal static structure level 1 dcl 14-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 14-161 sl_info_sev_code_msg internal static structure level 1 dcl 14-82 sl_info_sev_coded_msg internal static structure level 1 dcl 14-134 sl_info_sev_msg internal static structure level 1 dcl 14-108 supported_fnp internal static bit(1) initial array packed unaligned dcl 9-31 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_EXIT 004106 constant label dcl 588 ref 213 213 213 213 346 346 346 346 470 470 470 470 576 576 576 576 METER_EXIT 004106 constant label dcl 588 ref 221 333 362 373 428 434 474 480 560 579 584 another 002303 constant label dcl 383 ref 429 attached 001704 constant label dcl 327 ref 230 243 309 check_off_message 004574 constant entry internal dcl 437 ref 424 532 con_rec 003760 constant entry external dcl 562 exit 003722 constant label dcl 559 ref 543 555 farewell 001637 constant label dcl 312 ref 226 finish 003617 constant label dcl 545 ref 526 529 get_rest 002673 constant label dcl 425 ref 386 gripe 001162 constant label dcl 241 ref 258 267 293 init 000642 constant entry external dcl 186 introduction 001135 constant label dcl 232 ref 225 make_stream 001326 constant label dcl 261 ref 253 mc_wakeups_ 000626 constant entry external dcl 14 mc_wakeups_handler_ 005057 constant entry internal dcl 636 ref 213 213 346 346 470 470 576 576 protocol 000703 constant entry external dcl 210 queue_tty_message 004626 constant entry internal dcl 593 ref 412 router 001744 constant entry external dcl 342 set_mc_message_limits 004117 constant entry external dcl 647 set_shutdown_limits 004560 constant entry external dcl 705 trace_mrd_util_read 005065 constant entry internal dcl 711 ref 359 427 typer_out 003006 constant entry external dcl 466 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6060 6270 5340 6070 Length 7110 5340 210 604 520 72 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mc_wakeups_ 988 external procedure is an external procedure. on unit on line 213 100 on unit on unit on line 346 100 on unit check_off_message internal procedure shares stack frame of external procedure mc_wakeups_. on unit on line 470 100 on unit begin block on line 494 begin block shares stack frame of external procedure mc_wakeups_. on unit on line 576 100 on unit queue_tty_message internal procedure shares stack frame of external procedure mc_wakeups_. mc_wakeups_handler_ 64 internal procedure is assigned to an entry variable. trace_mrd_util_read internal procedure shares stack frame of external procedure mc_wakeups_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mc_ansp_stat mc_wakeups_ 000012 mcmp mc_wakeups_ 000014 messp mc_wakeups_ 000016 mrtp mc_wakeups_ 000020 temp_SDBp mc_wakeups_ 000022 vconsp mc_wakeups_ 000024 wait_time mc_wakeups_ 000026 max_limit mc_wakeups_ 000027 sysdir mc_wakeups_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mc_wakeups_ 000100 buffer_ptr mc_wakeups_ 000102 log_buffer_ptr mc_wakeups_ 000104 tty_buffer_ptr mc_wakeups_ 000106 hismp mc_wakeups_ 000110 linep mc_wakeups_ 000112 qp mc_wakeups_ 000114 streamp mc_wakeups_ 000116 vcep mc_wakeups_ 000120 ackn mc_wakeups_ 000122 code mc_wakeups_ 000123 dest mc_wakeups_ 000124 i mc_wakeups_ 000125 k mc_wakeups_ 000126 last_line mc_wakeups_ 000127 limit mc_wakeups_ 000130 lng mc_wakeups_ 000131 mrt_source mc_wakeups_ 000132 mrt_stream mc_wakeups_ 000133 n mc_wakeups_ 000134 nt mc_wakeups_ 000135 offset mc_wakeups_ 000136 this_line mc_wakeups_ 000137 ucs_recursion mc_wakeups_ 000140 vc mc_wakeups_ 000141 vce mc_wakeups_ 000142 when_sent mc_wakeups_ 000144 log_buffer_length mc_wakeups_ 000145 state mc_wakeups_ 000146 buffer_space mc_wakeups_ 000343 log_buffer_space mc_wakeups_ 000540 tty_buffer_space mc_wakeups_ 000601 timestamp mc_wakeups_ 000620 chain mc_wakeups_ 000622 stream_source mc_wakeups_ 000632 pigeon_hole mc_wakeups_ 000642 time mc_wakeups_ 000650 created_seg mc_wakeups_ 000651 dont_log mc_wakeups_ 000652 sendalarm mc_wakeups_ 000662 argval mc_wakeups_ 000663 nargs mc_wakeups_ 000664 l_wait_time mc_wakeups_ 000666 l_max_limit mc_wakeups_ 000667 ct_dly mc_wakeups_ 000670 argp mc_wakeups_ 000672 argl mc_wakeups_ 000674 mc_ansp mc_wakeups_ 000676 mc_atep mc_wakeups_ 000700 cdtep mc_wakeups_ 000702 event_call_info_ptr mc_wakeups_ 000730 to_go queue_tty_message 000731 to_go_1 queue_tty_message 000732 n_sent queue_tty_message 000733 max_to_send queue_tty_message 000734 done queue_tty_message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_le_a alloc_char_temp call_ext_out_desc call_ext_out return_mac move_label_var make_label_var enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. as_$meter_enter as_$meter_exit as_any_other_handler_ com_err_ com_err_$suppress_name cu_$arg_count cu_$arg_ptr cv_dec_check_ date_time_$format hcs_$initiate hcs_$wakeup hphcs_$syserr hphcs_$syserr_error_code ioa_ ioa_$rsnnl iox_$control iox_$put_chars log_write_$message mc_con_rec_$output mc_util_$mrt_source mc_util_$mrt_stream mc_util_$queue mrd_util_$discard_remainder mrd_util_$read sys_log_ sys_log_$error_log timed_io_$put_chars timer_manager_$alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$ioname_not_found error_table_$no_message error_table_$noarg error_table_$notalloc error_table_$timeout error_table_$unable_to_do_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 77 000603 126 000606 14 000625 186 000634 192 000650 193 000656 194 000661 195 000664 197 000667 198 000673 199 000675 201 000677 210 000700 212 000711 213 000715 214 001002 215 001011 216 001013 220 001021 221 001073 224 001101 225 001103 226 001107 229 001112 230 001134 232 001135 238 001155 241 001162 243 001227 246 001230 248 001237 249 001246 250 001252 251 001253 252 001255 253 001257 257 001260 258 001311 261 001316 266 001337 267 001341 269 001342 270 001353 271 001354 272 001356 273 001362 274 001365 275 001367 276 001371 278 001373 280 001376 281 001405 282 001416 283 001423 288 001425 290 001440 291 001451 292 001465 293 001531 294 001535 295 001543 298 001545 299 001553 302 001555 303 001557 304 001561 307 001576 309 001636 312 001637 314 001641 316 001643 317 001654 319 001656 321 001660 323 001666 324 001670 327 001704 329 001717 331 001721 333 001741 342 001742 344 001752 345 001755 346 001761 347 002043 348 002052 350 002054 351 002056 352 002060 354 002062 358 002067 359 002137 362 002143 366 002151 367 002154 369 002156 370 002162 371 002205 372 002241 373 002255 376 002256 377 002260 378 002271 379 002273 380 002276 383 002303 384 002304 385 002311 386 002313 387 002315 388 002317 389 002320 391 002321 392 002356 393 002366 394 002367 395 002425 398 002505 399 002515 400 002520 401 002525 402 002532 404 002537 405 002547 406 002555 407 002560 409 002562 410 002603 411 002605 412 002606 413 002607 414 002610 415 002612 416 002620 417 002622 419 002663 420 002664 421 002666 423 002670 424 002672 425 002673 426 002675 427 002747 428 002753 429 002757 431 002761 432 002763 434 003003 466 003004 468 003014 469 003017 470 003023 471 003105 473 003114 474 003117 475 003121 476 003123 477 003125 479 003130 480 003132 483 003133 484 003135 485 003137 487 003145 488 003153 489 003163 490 003167 491 003174 492 003177 493 003201 494 003204 496 003207 503 003277 505 003300 508 003343 510 003374 512 003401 514 003404 515 003426 516 003432 518 003433 519 003463 521 003470 524 003532 525 003534 526 003535 529 003536 530 003541 531 003543 532 003547 533 003554 535 003556 536 003564 537 003566 538 003570 539 003572 540 003576 542 003613 543 003616 545 003617 551 003670 552 003673 553 003702 554 003704 555 003710 556 003712 557 003716 558 003720 559 003722 560 003755 562 003756 574 003766 575 003771 576 003775 577 004062 579 004071 582 004075 584 004105 588 004106 591 004115 647 004116 664 004125 665 004130 666 004132 667 004142 668 004164 669 004167 670 004214 673 004215 674 004223 675 004240 677 004262 678 004263 679 004266 680 004324 682 004325 683 004332 684 004347 685 004401 686 004406 687 004442 689 004443 690 004447 691 004452 692 004453 695 004514 696 004546 698 004547 700 004551 701 004554 702 004556 705 004557 707 004566 708 004571 709 004573 437 004574 439 004575 440 004600 441 004602 442 004603 443 004605 444 004606 449 004625 593 004626 603 004627 604 004632 605 004634 606 004635 613 004636 614 004637 615 004642 616 004647 617 004654 618 004660 619 004672 621 004721 624 004766 625 004770 626 004772 629 005044 630 005047 631 005051 632 005054 633 005055 636 005056 645 005064 711 005065 714 005066 717 005147 728 005272 729 005331 ----------------------------------------------------------- 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