COMPILATION LISTING OF SEGMENT tty_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/17/90 0815.7 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 /* the user ring tty io module --- tty_ */ 15 16 /* format: style2 */ 17 tty_: 18 procedure; 19 return; 20 21 /* iox_ dim for terminal i/o written 1/75 by S.E. Barr */ 22 /* Modified 9/26/75 by S.E. Barr to ensure buffer pointer is word aligned for calls to hardcore. */ 23 /* Modified 760608 by PG to get tty_get_line to work when in raw input mode */ 24 /* Modified 5/31/77 by J. Stern to add set_term_type and send_initial_string orders */ 25 /* Modified 5/4/78 by Robert Coren to call hcs_$tty_get_line and to return whatever's there for get_chars */ 26 /* Modified July 1979 by Larry Johnson to automatically attempt to attach to a 27* new channel if the user's login channel hangs up. Part of process 28* preservation across hangup project. */ 29 /* Modified by C. Hornig for dial_manager_ intelligence */ 30 /* Modified November 1980 by B. Margulies for user event channels and no block */ 31 /* Modified: 12 November 1980 by G. Palter to implement MCS suggestion #65 -- truncate modes string at nearest whole mode 32* if it doesn't fit into the caller's string */ 33 /* Modified December 1980 by B. Margulies for new preservation and general cleanup */ 34 /* Further Modified January 1, 1981 to split tty_ and tty_io_ to reduce gravidity of this program */ 35 /* Modified October 1981 by C. Hornig to allow -dial_id. */ 36 /* Modified March 1982 by C. Hornig to fix hangup_on_detach */ 37 /* Modified August 1982 by E. N. Kittlitz to initialize mask in set_up */ 38 /* Modified April 1983 by Robert Coren to handle -required_access_class */ 39 /* Modified September 1983 by Robert Coren to fix bug that ignored -required_access_class "" */ 40 /* Modified 1984-10-29 BIM to only call dial_manager_ if ring 0 admits that 41* the channel is plausible. */ 42 /* Modified December 1984 by Robert Coren to disable line status for login channel. */ 43 /* Modified January 1985 by G. Palter to establish a handler for signals from the answering service */ 44 /* Modified: 7 February 1985 by G. Palter to not attempt to release the channel if convert_dial_message_$return_io_module 45* reports an error during the attachment */ 46 /* Modified: 19 February 1985 by G. Palter to not try to dial_manager_ release the channel if hcs_$tty_detach fails */ 47 /* Modified: 26 February 1985 by G. Palter to always delete the dial_manager_ IPC channel */ 48 /* Modified: 8 March 1985 by G. Palter to make the close entrypoint not zero event_wait.channel_id(1). See the comment in 49* the code for an explanation */ 50 51 52 /****^ HISTORY COMMENTS: 53* 1) change(85-06-23,Negaret), approve(87-07-23,MCR7742), 54* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1055): 55* Handle DSA network connections. 56* 2) change(90-09-20,Bubric), approve(90-10-01,MCR8211), audit(90-10-01,Itani), 57* install(90-10-17,MR12.4-1044): 58* Have the calls to the routine 'nothing' changed to calls to the routine 59* 'null_entry_'. 60* END HISTORY COMMENTS */ 61 62 63 /* Parameters */ 64 65 dcl arg_iocbp ptr; /* ptr to iocb (input) */ 66 dcl code fixed bin (35); /* Multics standard error code (output) */ 67 dcl com_err_switch bit (1); /* ON if should call com_err_ for errors (input) */ 68 dcl extend_bit bit (1); /* Obsolete open argument */ 69 dcl mode fixed bin; 70 dcl option_array (*) char (*) var; 71 dcl arg_event_call_info_ptr 72 pointer parameter; 73 74 75 /* Automatic */ 76 77 dcl access_class bit (72) aligned; /* binary form of required access class */ 78 dcl access_class_range (2) bit (72) aligned; 79 dcl access_class_specified bit (1); /* indicates whether attach description includes access class */ 80 dcl access_class_string char (864); /* access class string passed in attach description */ 81 dcl actual_iocbp ptr; /* copy of iocb.actual_ioc_ptr */ 82 dcl atd char (128) var; 83 dcl billing_id char (12); 84 dcl billing_id_given bit (1); 85 dcl device char (32); 86 dcl dial_id char (32); 87 dcl do_not_block bit (1); 88 dcl dsa_connection_info_ptr 89 ptr; 90 dcl dsa_connection_info_len 91 fixed bin (21); 92 dcl i fixed bin; 93 dcl iocbp ptr; /* copy of arg_iocb_ptr */ 94 dcl hangup bit (1); 95 dcl local_code fixed binary (35); 96 dcl login_channel bit (1); 97 dcl mask bit (36) aligned; /* ips mask */ 98 dcl phone_no char (32); /* phone to which to dial */ 99 dcl password char (12); 100 dcl password_given bit (1); 101 dcl person_id char (12); 102 dcl person_id_given bit (1); 103 dcl project_id char (12); 104 dcl project_id_given bit (1); 105 dcl resource_description character (256); 106 dcl state fixed bin; /* state returned by hcs_$tty_ calls */ 107 dcl suppress_dial_manager bit (1) aligned; 108 109 110 /* Automatic Structures */ 111 112 dcl 1 dma aligned like dial_manager_arg; 113 114 dcl 1 dm_flags aligned, 115 2 dialup bit (1) unal, 116 2 hungup bit (1) unal, 117 2 control bit (1) unal, 118 2 pad bit (33) unal; 119 120 dcl 1 event_message like event_wait_info aligned; 121 122 dcl 1 ipcas aligned like ipc_create_arg_structure; 123 124 dcl 1 local_eci aligned like event_call_info; 125 126 dcl 1 user_id like submitter_id aligned; 127 128 129 /* builtins */ 130 131 dcl (addr, char, hbound, index, lbound, length, null, rtrim, 132 string, substr) 133 builtin; 134 135 /* Internal Static */ 136 137 dcl dim_name char (4) int static options (constant) init ("tty_"); 138 /* used by com_err_ and setting attach descrip */ 139 dcl system_free_area_ptr pointer int static init(null); 140 dcl ZERO_BIT bit (1) int static options (constant) init ("0"b); 141 142 /* Based */ 143 144 dcl connection_info (dsa_connection_info_len) fixed bin (35) based (dsa_connection_info_ptr); 145 dcl system_free_area area based (system_free_area_ptr); 146 147 /* External Static */ 148 149 dcl ( 150 error_table_$action_not_performed, 151 error_table_$bad_mode, 152 error_table_$badopt, 153 error_table_$inconsistent, 154 error_table_$io_no_permission, 155 error_table_$noarg, 156 error_table_$not_detached, 157 error_table_$resource_attached, 158 error_table_$too_many_args, 159 error_table_$wrong_no_of_args 160 ) fixed bin (35) ext; 161 162 dcl (any_other, cleanup) condition; 163 164 /* Procedures */ 165 166 dcl com_err_ entry options (variable); 167 dcl convert_access_class_$from_string 168 entry (bit (72) aligned, char (*), fixed bin (35)); 169 dcl convert_dial_message_$return_io_module 170 entry (fixed bin (71), char (*), char (*), fixed bin, 1 structure aligned, 171 2 bit (1) unal, 2 bit (1) unal, 2 bit (1) unal, 2 bit (33) unal, fixed bin (35)); 172 dcl ( 173 dial_manager_$allow_dials, 174 dial_manager_$dial_out, 175 dial_manager_$privileged_attach, 176 dial_manager_$registered_server, 177 dial_manager_$release_channel, 178 dial_manager_$release_channel_no_hangup, 179 dial_manager_$release_dial_id, 180 dial_manager_$terminate_dial_out 181 ) entry (ptr, fixed bin (35)); 182 dcl dsa_tty_$attach entry (char (*), fixed bin (71), fixed bin (35), fixed bin, fixed bin (35)); 183 dcl dsa_tty_$connect entry (char (*), ptr, fixed bin (71), char (*) var, ptr, char (*), 184 fixed bin (35), ptr, fixed bin (21), char (*) var, (2) bit (72) aligned, 185 fixed bin (35)); 186 dcl dsa_tty_$detach entry (fixed bin (35), fixed bin, fixed bin, fixed bin (35)); 187 dcl dsa_tty_$event entry (fixed bin (35), fixed bin (71), fixed bin, fixed bin (35)); 188 dcl dsa_tty_$order entry (fixed bin (35), character (*), pointer, fixed bin, fixed bin (35)); 189 dcl dsa_tty_io_$control entry (ptr, char (*), ptr, fixed bin (35)); 190 dcl ( 191 dsa_tty_io_$put_chars, 192 dsa_tty_io_$get_chars, 193 dsa_tty_io_$get_line, 194 dsa_tty_io_$modes, 195 dsa_tty_io_$position, 196 dsa_tty_io_$control_not_open 197 ) ext entry; 198 dcl get_process_id_ entry () returns (bit (36)); 199 dcl get_system_free_area_ entry () returns (pointer); 200 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 201 dcl ipc_$decl_ev_wait_chn entry (fixed bin (71), fixed bin (35)); 202 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 203 dcl hcs_$delete_channel entry (fixed bin (71), fixed bin (35)); 204 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 205 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 206 dcl hcs_$tty_attach entry (char (*), fixed bin (71), fixed bin, fixed bin, fixed bin (35)); 207 dcl hcs_$tty_detach entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 208 dcl hcs_$tty_event entry (fixed bin, fixed bin (71), fixed bin, fixed bin (35)); 209 dcl hcs_$tty_order entry (fixed bin, character (*), pointer, fixed bin, fixed bin (35)); 210 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 211 dcl ioa_$rsnnl entry options (variable); 212 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 213 dcl ipc_$create_event_channel 214 entry (ptr, fixed bin (71), fixed bin (35)); 215 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 216 dcl ( 217 ipc_$mask_ev_calls, 218 ipc_$unmask_ev_calls 219 ) entry (fixed bin (35)); 220 dcl null_entry_ entry (); 221 dcl ( 222 tty_io_$put_chars, 223 tty_io_$get_chars, 224 tty_io_$get_line, 225 tty_io_$modes, 226 tty_io_$position, 227 tty_io_$control, 228 tty_io_$control_not_open 229 ) ext entry; 230 dcl user_info_$terminal_data 231 entry (char (*), char (*), char (*), fixed bin, char (*)); 232 233 /* include files */ 234 235 /* tty_attach */ 236 237 tty_attach: 238 entry (arg_iocbp, option_array, com_err_switch, code); 239 240 code = 0; 241 mask = ""b; 242 iocbp = arg_iocbp; 243 resource_description, device, phone_no, dial_id, access_class_string = ""; 244 password, person_id, billing_id, project_id = ""; 245 password_given, person_id_given, billing_id_given, project_id_given = "0"b; 246 access_class_specified = ""b; 247 login_channel, do_not_block = ""b; 248 hangup = "1"b; /* hangup is default */ 249 suppress_dial_manager = "0"b; 250 attach_data_ptr = null (); 251 on cleanup call clean_up_attach; 252 253 system_free_area_ptr = get_system_free_area_ (); 254 255 if hbound (option_array, 1) < 1 256 then call error (error_table_$noarg, "Usage: tty_ {device} {-control_args}"); 257 258 if iocbp -> iocb.attach_descrip_ptr ^= null () 259 then call error (error_table_$not_detached, ""); 260 261 do i = lbound (option_array, 1) to hbound (option_array, 1); 262 if /* case */ index (option_array (i), "-") ^= 1 263 then do; /* channel name */ 264 if device ^= "" 265 then call error (error_table_$wrong_no_of_args, "Multiple devices specified."); 266 device = option_array (i); 267 end; 268 269 else if option_array (i) = "-login_channel" 270 then login_channel = "1"b; 271 272 else if option_array (i) = "-hangup_on_detach" 273 then hangup = "1"b; 274 else if option_array (i) = "-no_hangup_on_detach" 275 then hangup = "0"b; 276 277 else if option_array (i) = "-resource" | option_array (i) = "-rsc" 278 then do; 279 i = i + 1; 280 if resource_description ^= "" 281 then call error (error_table_$too_many_args, "A second resource description was given."); 282 if i > hbound (option_array, 1) 283 then if char (option_array (i), 1) = "-" 284 then call error (error_table_$noarg, 285 "Control argument found in place of resource description."); 286 else call error (error_table_$noarg, "-resource given without a description."); 287 else ; 288 resource_description = option_array (i); 289 end; 290 291 else if option_array (i) = "-destination" | option_array (i) = "-ds" 292 then do; 293 i = i + 1; 294 if phone_no ^= "" 295 then call error (error_table_$too_many_args, "Multiple dial_out destinations given."); 296 if i > hbound (option_array, 1) 297 then call error (error_table_$noarg, "Phone number."); 298 phone_no = option_array (i); 299 end; 300 301 else if option_array (i) = "-password" | option_array (i) = "-pwd" | option_array (i) = "-pw" 302 then do; 303 i = i + 1; 304 if i > hbound (option_array, 1) 305 then call error (error_table_$noarg, "Password."); 306 password = option_array (i); 307 password_given = "1"b; 308 end; 309 310 else if option_array (i) = "-billing" | option_array (i) = "-bill" | option_array (i) = "-blg" 311 then do; 312 i = i + 1; 313 if i > hbound (option_array, 1) 314 then call error (error_table_$noarg, "Billing."); 315 billing_id = option_array (i); 316 billing_id_given = "1"b; 317 end; 318 319 else if option_array (i) = "-project" | option_array (i) = "-proj" | option_array (i) = "-pj" 320 then do; 321 i = i + 1; 322 if i > hbound (option_array, 1) 323 then call error (error_table_$noarg, "Project."); 324 project_id = option_array (i); 325 project_id_given = "1"b; 326 end; 327 328 329 else if option_array (i) = "-person_id" | option_array (i) = "-prsid" 330 then do; 331 i = i + 1; 332 if i > hbound (option_array, 1) 333 then call error (error_table_$noarg, "Person_id."); 334 person_id = option_array (i); 335 person_id_given = "1"b; 336 end; 337 338 339 else if option_array (i) = "-dial_id" 340 then do; 341 i = i + 1; 342 if dial_id ^= "" 343 then call error (error_table_$too_many_args, "Multiple dial ID's given."); 344 if i > hbound (option_array, 1) 345 then call error (error_table_$noarg, "Dial ID."); 346 dial_id = option_array (i); 347 end; 348 349 else if option_array (i) = "-no_block" 350 then do; 351 do_not_block = "1"b; 352 end; 353 354 else if option_array (i) = "-required_access_class" 355 then do; 356 i = i + 1; 357 if access_class_specified 358 then call error (error_table_$too_many_args, "Multiple access classes destinations given."); 359 if i > hbound (option_array, 1) 360 then call error (error_table_$noarg, "Access class."); 361 access_class_string = option_array (i); 362 access_class_specified = "1"b; 363 end; 364 365 else if option_array (i) = "-suppress_dial_manager" 366 then suppress_dial_manager = "1"b; 367 else if option_array (i) = "-no_suppress_dial_manager" 368 then suppress_dial_manager = "0"b; 369 else call error (error_table_$badopt, (option_array (i))); 370 end; 371 372 if login_channel 373 & ((phone_no ^= "") | (device ^= "") | (resource_description ^= "") | (dial_id ^= "") | (password ^= "") 374 | (billing_id ^= "") | (project_id ^= "") | (person_id ^= "") | access_class_specified) 375 then call error (error_table_$inconsistent, "-login_channel and other control arguments."); 376 if (dial_id ^= "") & ((phone_no ^= "")) 377 then call error (error_table_$inconsistent, "-dial_id and -destination."); 378 379 if access_class_specified 380 then do; 381 call convert_access_class_$from_string (access_class, access_class_string, code); 382 if code ^= 0 383 then call error (code, access_class_string); 384 end; 385 386 if login_channel 387 then call user_info_$terminal_data ("", "", device, (0), ""); 388 389 tty_max_mode_length = 512; /* probably long enough, but we will check */ 390 allocate attach_data in (system_free_area); 391 392 string (attach_data.flags) = ""b; 393 attach_data.device_id = device; 394 attach_data.device_used = device; /* unless dm_ changes it */ 395 attach_data.resource_desc = resource_description; 396 attach_data.dial_phone = phone_no; 397 attach_data.phone_given = (phone_no ^= ""); 398 attach_data.dial_id = dial_id; 399 attach_data.accept_dial = (dial_id ^= ""); 400 attach_data.login_channel = login_channel; 401 attach_data.no_block = do_not_block; 402 if login_channel then /* hangup does not apply to login channel. */ 403 attach_data.hangup = "0"b; 404 else 405 attach_data.hangup = hangup; /* DSA: hangup instead of "0"b */ 406 attach_data.operation_hlock = 0; 407 attach_data.tty_index, attach_data.tty_handle, attach_data.event_wait.channel_id (1), 408 attach_data.dial_manager_event.channel_id (1) = 0; 409 410 411 412 /* The network_type is determined by the structure of the channel name. */ 413 /* If "accept_dial" there is no channel name, so we must first call */ 414 /* "try_dial_manager_attach" to obtain a channel name, and then we */ 415 /* can call "try_hcs_attach". */ 416 417 if attach_data.flags.accept_dial 418 then do; 419 420 if suppress_dial_manager 421 then call error (code, "hcs_ terminal attachment failed."); 422 423 call try_dial_manager_attach (code); 424 if code ^= 0 425 then call error (code, "Could not assign channel."); 426 427 call try_hcs_attach (code); 428 if code ^= 0 429 then call error (code, "Could not attach channel."); 430 end; 431 432 else do; 433 434 /* If we have a channel name, we always try to get the channel */ 435 /* with hcs_, to avoid changing the dial_manager_ event channel */ 436 /* if we do not have to. All we could do wrong here is successfully */ 437 /* attach a channel with the wrong reservation characteristics etc. */ 438 439 call try_hcs_attach (code); 440 if code ^= 0 441 then do; 442 443 if attach_data.login_channel 444 then call error (code, "Cannot attach login channel."); 445 446 if suppress_dial_manager 447 then call error (code, "hcs_ terminal attachment failed."); 448 449 if attach_data.network_type = DSA_NETWORK_TYPE 450 then do; /* Prepare the submitter_id structure */ 451 452 subidp = addr (user_id); 453 user_id.version = SUBMITTER_ID_V1; 454 user_id.person_id = person_id; 455 user_id.project_id = project_id; 456 user_id.billing_id = billing_id; 457 user_id.password = password; 458 459 dsa_connection_info_ptr = null; 460 call dsa_tty_$connect (attach_data.device_id, system_free_area_ptr, 0, 461 attach_data.dial_phone, subidp, attach_data.device_used, (0), 462 dsa_connection_info_ptr, dsa_connection_info_len, atd, access_class_range, 463 code); 464 if code ^= 0 465 then call error (code, "Could not connect channel."); 466 467 /*** free the connection info */ 468 469 if dsa_connection_info_ptr ^= null then 470 free connection_info in (system_free_area); 471 end; 472 473 else do; /* MCS_NETWORK_TYPE */ 474 call try_dial_manager_attach (code); 475 if code ^= 0 476 then call error (code, "Could not assign channel."); 477 end; 478 479 call try_hcs_attach (code); 480 if code ^= 0 481 then call error (code, "Could not attach channel."); 482 end; 483 end; 484 485 call make_atd; 486 487 call check_mode_length; /* this may re-allocate the attach_data structure. */ 488 489 on any_other call handler; /* should be on */ 490 491 call hcs_$set_ips_mask (""b, mask); 492 iocbp -> iocb.attach_descrip_ptr = addr (attach_data.attach_descrip); 493 iocbp -> iocb.attach_data_ptr = attach_data_ptr; 494 iocbp -> iocb.detach_iocb = tty_detach; 495 iocbp -> iocb.open = tty_open; 496 497 if attach_data.network_type = DSA_NETWORK_TYPE 498 then iocbp -> iocb.control = dsa_tty_io_$control_not_open; 499 else /* MCS */ 500 iocbp -> iocb.control = tty_io_$control_not_open; 501 502 call iox_$propagate (iocbp); 503 revert any_other; 504 call hcs_$reset_ips_mask (mask, mask); 505 506 507 RETURN: 508 return; 509 510 511 512 make_atd: 513 procedure; /* format: off */ 514 515 call ioa_$rsnnl ( 516 "^a ^[-login_channel^s^;^a^]^[ -resource ^a^;^s^]^[ -destination ^a^;^s^]" || 517 "^[ -password^;^]^[ -person_id ^a^;^s^]^[ -project ^a^;^s^]" || 518 "^[ -billing ^a^;^s^]^[ -dial_id ^a^;^s^]^[ -no_block^]" || 519 "^[ ^[-no_hangup_on_detach^;-hangup_on_detach^]^]^[ -suppress_dial_manager^]", 520 attach_data.attach_descrip, (0), 521 dim_name, 522 attach_data.login_channel, attach_data.device_used, 523 (attach_data.resource_desc ^= ""), attach_data.resource_desc, 524 attach_data.phone_given, attach_data.dial_phone, 525 password_given, 526 person_id_given, person_id, 527 project_id_given, project_id, 528 billing_id_given, billing_id, 529 attach_data.accept_dial, attach_data.dial_id, 530 attach_data.no_block, 531 ^attach_data.login_channel, 532 ^attach_data.hangup, 533 suppress_dial_manager); 534 535 /* format: ^off */ 536 537 end make_atd; 538 539 540 /* Error calls com_err_ if the loud switch is set and goes to the attach return */ 541 542 error: 543 proc (err_code, message); 544 545 dcl err_code fixed bin (35); /* Multics standard error code */ 546 dcl message char (*); /* Additional error information */ 547 548 if com_err_switch 549 then call com_err_ (err_code, dim_name, "^a ^a", iocbp -> iocb.name, message); 550 code = err_code; 551 552 call clean_up_attach; 553 goto RETURN; 554 555 end error; 556 557 /* This entry detaches the terminal and frees the information about it. It ignores the code and does 558* the following: 559* 560* 1. The event channel is released. 561* 2. The channel is released if it was attached with dial_manager_. 562* 3. The table space in this dim for the attachment is freed iff the hlock is clear. 563**/ 564 565 tty_detach: 566 entry (arg_iocbp, code); 567 568 call set_up; /* set no lock, but get actual_iocb_ptr */ 569 570 call hcs_detach; 571 572 call release_channel; /* if we got it with dm_, let it go */ 573 574 on any_other call handler; /* should be on */ 575 call hcs_$set_ips_mask (""b, mask); 576 actual_iocbp -> iocb.attach_descrip_ptr = null (); 577 actual_iocbp -> iocb.attach_data_ptr = null (); 578 actual_iocbp -> iocb.detach_iocb = iox_$err_not_attached; 579 actual_iocbp -> iocb.open = iox_$err_not_attached; 580 actual_iocbp -> iocb.control = iox_$err_not_attached; 581 call iox_$propagate (actual_iocbp); 582 call hcs_$reset_ips_mask (mask, mask); 583 revert any_other; /* avoid unneccessary fatal errors */ 584 if attach_data.operation_hlock = 0 585 then free attach_data in (system_free_area); 586 else attach_data.async_detach = "1"b; /* warn other incarnations */ 587 588 return; 589 590 /* This entry sets the open description and the legal operation entries in the iocb. The operations permitted: 591* 592* all the time: close, control, modes 593* input: get_chars, get_line, position 594* output: put_chars 595**/ 596 597 tty_open: 598 entry (arg_iocbp, mode, extend_bit, code); 599 600 601 call set_up; 602 603 if mode = Stream_input | mode = Stream_output | mode = Stream_input_output 604 then attach_data.open_descrip = iox_modes (mode); 605 else do; 606 code = error_table_$bad_mode; 607 return; 608 end; 609 610 call allocate_ev_channel (code); /* in case user supplied with set_event */ 611 if code ^= 0 612 then return; 613 614 call ipc_$mask_ev_calls (code); /* do not let user code run till we are really open */ 615 if code ^= 0 616 then return; 617 618 if attach_data.async_hangup 619 then code = error_table_$io_no_permission; /* we lost it during these last few statements */ 620 621 else do; 622 if attach_data.network_type = DSA_NETWORK_TYPE 623 then call dsa_tty_$event (attach_data.tty_handle, attach_data.event_wait.channel_id (1), (0), code); 624 else /* MCS */ 625 call hcs_$tty_event (attach_data.tty_index, attach_data.event_wait.channel_id (1), (0), code); 626 end; 627 628 if code ^= 0 629 then do; 630 call ipc_$unmask_ev_calls ((0)); 631 return; 632 end; 633 634 635 on any_other call handler; 636 call hcs_$set_ips_mask (""b, mask); 637 638 actual_iocbp -> iocb.open_descrip_ptr = addr (attach_data.open_descrip); 639 actual_iocbp -> iocb.detach_iocb = iox_$err_not_closed; 640 actual_iocbp -> iocb.open = iox_$err_not_closed; 641 actual_iocbp -> iocb.close = tty_close; 642 643 if attach_data.network_type = DSA_NETWORK_TYPE 644 then do; /* DSA */ 645 646 actual_iocbp -> iocb.modes = dsa_tty_io_$modes; 647 actual_iocbp -> iocb.control = dsa_tty_io_$control; 648 649 if mode ^= Stream_output 650 then do; 651 actual_iocbp -> iocb.get_line = dsa_tty_io_$get_line; 652 actual_iocbp -> iocb.get_chars = dsa_tty_io_$get_chars; 653 actual_iocbp -> iocb.position = dsa_tty_io_$position; 654 end; 655 656 if mode ^= Stream_input 657 then actual_iocbp -> iocb.put_chars = dsa_tty_io_$put_chars; 658 end; 659 660 else do; /* MCS*/ 661 662 actual_iocbp -> iocb.modes = tty_io_$modes; 663 actual_iocbp -> iocb.control = tty_io_$control; 664 665 if mode ^= Stream_output 666 then do; 667 actual_iocbp -> iocb.get_line = tty_io_$get_line; 668 actual_iocbp -> iocb.get_chars = tty_io_$get_chars; 669 actual_iocbp -> iocb.position = tty_io_$position; 670 end; 671 672 if mode ^= Stream_input 673 then actual_iocbp -> iocb.put_chars = tty_io_$put_chars; 674 end; 675 676 call iox_$propagate (actual_iocbp); 677 call hcs_$reset_ips_mask (mask, mask); 678 revert any_other; 679 call ipc_$unmask_ev_calls ((0)); 680 681 if attach_data.network_type = DSA_NETWORK_TYPE 682 then call dsa_tty_$order (attach_data.tty_handle, "start", null (), state, code); 683 else /* MCS */ 684 call hcs_$tty_order (attach_data.tty_index, "start", null (), state, code); 685 686 /* If this is a DSA login connection, the terminal type is already known, */ 687 /* the tables are not initialized for this terminal type; So, we have */ 688 /* to initialize the conversion tables, the TCB, SCB, etc ... as they are */ 689 /* in the login server for this connection. We use a new control order: */ 690 /* init_term_type. */ 691 692 if attach_data.network_type = DSA_NETWORK_TYPE 693 then do; 694 call dsa_tty_io_$control (actual_iocbp, "init_term_type", null (), code); 695 if code ^= 0 696 then call error (code, "init_term_type"); 697 end; 698 699 code = 0; 700 return; 701 702 /* This procedure closes the io switch and returns a zero code. */ 703 704 tty_close: 705 entry (arg_iocbp, code); 706 707 call set_up; 708 if attach_data.operation_hlock ^= 0 709 then attach_data.async_close = "1"b; 710 711 /* turn off wakeups from the channel */ 712 713 if ^attach_data.async_hangup /* don't bother if it's not ours */ 714 then do; 715 716 if attach_data.network_type = DSA_NETWORK_TYPE 717 then call dsa_tty_$event (attach_data.tty_handle, (0), (0), (0)); 718 else /* MCS */ 719 call hcs_$tty_event (attach_data.tty_index, (0), (0), (0)); 720 end; 721 722 /*** If tty_ created the event channel, we will now destroy it. However, we do not zero 723* event_wait.channel_id(1) because, if an I/O was in progress on the switch which called ipc_$block and the 724* user disconnects the channel, when he reconnects and types "start", control will return to ipc_$block which 725* will attempt to validate the channel name. If we zero the channel name, this will fail and the restart 726* will not work properly. */ 727 728 if attach_data.assigned_ev_channel /* fast channel, give back to hardcore */ 729 then do; 730 call hcs_$delete_channel (attach_data.event_wait.channel_id (1), code); 731 attach_data.have_ev_channel, attach_data.assigned_ev_channel = "0"b; 732 end; 733 else if attach_data.created_ev_channel /* we created regular channel */ 734 then do; 735 call ipc_$delete_ev_chn (attach_data.event_wait.channel_id (1), code); 736 attach_data.have_ev_channel, attach_data.created_ev_channel = "0"b; 737 end; 738 else ; /* user supplied event channel remains until detached */ 739 740 on any_other call handler; /* should be on */ 741 call hcs_$set_ips_mask (""b, mask); 742 743 actual_iocbp -> iocb.open_descrip_ptr = null; 744 actual_iocbp -> iocb.detach_iocb = tty_detach; 745 actual_iocbp -> iocb.open = tty_open; 746 747 if attach_data.network_type = DSA_NETWORK_TYPE 748 then actual_iocbp -> iocb.control = dsa_tty_io_$control_not_open; 749 else /* MCS */ 750 actual_iocbp -> iocb.control = tty_io_$control_not_open; 751 752 actual_iocbp -> iocb.modes = iox_$err_not_open; 753 754 call iox_$propagate (actual_iocbp); 755 756 call hcs_$reset_ips_mask (mask, mask); 757 return; 758 759 /* Internal procedure to handle faults while IPS interrupts are masked. For a fault while masked, the process 760* is terminated (with the reason "unable to do critical I/O") because the I/O control blocks are in an 761* inconsistent state. 762**/ 763 764 handler: 765 procedure options (non_quick); /* visible in azm */ 766 767 dcl error_table_$unable_to_do_io 768 fixed (35) ext; 769 770 if mask ^= ""b 771 then call terminate_this_process (error_table_$unable_to_do_io); 772 773 end handler; 774 775 776 terminate_this_process: 777 procedure (cd); 778 779 dcl cd fixed bin (35); 780 dcl terminate_process_ ext entry (char (*), ptr); 781 dcl 1 ti aligned automatic, 782 2 version fixed, 783 2 code fixed (35); 784 785 786 ti.version = 0; 787 ti.code = cd; 788 call terminate_process_ ("fatal_error", addr (ti)); 789 790 end terminate_this_process; 791 792 allocate_ev_channel: 793 procedure (code); /* Assign event channel */ 794 795 dcl code fixed binary (35) parameter; 796 797 code = 0; 798 799 if attach_data.have_ev_channel /* user supplied a channel via "set_event" order */ 800 then return; 801 802 /*** Try to get a fast channel, first; */ 803 /*** If no success create an event channel. */ 804 805 ipcas.version = ipc_create_arg_structure_v1; 806 ipcas.channel_type = FAST_EVENT_CHANNEL_TYPE; 807 ipcas.call_entry = null_entry_; 808 ipcas.call_data_ptr = null (); 809 ipcas.call_priority = 0; 810 call ipc_$create_event_channel (addr (ipcas), attach_data.event_wait.channel_id (1), code); 811 if code = 0 812 then attach_data.assigned_ev_channel = "1"b; 813 else do; 814 ipcas.channel_type = WAIT_EVENT_CHANNEL_TYPE; 815 call ipc_$create_event_channel (addr (ipcas), attach_data.event_wait.channel_id (1), code); 816 if code = 0 817 then attach_data.created_ev_channel = "1"b; 818 else return; 819 end; 820 821 attach_data.have_ev_channel = "1"b; /* here if we created a channel */ 822 return; 823 824 end allocate_ev_channel; 825 826 827 try_hcs_attach: 828 procedure (code); 829 830 dcl code fixed bin (35); 831 832 code = 0; 833 834 /* The network_type is initialized here. */ 835 /* set no event -- it will be set with tty_event at open time */ 836 837 if substr (device, 1, 4) = "dsa." /* DSA */ 838 then do; 839 attach_data.network_type = DSA_NETWORK_TYPE; 840 call dsa_tty_$attach (attach_data.device_used, 0, attach_data.tty_handle, state, code); 841 end; 842 843 else do; /* MCS */ 844 attach_data.network_type = MCS_NETWORK_TYPE; 845 call hcs_$tty_attach (attach_data.device_used, 0, attach_data.tty_index, state, code); 846 end; 847 848 if code = 0 849 then if attach_data.login_channel 850 then do; 851 if attach_data.network_type = DSA_NETWORK_TYPE 852 then /* DSA */ 853 call dsa_tty_$order (attach_data.tty_handle, "set_line_status_enabled", addr (ZERO_BIT), 854 state, code); 855 else /* MCS */ 856 call hcs_$tty_order (attach_data.tty_index, "set_line_status_enabled", addr (ZERO_BIT), 857 state, code); 858 end; 859 860 end try_hcs_attach; 861 862 try_dial_manager_attach: 863 procedure (code); 864 865 dcl code fixed bin (35); 866 867 code = 0; 868 call ipc_$create_ev_chn (attach_data.dial_manager_event.channel_id (1), code); 869 if code ^= 0 870 then return; 871 dma.version = dial_manager_arg_version_3; 872 dma.dial_channel = attach_data.dial_manager_event.channel_id (1); 873 (nostrz): 874 dma.dial_qualifier = attach_data.dial_id; 875 dma.channel_name = attach_data.device_id; 876 dma.dial_out_destination = attach_data.dial_phone; 877 dma.reservation_string = resource_description; 878 879 if ^access_class_specified 880 then dma.access_class, dma.access_class_required = "0"b; 881 else do; 882 dma.access_class = access_class; 883 dma.access_class_required = "1"b; 884 end; 885 886 if attach_data.flags.phone_given 887 then call dial_manager_$dial_out (addr (dma), code); 888 else if attach_data.flags.accept_dial 889 then do; 890 call dial_manager_$registered_server (addr (dma), code); 891 if code ^= 0 892 then call dial_manager_$allow_dials (addr (dma), code); 893 end; 894 else call dial_manager_$privileged_attach (addr (dma), code); 895 896 /* 897* If this is a priv_attach, then if we already have it then everything 898* is fine. If user specified the destination, then we must dial to it. 899**/ 900 901 if (code = error_table_$resource_attached) & ^attach_data.flags.phone_given 902 then do; /*** must release is still "0"b at this point */ 903 code = 0; /* do not go blocked, as has nothing further to say */ 904 return; 905 end; 906 if code ^= 0 /* couldn't get the channel at all */ 907 then do; 908 dm_attachment_failed_: 909 call ipc_$delete_ev_chn (attach_data.dial_manager_event.channel_id (1), (0)); 910 attach_data.dial_manager_event.channel_id (1) = 0; 911 attach_data.flags.must_release = "0"b; 912 return; 913 end; 914 915 attach_data.flags.must_release = "1"b; /* in case of cleanup during block */ 916 917 call ipc_$block (addr (attach_data.dial_manager_event), addr (event_message), code); 918 /* wait for news from initializer */ 919 if code ^= 0 920 then go to dm_attachment_failed_; 921 922 call convert_dial_message_$return_io_module (event_message.message, device, (""), (0), dm_flags, code); 923 if code ^= 0 924 then go to dm_attachment_failed_; 925 if ^dm_flags.dialup 926 then do; 927 code = error_table_$action_not_performed; 928 go to dm_attachment_failed_; 929 end; 930 931 attach_data.flags.must_release = "1"b; 932 attach_data.flags.hangup = hangup; 933 attach_data.device_used = device; /* starnames unstarred here */ 934 935 if attach_data.flags.accept_dial 936 then do; 937 call dial_manager_$release_dial_id (addr (dma), code); 938 if code ^= 0 /* we still have to release the channel */ 939 then return; 940 end; 941 942 call ipc_$decl_ev_call_chn (attach_data.dial_manager_event.channel_id (1), tty_as_signal_handler, 943 attach_data_ptr, 1 /* NOTE: what's a reasonable priority? */, code); 944 if code ^= 0 945 then do; /* this must work for proper operation */ 946 code = error_table_$action_not_performed; 947 return; /* ... but we must still release the channel */ 948 end; 949 950 return; 951 952 end try_dial_manager_attach; 953 954 /* This entrypoint is called whenever an IPC signal is sent by the Answering 955* Service for a channel which we had attached via dial_manager_. We check 956* the message to determine the type of event and, if the event is a hangup, 957* we set the async_hangup flag, disable any subsequent attempts to release 958* the channel as we no longer own it, send a wakeup on the I/O event channel 959* to unblock any interrupted I/O, and invoke the user's hangup procedure 960* (if any). */ 961 962 tty_as_signal_handler: 963 entry (arg_event_call_info_ptr); 964 965 event_call_info_ptr = arg_event_call_info_ptr; 966 attach_data_ptr = event_call_info.data_ptr; 967 968 call convert_dial_message_$return_io_module (event_call_info.message, device, (""), (0), dm_flags, local_code); 969 if local_code ^= 0 /* ignore signals we can't interpret */ 970 then return; 971 972 if device ^= attach_data.device_used /* ignore signals for other channels */ 973 then return; 974 975 if ^dm_flags.hungup /* ignore anything other than hangup signals */ 976 then return; 977 978 attach_data.async_hangup = "1"b; 979 attach_data.must_release = "0"b; /* it's no longer ours */ 980 981 if attach_data.operation_hlock > 0 /* try to unblock pending I/O */ 982 then call hcs_$wakeup (get_process_id_ (), attach_data.event_wait.channel_id (1), 0, (0)); 983 984 if attach_data.have_user_hangup_proc /* let the user do his thing */ 985 then do; 986 local_eci = event_call_info; /* ... user needs to get same info but with his data_ptr */ 987 local_eci.data_ptr = attach_data.user_hangup_proc.data_ptr; 988 call attach_data.user_hangup_proc.procedure (addr (local_eci)); 989 end; 990 991 return; 992 993 release_channel: 994 procedure; 995 996 declare code fixed bin (35); 997 998 if attach_data.flags.must_release 999 then do; 1000 dma.version = dial_manager_arg_version_3; 1001 dma.channel_name = attach_data.device_used; 1002 dma.dial_channel = attach_data.dial_manager_event.channel_id (1); 1003 call ipc_$decl_ev_wait_chn (dma.dial_channel, code); 1004 1005 if /* case */ attach_data.flags.phone_given 1006 then call dial_manager_$terminate_dial_out (addr (dma), code); 1007 else if attach_data.flags.hangup 1008 then call dial_manager_$release_channel (addr (dma), code); 1009 else call dial_manager_$release_channel_no_hangup (addr (dma), code); 1010 1011 attach_data.flags.must_release = "0"b; 1012 end; 1013 1014 if attach_data.dial_manager_event.channel_id (1) ^= 0 1015 then do; 1016 call ipc_$delete_ev_chn (attach_data.dial_manager_event.channel_id (1), code); 1017 attach_data.dial_manager_event.channel_id (1) = 0; 1018 end; 1019 1020 return; 1021 1022 end release_channel; 1023 1024 1025 hcs_detach: 1026 procedure; 1027 1028 if ((attach_data.tty_index > 0) | (attach_data.tty_handle > 0)) & ^attach_data.async_hangup 1029 then do; /* don't bother detaching if it's no longer ours */ 1030 1031 if attach_data.network_type = DSA_NETWORK_TYPE 1032 then do; /*** If no_hangup_on_detach we just detach in tty_ (dflag = 0); */ 1033 /*** else we terminate the session in session control (dflag = 1) */ 1034 1035 if attach_data.hangup 1036 then call dsa_tty_$detach (attach_data.tty_handle, 1, (0), local_code); 1037 else call dsa_tty_$detach (attach_data.tty_handle, 0, (0), local_code); 1038 end; 1039 1040 else /* MCS */ 1041 call hcs_$tty_detach (attach_data.tty_index, 0, (0), local_code); 1042 1043 if local_code ^= 0 /* lost the channel after last block */ 1044 then attach_data.flags.must_release = "0"b; 1045 end; 1046 1047 attach_data.tty_index = 0; /* definitely not ours anymore */ 1048 1049 end hcs_detach; 1050 1051 1052 check_mode_length: 1053 procedure; 1054 1055 /**** Here we see if the hardcore returns more than our hard-coded guess 1056* of the maximum mode length. This code is here to avoid coordinating 1057* changes between this program and the hardcore, and to allow sites 1058* to have multiplexers that have long mode strings without neccessarily 1059* having to change this program. Clearly, having to reallocate all the 1060* time would be pretty poor. */ 1061 1062 declare 1 very_long_mode_info aligned, 1063 2 max_length fixed bin (21), 1064 2 mode_string char (2000); 1065 1066 declare new_attach_data_ptr pointer; 1067 1068 very_long_mode_info.max_length = 2000; 1069 very_long_mode_info.mode_string = ""; 1070 1071 if attach_data.network_type = DSA_NETWORK_TYPE 1072 then call dsa_tty_$order (attach_data.tty_handle, "modes", addr (very_long_mode_info), state, local_code); 1073 else /* MCS */ 1074 call hcs_$tty_order (attach_data.tty_index, "modes", addr (very_long_mode_info), state, local_code); 1075 1076 if local_code ^= 0 | length (rtrim (very_long_mode_info.mode_string)) <= attach_data.max_mode_length 1077 then return; 1078 1079 tty_max_mode_length = length (rtrim (very_long_mode_info.mode_string)) + 100; 1080 /* room to grow some */ 1081 allocate attach_data in (system_free_area) set (new_attach_data_ptr); 1082 new_attach_data_ptr -> attach_data = attach_data; /* copy away */ 1083 new_attach_data_ptr -> attach_data.max_mode_length = tty_max_mode_length; 1084 free attach_data in (system_free_area); 1085 attach_data_ptr = new_attach_data_ptr; 1086 return; 1087 1088 end check_mode_length; 1089 1090 1091 set_up: 1092 procedure; 1093 1094 code = 0; 1095 mask = ""b; 1096 actual_iocbp = arg_iocbp -> iocb.actual_iocb_ptr; 1097 attach_data_ptr = actual_iocbp -> iocb.attach_data_ptr; 1098 return; 1099 1100 end set_up; 1101 1102 1103 clean_up_attach: 1104 procedure; 1105 1106 if attach_data_ptr = null () 1107 then return; 1108 1109 if (attach_data.tty_index > 0) | (attach_data.tty_handle > 0) 1110 then call hcs_detach; 1111 1112 call release_channel (); 1113 1114 end clean_up_attach; 1115 /* BEGIN INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 1 2 1 3 /* Modified by E. N. Kittlitz 11/80 to add reservation string, move dial-out 1 4* destination from dial_qualifier, add dial_message. 1 5* Modified by Robert Coren 4/83 to add required access class stuff. 1 6* Modified 1984-08-27 BIM for V4, privileged_operation. 1 7**/ 1 8 1 9 1 10 dcl dial_manager_arg_version_2 fixed bin internal static initial (2) options (constant); 1 11 dcl dial_manager_arg_version_3 fixed bin internal static initial (3) options (constant); 1 12 dcl dial_manager_arg_version_4 fixed bin internal static initial (4) options (constant); 1 13 1 14 dcl 1 dial_manager_arg based aligned, 1 15 2 version fixed bin, /* = 4 */ 1 16 2 dial_qualifier char (22), /* identify different processes with same process group id */ 1 17 2 dial_channel fixed bin (71), /* event wait channel */ 1 18 2 channel_name char (32), /* channel name for privileged attach */ 1 19 /* limit of version 1 structure */ 1 20 2 dial_out_destination char (32), /* dial-out destination (e.g. phone_no) */ 1 21 2 reservation_string char (256), /* reservation string */ 1 22 2 dial_message fixed bin (71), /* OUTPUT: A.S. message received by dial_manager_ */ 1 23 /* limit of version 2 structure */ 1 24 2 access_class bit (72), /* access class to be associated with the attachment */ 1 25 2 flags aligned, 1 26 3 access_class_required bit (1) unaligned, /* indicates whether to enforce access_class */ 1 27 3 privileged_operation bit (1) unaligned, /* for accept_dials, accepts dials from */ 1 28 /* system_low:access_class */ 1 29 /* no effect on other operations yet. */ 1 30 3 mbz bit (34) unaligned; /* must be zero */ 1 31 1 32 /* END INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 1115 1116 /* BEGIN: dsa_scu_sec_info.incl.pl1 * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(84-06-23,Kissel), approve(87-07-23,MCR7742), 2 5* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 2 6* Created. 2 7* END HISTORY COMMENTS */ 2 8 2 9 /*****************************************************************************/ 2 10 /* */ 2 11 /* This Include contains the structures needed at connect listen */ 2 12 /* receive_control (establishment) to pass the information about */ 2 13 /* the identity of the local or remote end_point of the session */ 2 14 /* */ 2 15 /* Writen 6/84 by R.J.C. Kissel and J.P. Leguigner */ 2 16 /* */ 2 17 /*****************************************************************************/ 2 18 2 19 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 2 20 2 21 dcl SUBMITTER_ID_V1 char (8) internal static options (constant) init ("SUBID_v1"); 2 22 2 23 dcl subidp ptr; 2 24 dcl 1 submitter_id aligned based (subidp), 2 25 2 version char (8) unal, 2 26 2 person_id char (12) unal, 2 27 2 project_id char (12) unal, 2 28 2 billing_id char (12) unal, 2 29 2 password char (12) unal; 2 30 2 31 dcl SC_USER_SECURITY_INFO_V1 char (8) internal static options (constant) init ("SUSI_V1"); 2 32 dcl susip ptr; 2 33 dcl 1 sc_user_security_info based (susip), 2 34 2 version char (8) unal, 2 35 2 submitter_id like submitter_id, 2 36 2 flags unaligned, 2 37 3 person_loc_registered bit (1), 2 38 3 project_loc_registered bit (1), 2 39 3 password_loc_validated bit (1), 2 40 3 person_rem_validated bit (1), 2 41 3 project_rem_validated bit (1), 2 42 3 badge_indicator bit (1), 2 43 3 remote_SC_trusted bit (1), 2 44 3 pad bit (31), 2 45 2 aim_classes (2) bit (72); 2 46 2 47 /* END OF: dsa_scu_sec_info.incl.pl1 * * * * * */ 1116 1117 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 3 2 3 3 /* T. Casey, May 1978 */ 3 4 3 5 dcl event_call_info_ptr ptr; 3 6 3 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 3 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 3 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 3 10 2 sender bit (36), /* process id of sender */ 3 11 2 origin, 3 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 3 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 3 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 3 15 3 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 1117 1118 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 4 2 4 3 /* T. Casey, May 1978 */ 4 4 4 5 dcl event_wait_info_ptr ptr; 4 6 4 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 4 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 4 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 4 10 2 sender bit (36), /* process id of sender */ 4 11 2 origin, 4 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 4 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 4 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 4 15 4 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 1118 1119 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 5 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 5 3* version number to IOX2. */ 5 4 /* format: style2 */ 5 5 5 6 dcl 1 iocb aligned based, /* I/O control block. */ 5 7 2 version character (4) aligned, /* IOX2 */ 5 8 2 name char (32), /* I/O name of this block. */ 5 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 5 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 5 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 5 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 5 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 5 14 2 reserved bit (72), /* Reserved for future use. */ 5 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 5 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 5 17 /* open(p,mode,not_used,s) */ 5 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 5 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 5 20 /* get_line(p,bufptr,buflen,actlen,s) */ 5 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 5 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 5 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 5 24 /* put_chars(p,bufptr,buflen,s) */ 5 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 5 26 /* modes(p,newmode,oldmode,s) */ 5 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 5 28 /* position(p,u1,u2,s) */ 5 29 2 control entry (ptr, char (*), ptr, fixed (35)), 5 30 /* control(p,order,infptr,s) */ 5 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 5 32 /* read_record(p,bufptr,buflen,actlen,s) */ 5 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 5 34 /* write_record(p,bufptr,buflen,s) */ 5 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 5 36 /* rewrite_record(p,bufptr,buflen,s) */ 5 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 5 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 5 39 /* seek_key(p,key,len,s) */ 5 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 5 41 /* read_key(p,key,len,s) */ 5 42 2 read_length entry (ptr, fixed (21), fixed (35)), 5 43 /* read_length(p,len,s) */ 5 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 5 45 /* open_file(p,mode,desc,not_used,s) */ 5 46 2 close_file entry (ptr, char (*), fixed bin (35)), 5 47 /* close_file(p,desc,s) */ 5 48 2 detach entry (ptr, char (*), fixed bin (35)); 5 49 /* detach(p,desc,s) */ 5 50 5 51 declare iox_$iocb_version_sentinel 5 52 character (4) aligned external static; 5 53 5 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 1119 1120 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 6 2 6 3 /* Written 05/04/78 by C. D. Tavares */ 6 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 6 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 6 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 6 7 6 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 6 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 6 10 iox_$close entry (pointer, fixed bin (35)), 6 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 6 12 iox_$delete_record entry (pointer, fixed bin (35)), 6 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 6 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 6 15 iox_$err_not_attached entry options (variable), 6 16 iox_$err_not_closed entry options (variable), 6 17 iox_$err_no_operation entry options (variable), 6 18 iox_$err_not_open entry options (variable), 6 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 6 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 6 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 6 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 6 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 6 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 6 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 6 28 iox_$propagate entry (pointer), 6 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 6 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 6 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 6 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 6 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 6 40 6 41 dcl (iox_$user_output, 6 42 iox_$user_input, 6 43 iox_$user_io, 6 44 iox_$error_output) external static pointer; 6 45 6 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 1120 1121 /* Begin include file ..... iox_modes.incl.pl1 */ 7 2 7 3 /* Written by C. D. Tavares, 03/17/75 */ 7 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 7 5 7 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 7 7 ("stream_input", "stream_output", "stream_input_output", 7 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 7 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 7 10 "direct_input", "direct_output", "direct_update"); 7 11 7 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 7 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 7 14 7 15 dcl (Stream_input initial (1), 7 16 Stream_output initial (2), 7 17 Stream_input_output initial (3), 7 18 Sequential_input initial (4), 7 19 Sequential_output initial (5), 7 20 Sequential_input_output initial (6), 7 21 Sequential_update initial (7), 7 22 Keyed_sequential_input initial (8), 7 23 Keyed_sequential_output initial (9), 7 24 Keyed_sequential_update initial (10), 7 25 Direct_input initial (11), 7 26 Direct_output initial (12), 7 27 Direct_update initial (13)) fixed bin int static options (constant); 7 28 7 29 /* End include file ..... iox_modes.incl.pl1 */ 1121 1122 /*----------BEGIN ipc_create_arg.incl.pl1------------------------------------*/ 8 2 8 3 /* 8 4* This include file declares the structure which is the input argument to 8 5* ipc_$create_event_channel. 8 6**/ 8 7 8 8 /****^ HISTORY COMMENTS: 8 9* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7479), 8 10* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 8 11* New include file added to support async event channels. 8 12* END HISTORY COMMENTS */ 8 13 8 14 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 8 15 8 16 dcl ipc_create_arg_structure_ptr ptr; 8 17 dcl ipc_create_arg_structure_v1 char (8) internal static options (constant) init ("ipcarg01"); 8 18 8 19 dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr), 8 20 2 version char (8) unaligned, /* From above. */ 8 21 2 channel_type fixed bin, /* See constants below. */ 8 22 2 call_entry variable entry (ptr), /* For event call channels -- who to call. */ 8 23 2 call_data_ptr ptr, /* For event call channels -- something to tell them. */ 8 24 2 call_priority fixed bin (17); /* For event call channels -- who's first? */ 8 25 8 26 /* Constants for the event channel type. */ 8 27 8 28 dcl FAST_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (1); 8 29 dcl WAIT_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (2); 8 30 dcl CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (3); 8 31 dcl ASYNC_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (4); 8 32 8 33 dcl ANY_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (10); 8 34 8 35 /*----------END ipc_create_arg.incl.pl1--------------------------------------*/ 1122 1123 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 9 2 9 3 /****^ HISTORY COMMENTS: 9 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 9 5* install(86-10-09,MR12.0-1181): 9 6* This include file was formerly tty_event_message.incl.pl1. It has been 9 7* updated with different fields and new constants, and renamed to 9 8* net_event_message.incl.pl1 9 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 9 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 9 11* Add NETWORK_TYPE_VALUES array. 9 12* END HISTORY COMMENTS */ 9 13 9 14 /* describes event message passed with wakeups from the tty DIM */ 9 15 /* Created 5/24/76 by Robert S. Coren */ 9 16 9 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 9 18 9 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 9 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 9 21 9 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 9 23 2 version bit (2) unaligned, /* Currently version 1 */ 9 24 2 reason bit (16) unaligned, /* Additional info about the event */ 9 25 2 pad bit (6) unaligned, /* Must be zero */ 9 26 2 network_type fixed bin (4) unsigned unaligned, 9 27 /* See below for constants */ 9 28 2 type fixed bin (8) unsigned unaligned, 9 29 /* Type of interrupt, see below */ 9 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 9 31 9 32 /* Network type constants */ 9 33 9 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 9 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 9 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 9 37 9 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 9 39 "MCS", 9 40 "DSA", 9 41 "MOWSE"); 9 42 9 43 9 44 /* MCS event message type constants */ 9 45 9 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 9 47 9 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 9 49 /* used for "start" order, etc. */ 9 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 9 51 /* dialup */ 9 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 9 53 /* hangup */ 9 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 9 55 /* dialout status returned */ 9 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 9 57 /* quit */ 9 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 9 59 /* input arrived */ 9 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 9 61 /* output completed */ 9 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 9 63 /* control tables sent status */ 9 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 9 65 /* channel masked by FNP */ 9 66 9 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 9 68 /* 0 */ 9 69 "dialup", /* 1 */ 9 70 "hangup", /* 2 */ 9 71 "dialout status", /* 3 */ 9 72 "quit", /* 4 */ 9 73 "read", /* 5 */ 9 74 "write", /* 6 */ 9 75 "line status", /* 7 */ 9 76 "masked"); /* 8 */ 9 77 9 78 /* DSA event message type constants */ 9 79 9 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 9 81 9 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 9 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 9 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 9 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 9 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 9 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 9 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 9 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 9 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 9 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 9 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 9 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 9 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 9 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 9 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 9 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 9 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 9 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 9 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 9 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 9 102 9 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 9 104 /* 0 */ 9 105 "attention", /* 1 */ 9 106 "data_attention", /* 2 */ 9 107 "demand_release_sru", /* 3 */ 9 108 "demand_turn", /* 4 */ 9 109 "demand_turn_ack", /* 5 */ 9 110 "purge", /* 6 */ 9 111 "recover", /* 7 */ 9 112 "recover_ack", /* 8 */ 9 113 "release_sru", /* 9 */ 9 114 "resume", /* 10 */ 9 115 "resume_ack", /* 11 */ 9 116 "suspend", /* 12 */ 9 117 "suspend_ack", /* 13 */ 9 118 "terminate_abnormal", /* 14 */ 9 119 "establishment", /* 15 */ 9 120 "terminated", /* 16 */ 9 121 "user_unassign", /* 17 */ 9 122 "data input", /* 18 */ 9 123 "data output"); /* 19 */ 9 124 9 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 1123 1124 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 10 2 /* Created 7/18/77 by Robert Coren */ 10 3 /* Defines info structure for set_term_type order */ 10 4 10 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 10 6 dcl sttip ptr; 10 7 10 8 dcl 1 set_term_type_info aligned based (sttip), 10 9 2 version fixed bin, 10 10 2 name char (32) unal, 10 11 2 flags unal, 10 12 3 send_initial_string bit (1), 10 13 3 set_modes bit (1), 10 14 3 ignore_line_type bit (1), 10 15 3 mbz bit (33); 10 16 10 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 1124 1125 /* BEGIN: tty_attach_data_.incl.pl1 * * * * * */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(81-01-01,Margulies), approve(), audit(), install(): 11 6* Created from internal declarations. 11 7* 2) change(85-12-01,Negaret), approve(87-07-23,MCR7742), 11 8* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 11 9* Add network_type and tty_handle. 11 10* END HISTORY COMMENTS */ 11 11 11 12 11 13 /* format: style2 */ 11 14 11 15 /* INTERNAL INTERFACE -- SUBJECT TO CHANGE */ 11 16 11 17 dcl attach_data_ptr pointer; 11 18 dcl 1 attach_data aligned based (attach_data_ptr), 11 19 2 attach_descrip character (128) varying, 11 20 2 open_descrip character (64) varying, 11 21 2 device_id character (32) unaligned, 11 22 /* given in atd */ 11 23 2 device_used character (32) unaligned, 11 24 /* aquired by dm_ */ 11 25 2 dial_phone character (64) varying, 11 26 2 dial_id character (32) unaligned, 11 27 2 resource_desc character (256) unaligned, 11 28 2 network_type fixed bin, 11 29 2 tty_index fixed bin, 11 30 2 tty_handle fixed bin (35), 11 31 2 operation_hlock fixed bin, /* if this is nonzero detach may not free this structure */ 11 32 2 flags aligned, 11 33 3 assigned_ev_channel 11 34 bit (1) unaligned, /* we got the channel as fast channel */ 11 35 3 created_ev_channel 11 36 bit (1) unaligned, /* we got it as slow channel */ 11 37 3 have_ev_channel bit (1) unaligned, /* there is a channel to use */ 11 38 3 login_channel bit (1) unaligned, /* we are login channel */ 11 39 3 phone_given bit (1) unaligned, /* dial_out */ 11 40 3 accept_dial bit (1) unaligned, /* wait for terminal to dial */ 11 41 3 must_release bit (1) unaligned, /* we must call release channel */ 11 42 3 no_block bit (1) unaligned, /* never block */ 11 43 3 async_close bit (1) unaligned, /* close with hlock nonzero */ 11 44 3 async_detach bit (1) unaligned, /* detach_iocb with hlock nonzero */ 11 45 3 hangup bit (1) unaligned, 11 46 3 async_hangup bit (1) unaligned, /* channel was hungup (and released) by AS */ 11 47 3 have_user_hangup_proc 11 48 bit (1) unaligned, /* user has supplied a hangup procedure */ 11 49 3 pad bit (23) unaligned, 11 50 2 dial_manager_event aligned like event_wait_channel, 11 51 2 event_wait aligned like event_wait_channel, 11 52 2 user_hangup_proc, /* user supplied hangup procedure */ 11 53 3 procedure entry (pointer) variable, 11 54 3 data_ptr pointer, 11 55 2 mode_string_info aligned, 11 56 3 max_mode_length fixed bin (35), 11 57 3 mode_string char (tty_max_mode_length refer (attach_data.max_mode_length)) unaligned, 11 58 2 temp_mode_string char (tty_max_mode_length refer (attach_data.max_mode_length)) unaligned; 11 59 11 60 declare tty_max_mode_length fixed bin (21); 11 61 12 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 12 2 12 3 /* ipc_$block wait list with one channel 12 4* 12 5* Written 9-May-79 by M. N. Davidoff. 12 6**/ 12 7 12 8 declare 1 event_wait_channel aligned, 12 9 2 n_channels fixed bin initial (1), /* number of channels */ 12 10 2 pad bit (36), 12 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 12 12 12 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 11 62 11 63 11 64 /* END OF: tty_attach_data_.incl.pl1 * * * * * */ 1125 1126 /* BEGIN INCLUDE FILE tty_states.incl.pl1 BIM November 1980 */ 13 2 13 3 /* format: style1 */ 13 4 declare (TTY_STATE_MASKED init (-1), 13 5 TTY_STATE_HUNG_UP init (1), /* Returned by hcs_$tty_* when neither listening or dialed */ 13 6 TTY_STATE_LISTENING init (2), /* listening */ 13 7 TTY_STATE_DIALED_UP init (5) /* really dialed up */ 13 8 ) fixed bin internal static options (constant); 13 9 13 10 /* END INCLUDE FILE tty_states.incl.pl1 */ 1126 1127 end tty_; 1128 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/90 0815.7 tty_.pl1 >spec>install>1044>tty_.pl1 1115 1 09/13/84 1021.5 dial_manager_arg.incl.pl1 >ldd>include>dial_manager_arg.incl.pl1 1116 2 08/06/87 1013.4 dsa_scu_sec_info.incl.pl1 >ldd>include>dsa_scu_sec_info.incl.pl1 1117 3 06/29/79 1828.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 1118 4 06/29/79 1827.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 1119 5 05/20/83 1946.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 1120 6 05/23/83 1016.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 1121 7 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 1122 8 11/07/86 1650.3 ipc_create_arg.incl.pl1 >ldd>include>ipc_create_arg.incl.pl1 1123 9 08/06/87 1013.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 1124 10 09/01/77 1459.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 1125 11 08/06/87 1013.5 tty_attach_data_.incl.pl1 >ldd>include>tty_attach_data_.incl.pl1 11-62 12 06/29/79 1828.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 1126 13 01/21/85 1012.3 tty_states.incl.pl1 >ldd>include>tty_states.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. DSA_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 9-35 ref 449 497 622 643 681 692 716 747 839 851 1031 1071 FAST_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 8-28 ref 806 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 9-34 ref 844 SUBMITTER_ID_V1 000120 constant char(8) initial packed unaligned dcl 2-21 ref 453 Stream_input constant fixed bin(17,0) initial dcl 7-15 ref 603 656 672 Stream_input_output constant fixed bin(17,0) initial dcl 7-15 ref 603 Stream_output constant fixed bin(17,0) initial dcl 7-15 ref 603 649 665 WAIT_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 8-29 ref 814 ZERO_BIT 000175 constant bit(1) initial packed unaligned dcl 140 set ref 851 851 855 855 accept_dial 237(05) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 399* 417 515* 888 935 access_class 134 000670 automatic bit(72) level 2 in structure "dma" dcl 112 in procedure "tty_" set ref 879* 882* access_class 000100 automatic bit(72) dcl 77 in procedure "tty_" set ref 381* 882 access_class_range 000102 automatic bit(72) array dcl 78 set ref 460* access_class_required 136 000670 automatic bit(1) level 3 packed packed unaligned dcl 112 set ref 879* 883* access_class_specified 000106 automatic bit(1) packed unaligned dcl 79 set ref 246* 357 362* 372 379 879 access_class_string 000107 automatic char(864) packed unaligned dcl 80 set ref 243* 361* 381* 382* actual_iocb_ptr 12 based pointer level 2 dcl 5-6 ref 1096 actual_iocbp 000440 automatic pointer dcl 81 set ref 576 577 578 579 580 581* 638 639 640 641 646 647 651 652 653 656 662 663 667 668 669 672 676* 694* 743 744 745 747 749 752 754* 1096* 1097 addr builtin function dcl 131 ref 452 492 638 788 788 810 810 815 815 851 851 855 855 886 886 890 890 891 891 894 894 917 917 917 917 937 937 988 988 1005 1005 1007 1007 1009 1009 1071 1071 1073 1073 any_other 001102 stack reference condition dcl 162 ref 489 503 574 583 635 678 740 arg_event_call_info_ptr parameter pointer dcl 71 ref 962 965 arg_iocbp parameter pointer dcl 65 ref 237 242 565 597 704 1096 assigned_ev_channel 237 based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 728 731* 811* async_close 237(08) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 708* async_detach 237(09) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 586* async_hangup 237(11) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 618 713 978* 1028 atd 000442 automatic varying char(128) dcl 82 set ref 460* attach_data based structure level 1 dcl 11-18 set ref 390 584 1081 1082* 1082 1084 attach_data_ptr 001122 automatic pointer dcl 11-17 in procedure "tty_" set ref 250* 390* 392 393 394 395 396 397 398 399 400 401 402 404 406 407 407 407 407 417 443 449 460 460 460 492 493 497 515 515 515 515 515 515 515 515 515 515 515 515 584 584 586 603 618 622 622 622 624 624 638 643 681 681 683 692 708 708 713 716 716 718 728 730 731 731 733 735 736 736 747 799 810 811 815 816 821 839 840 840 844 845 845 848 851 851 855 868 872 873 875 876 886 888 901 908 910 911 915 917 917 931 932 933 935 942 942* 966* 972 978 979 981 981 984 987 988 998 1001 1002 1005 1007 1011 1014 1016 1017 1028 1028 1028 1031 1035 1035 1037 1040 1043 1047 1071 1071 1073 1076 1082 1084 1085* 1097* 1106 1109 1109 attach_data_ptr 16 based pointer level 2 in structure "iocb" dcl 5-6 in procedure "tty_" set ref 493* 577* 1097 attach_descrip based varying char(128) level 2 dcl 11-18 set ref 492 515* attach_descrip_ptr 14 based pointer level 2 dcl 5-6 set ref 258 492* 576* billing_id 10 001064 automatic char(12) level 2 in structure "user_id" packed packed unaligned dcl 126 in procedure "tty_" set ref 456* billing_id 000503 automatic char(12) packed unaligned dcl 83 in procedure "tty_" set ref 244* 315* 372 456 515* billing_id_given 000506 automatic bit(1) packed unaligned dcl 84 set ref 245* 316* 515* call_data_ptr 10 001040 automatic pointer level 2 dcl 122 set ref 808* call_entry 4 001040 automatic entry variable level 2 dcl 122 set ref 807* call_priority 12 001040 automatic fixed bin(17,0) level 2 dcl 122 set ref 809* cd parameter fixed bin(35,0) dcl 779 ref 776 787 channel_id 242 based fixed bin(71,0) array level 3 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 407* 868* 872 908* 910* 942* 1002 1014 1016* 1017* channel_id 246 based fixed bin(71,0) array level 3 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 407* 622* 624* 730* 735* 810* 815* 981* channel_name 12 000670 automatic char(32) level 2 dcl 112 set ref 875* 1001* channel_type 2 001040 automatic fixed bin(17,0) level 2 dcl 122 set ref 806* 814* char builtin function dcl 131 ref 282 cleanup 001110 stack reference condition dcl 162 ref 251 close 36 based entry variable level 2 dcl 5-6 set ref 641* code parameter fixed bin(35,0) dcl 830 in procedure "try_hcs_attach" set ref 827 832* 840* 845* 848 851* 855* code parameter fixed bin(35,0) dcl 795 in procedure "allocate_ev_channel" set ref 792 797* 810* 811 815* 816 code parameter fixed bin(35,0) dcl 66 in procedure "tty_" set ref 237 240* 381* 382 382* 420* 423* 424 424* 427* 428 428* 439* 440 443* 446* 460* 464 464* 474* 475 475* 479* 480 480* 550* 565 597 606* 610* 611 614* 615 618* 622* 624* 628 681* 683* 694* 695 695* 699* 704 730* 735* 1094* code 1 000106 automatic fixed bin(35,0) level 2 in structure "ti" dcl 781 in procedure "terminate_this_process" set ref 787* code parameter fixed bin(35,0) dcl 865 in procedure "try_dial_manager_attach" set ref 862 867* 868* 869 886* 890* 891 891* 894* 901 903* 906 917* 919 922* 923 927* 937* 938 942* 944 946* code 000100 automatic fixed bin(35,0) dcl 996 in procedure "release_channel" set ref 1003* 1005* 1007* 1009* 1016* com_err_ 000036 constant entry external dcl 166 ref 548 com_err_switch parameter bit(1) packed unaligned dcl 67 ref 237 548 connection_info based fixed bin(35,0) array dcl 144 ref 469 control 66 based entry variable level 2 dcl 5-6 set ref 497* 499* 580* 647* 663* 747* 749* convert_access_class_$from_string 000040 constant entry external dcl 167 ref 381 convert_dial_message_$return_io_module 000042 constant entry external dcl 169 ref 922 968 created_ev_channel 237(01) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 733 736* 816* data_ptr 6 based pointer level 2 in structure "event_call_info" dcl 3-7 in procedure "tty_" ref 966 data_ptr 254 based pointer level 3 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 987 data_ptr 6 001054 automatic pointer level 2 in structure "local_eci" dcl 124 in procedure "tty_" set ref 987* detach_iocb 26 based entry variable level 2 dcl 5-6 set ref 494* 578* 639* 744* device 000507 automatic char(32) packed unaligned dcl 85 set ref 243* 264 266* 372 386* 393 394 837 922* 933 968* 972 device_id 62 based char(32) level 2 packed packed unaligned dcl 11-18 set ref 393* 460* 875 device_used 72 based char(32) level 2 packed packed unaligned dcl 11-18 set ref 394* 460* 515* 840* 845* 933* 972 1001 dial_channel 10 000670 automatic fixed bin(71,0) level 2 dcl 112 set ref 872* 1002* 1003* dial_id 123 based char(32) level 2 in structure "attach_data" packed packed unaligned dcl 11-18 in procedure "tty_" set ref 398* 515* 873 dial_id 000517 automatic char(32) packed unaligned dcl 86 in procedure "tty_" set ref 243* 342 346* 372 376 398 399 dial_manager_$allow_dials 000044 constant entry external dcl 172 ref 891 dial_manager_$dial_out 000046 constant entry external dcl 172 ref 886 dial_manager_$privileged_attach 000050 constant entry external dcl 172 ref 894 dial_manager_$registered_server 000052 constant entry external dcl 172 ref 890 dial_manager_$release_channel 000054 constant entry external dcl 172 ref 1007 dial_manager_$release_channel_no_hangup 000056 constant entry external dcl 172 ref 1009 dial_manager_$release_dial_id 000060 constant entry external dcl 172 ref 937 dial_manager_$terminate_dial_out 000062 constant entry external dcl 172 ref 1005 dial_manager_arg based structure level 1 dcl 1-14 dial_manager_arg_version_3 constant fixed bin(17,0) initial dcl 1-11 ref 871 1000 dial_manager_event 240 based structure level 2 dcl 11-18 set ref 917 917 dial_out_destination 22 000670 automatic char(32) level 2 dcl 112 set ref 876* dial_phone 102 based varying char(64) level 2 dcl 11-18 set ref 396* 460* 515* 876 dial_qualifier 1 000670 automatic char(22) level 2 dcl 112 set ref 873* dialup 001027 automatic bit(1) level 2 packed packed unaligned dcl 114 set ref 925 dim_name 000122 constant char(4) initial packed unaligned dcl 137 set ref 515* 548* dm_flags 001027 automatic structure level 1 dcl 114 set ref 922* 968* dma 000670 automatic structure level 1 dcl 112 set ref 886 886 890 890 891 891 894 894 937 937 1005 1005 1007 1007 1009 1009 do_not_block 000527 automatic bit(1) packed unaligned dcl 87 set ref 247* 351* 401 dsa_connection_info_len 000532 automatic fixed bin(21,0) dcl 90 set ref 460* 469 dsa_connection_info_ptr 000530 automatic pointer dcl 88 set ref 459* 460* 469 469 dsa_tty_$attach 000064 constant entry external dcl 182 ref 840 dsa_tty_$connect 000066 constant entry external dcl 183 ref 460 dsa_tty_$detach 000070 constant entry external dcl 186 ref 1035 1037 dsa_tty_$event 000072 constant entry external dcl 187 ref 622 716 dsa_tty_$order 000074 constant entry external dcl 188 ref 681 851 1071 dsa_tty_io_$control 000076 constant entry external dcl 189 ref 647 694 dsa_tty_io_$control_not_open 000112 constant entry external dcl 190 ref 497 747 dsa_tty_io_$get_chars 000102 constant entry external dcl 190 ref 652 dsa_tty_io_$get_line 000104 constant entry external dcl 190 ref 651 dsa_tty_io_$modes 000106 constant entry external dcl 190 ref 646 dsa_tty_io_$position 000110 constant entry external dcl 190 ref 653 dsa_tty_io_$put_chars 000100 constant entry external dcl 190 ref 656 err_code parameter fixed bin(35,0) dcl 545 set ref 542 548* 550 error_table_$action_not_performed 000012 external static fixed bin(35,0) dcl 149 ref 927 946 error_table_$bad_mode 000014 external static fixed bin(35,0) dcl 149 ref 606 error_table_$badopt 000016 external static fixed bin(35,0) dcl 149 set ref 369* error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 149 set ref 372* 376* error_table_$io_no_permission 000022 external static fixed bin(35,0) dcl 149 ref 618 error_table_$noarg 000024 external static fixed bin(35,0) dcl 149 set ref 255* 282* 286* 296* 304* 313* 322* 332* 344* 359* error_table_$not_detached 000026 external static fixed bin(35,0) dcl 149 set ref 258* error_table_$resource_attached 000030 external static fixed bin(35,0) dcl 149 ref 901 error_table_$too_many_args 000032 external static fixed bin(35,0) dcl 149 set ref 280* 294* 342* 357* error_table_$unable_to_do_io 000214 external static fixed bin(35,0) dcl 767 set ref 770* error_table_$wrong_no_of_args 000034 external static fixed bin(35,0) dcl 149 set ref 264* event_call_info based structure level 1 dcl 3-7 set ref 986 event_call_info_ptr 001120 automatic pointer dcl 3-5 set ref 965* 966 968 986 event_message 001030 automatic structure level 1 dcl 120 set ref 917 917 event_wait 244 based structure level 2 dcl 11-18 event_wait_channel 001126 automatic structure level 1 dcl 12-8 event_wait_info based structure level 1 dcl 4-7 extend_bit parameter bit(1) packed unaligned dcl 68 ref 597 flags 136 000670 automatic structure level 2 in structure "dma" dcl 112 in procedure "tty_" flags 237 based structure level 2 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 392* get_chars 46 based entry variable level 2 dcl 5-6 set ref 652* 668* get_line 42 based entry variable level 2 dcl 5-6 set ref 651* 667* get_process_id_ 000114 constant entry external dcl 198 ref 981 981 get_system_free_area_ 000116 constant entry external dcl 199 ref 253 hangup 237(10) based bit(1) level 3 in structure "attach_data" packed packed unaligned dcl 11-18 in procedure "tty_" set ref 402* 404* 515 932* 1007 1035 hangup 000536 automatic bit(1) packed unaligned dcl 94 in procedure "tty_" set ref 248* 272* 274* 404 932 have_ev_channel 237(02) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 731* 736* 799 821* have_user_hangup_proc 237(12) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 984 hbound builtin function dcl 131 ref 255 261 282 296 304 313 322 332 344 359 hcs_$delete_channel 000126 constant entry external dcl 203 ref 730 hcs_$reset_ips_mask 000130 constant entry external dcl 204 ref 504 582 677 756 hcs_$set_ips_mask 000132 constant entry external dcl 205 ref 491 575 636 741 hcs_$tty_attach 000134 constant entry external dcl 206 ref 845 hcs_$tty_detach 000136 constant entry external dcl 207 ref 1040 hcs_$tty_event 000140 constant entry external dcl 208 ref 624 718 hcs_$tty_order 000142 constant entry external dcl 209 ref 683 855 1073 hcs_$wakeup 000144 constant entry external dcl 210 ref 981 hungup 0(01) 001027 automatic bit(1) level 2 packed packed unaligned dcl 114 set ref 975 i 000533 automatic fixed bin(17,0) dcl 92 set ref 261* 262 266 269 272 274 277 277 279* 279 282 282 288 291 291 293* 293 296 298 301 301 301 303* 303 304 306 310 310 310 312* 312 313 315 319 319 319 321* 321 322 324 329 329 331* 331 332 334 339 341* 341 344 346 349 354 356* 356 359 361 365 367 369* index builtin function dcl 131 ref 262 ioa_$rsnnl 000146 constant entry external dcl 211 ref 515 iocb based structure level 1 dcl 5-6 iocbp 000534 automatic pointer dcl 93 set ref 242* 258 492 493 494 495 497 499 502* 548 iox_$err_not_attached 000204 constant entry external dcl 6-8 ref 578 579 580 iox_$err_not_closed 000206 constant entry external dcl 6-8 ref 639 640 iox_$err_not_open 000210 constant entry external dcl 6-8 ref 752 iox_$propagate 000212 constant entry external dcl 6-8 ref 502 581 676 754 iox_modes 000002 constant char(24) initial array dcl 7-6 ref 603 ipc_$block 000154 constant entry external dcl 215 ref 917 ipc_$create_ev_chn 000150 constant entry external dcl 212 ref 868 ipc_$create_event_channel 000152 constant entry external dcl 213 ref 810 815 ipc_$decl_ev_call_chn 000120 constant entry external dcl 200 ref 942 ipc_$decl_ev_wait_chn 000122 constant entry external dcl 201 ref 1003 ipc_$delete_ev_chn 000124 constant entry external dcl 202 ref 735 908 1016 ipc_$mask_ev_calls 000156 constant entry external dcl 216 ref 614 ipc_$unmask_ev_calls 000160 constant entry external dcl 216 ref 630 679 ipc_create_arg_structure based structure level 1 dcl 8-19 ipc_create_arg_structure_v1 000000 constant char(8) initial packed unaligned dcl 8-17 ref 805 ipcas 001040 automatic structure level 1 dcl 122 set ref 810 810 815 815 lbound builtin function dcl 131 ref 261 length builtin function dcl 131 ref 1076 1079 local_code 000537 automatic fixed bin(35,0) dcl 95 set ref 968* 969 1035* 1037* 1040* 1043 1071* 1073* 1076 local_eci 001054 automatic structure level 1 dcl 124 set ref 986* 988 988 login_channel 000540 automatic bit(1) packed unaligned dcl 96 in procedure "tty_" set ref 247* 269* 372 386 400 402 login_channel 237(03) based bit(1) level 3 in structure "attach_data" packed packed unaligned dcl 11-18 in procedure "tty_" set ref 400* 443 515* 515 848 mask 000541 automatic bit(36) dcl 97 set ref 241* 491* 504* 504* 575* 582* 582* 636* 677* 677* 741* 756* 756* 770 1095* max_length 001174 automatic fixed bin(21,0) level 2 dcl 1062 set ref 1068* max_mode_length 256 based fixed bin(35,0) level 3 dcl 11-18 set ref 390* 584 584 1076 1081* 1082 1082 1083* 1084 1084 message 2 based fixed bin(71,0) level 2 in structure "event_call_info" dcl 3-7 in procedure "tty_" set ref 968* message parameter char packed unaligned dcl 546 in procedure "error" set ref 542 548* message 2 001030 automatic fixed bin(71,0) level 2 in structure "event_message" dcl 120 in procedure "tty_" set ref 922* mode parameter fixed bin(17,0) dcl 69 ref 597 603 603 603 603 649 656 665 672 mode_string 1 001174 automatic char(2000) level 2 dcl 1062 set ref 1069* 1076 1079 mode_string_info 256 based structure level 2 dcl 11-18 modes 56 based entry variable level 2 dcl 5-6 set ref 646* 662* 752* must_release 237(06) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 911* 915* 931* 979* 998 1011* 1043* n_channels 240 based fixed bin(17,0) initial level 3 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 390* 1081* n_channels 244 based fixed bin(17,0) initial level 3 in structure "attach_data" dcl 11-18 in procedure "tty_" set ref 390* 1081* n_channels 001126 automatic fixed bin(17,0) initial level 2 in structure "event_wait_channel" dcl 12-8 in procedure "tty_" set ref 12-8* name 1 based char(32) level 2 dcl 5-6 set ref 548* network_type 233 based fixed bin(17,0) level 2 dcl 11-18 set ref 449 497 622 643 681 692 716 747 839* 844* 851 1031 1071 new_attach_data_ptr 002162 automatic pointer dcl 1066 set ref 1081* 1082 1083 1085 no_block 237(07) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 401* 515* null builtin function dcl 131 ref 250 258 459 469 576 577 681 681 683 683 694 694 743 808 1106 null_entry_ 000162 constant entry external dcl 220 ref 807 open 32 based entry variable level 2 dcl 5-6 set ref 495* 579* 640* 745* open_descrip 41 based varying char(64) level 2 dcl 11-18 set ref 603* 638 open_descrip_ptr 20 based pointer level 2 dcl 5-6 set ref 638* 743* operation_hlock 236 based fixed bin(17,0) level 2 dcl 11-18 set ref 406* 584 708 981 option_array parameter varying char array dcl 70 ref 237 255 261 261 262 266 269 272 274 277 277 282 282 288 291 291 296 298 301 301 301 304 306 310 310 310 313 315 319 319 319 322 324 329 329 332 334 339 344 346 349 354 359 361 365 367 369 password 000552 automatic char(12) packed unaligned dcl 99 in procedure "tty_" set ref 244* 306* 372 457 password 13 001064 automatic char(12) level 2 in structure "user_id" packed packed unaligned dcl 126 in procedure "tty_" set ref 457* password_given 000555 automatic bit(1) packed unaligned dcl 100 set ref 245* 307* 515* person_id 000556 automatic char(12) packed unaligned dcl 101 in procedure "tty_" set ref 244* 334* 372 454 515* person_id 2 001064 automatic char(12) level 2 in structure "user_id" packed packed unaligned dcl 126 in procedure "tty_" set ref 454* person_id_given 000561 automatic bit(1) packed unaligned dcl 102 set ref 245* 335* 515* phone_given 237(04) based bit(1) level 3 packed packed unaligned dcl 11-18 set ref 397* 515* 886 901 1005 phone_no 000542 automatic char(32) packed unaligned dcl 98 set ref 243* 294 298* 372 376 396 397 position 62 based entry variable level 2 dcl 5-6 set ref 653* 669* procedure 250 based entry variable level 3 dcl 11-18 set ref 988 project_id 5 001064 automatic char(12) level 2 in structure "user_id" packed packed unaligned dcl 126 in procedure "tty_" set ref 455* project_id 000562 automatic char(12) packed unaligned dcl 103 in procedure "tty_" set ref 244* 324* 372 455 515* project_id_given 000565 automatic bit(1) packed unaligned dcl 104 set ref 245* 325* 515* put_chars 52 based entry variable level 2 dcl 5-6 set ref 656* 672* reservation_string 32 000670 automatic char(256) level 2 dcl 112 set ref 877* resource_desc 133 based char(256) level 2 packed packed unaligned dcl 11-18 set ref 395* 515 515* resource_description 000566 automatic char(256) packed unaligned dcl 105 set ref 243* 280 288* 372 395 877 rtrim builtin function dcl 131 ref 1076 1079 state 000666 automatic fixed bin(17,0) dcl 106 set ref 681* 683* 840* 845* 851* 855* 1071* 1073* string builtin function dcl 131 set ref 392* subidp 001116 automatic pointer dcl 2-23 set ref 452* 460* submitter_id based structure level 1 dcl 2-24 substr builtin function dcl 131 ref 837 suppress_dial_manager 000667 automatic bit(1) dcl 107 set ref 249* 365* 367* 420 446 515* system_free_area based area(1024) dcl 145 ref 390 469 584 1081 1084 system_free_area_ptr 000010 internal static pointer initial dcl 139 set ref 253* 390 460* 469 584 1081 1084 terminate_process_ 000216 constant entry external dcl 780 ref 788 ti 000106 automatic structure level 1 dcl 781 set ref 788 788 tty_handle 235 based fixed bin(35,0) level 2 dcl 11-18 set ref 407* 622* 681* 716* 840* 851* 1028 1035* 1037* 1071* 1109 tty_index 234 based fixed bin(17,0) level 2 dcl 11-18 set ref 407* 624* 683* 718* 845* 855* 1028 1040* 1047* 1073* 1109 tty_io_$control 000176 constant entry external dcl 221 ref 663 tty_io_$control_not_open 000200 constant entry external dcl 221 ref 499 749 tty_io_$get_chars 000166 constant entry external dcl 221 ref 668 tty_io_$get_line 000170 constant entry external dcl 221 ref 667 tty_io_$modes 000172 constant entry external dcl 221 ref 662 tty_io_$position 000174 constant entry external dcl 221 ref 669 tty_io_$put_chars 000164 constant entry external dcl 221 ref 672 tty_max_mode_length 001124 automatic fixed bin(21,0) dcl 11-60 set ref 389* 390 390 390 1079* 1081 1081 1081 1083 user_hangup_proc 250 based structure level 2 dcl 11-18 user_id 001064 automatic structure level 1 dcl 126 set ref 452 user_info_$terminal_data 000202 constant entry external dcl 230 ref 386 version 000670 automatic fixed bin(17,0) level 2 in structure "dma" dcl 112 in procedure "tty_" set ref 871* 1000* version 001040 automatic char(8) level 2 in structure "ipcas" packed packed unaligned dcl 122 in procedure "tty_" set ref 805* version 001064 automatic char(8) level 2 in structure "user_id" packed packed unaligned dcl 126 in procedure "tty_" set ref 453* version 000106 automatic fixed bin(17,0) level 2 in structure "ti" dcl 781 in procedure "terminate_this_process" set ref 786* very_long_mode_info 001174 automatic structure level 1 dcl 1062 set ref 1071 1071 1073 1073 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANY_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 8-33 ASYNC_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 8-31 CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 8-30 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 9-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 9-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 9-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 9-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 9-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 9-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 9-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 9-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 9-103 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 9-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 9-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 9-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 9-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 9-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 9-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 9-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 9-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 9-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 9-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 9-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 9-99 Direct_input internal static fixed bin(17,0) initial dcl 7-15 Direct_output internal static fixed bin(17,0) initial dcl 7-15 Direct_update internal static fixed bin(17,0) initial dcl 7-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 7-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 7-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 7-15 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 9-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 9-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 9-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 9-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 9-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 9-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 9-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 9-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 9-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 9-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 9-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 9-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 9-36 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 9-38 NET_EVENT_MESSAGE_VERSION_1 internal static bit(2) initial packed unaligned dcl 9-20 SC_USER_SECURITY_INFO_V1 internal static char(8) initial packed unaligned dcl 2-31 Sequential_input internal static fixed bin(17,0) initial dcl 7-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 7-15 Sequential_output internal static fixed bin(17,0) initial dcl 7-15 Sequential_update internal static fixed bin(17,0) initial dcl 7-15 TTY_STATE_DIALED_UP internal static fixed bin(17,0) initial dcl 13-4 TTY_STATE_HUNG_UP internal static fixed bin(17,0) initial dcl 13-4 TTY_STATE_LISTENING internal static fixed bin(17,0) initial dcl 13-4 TTY_STATE_MASKED internal static fixed bin(17,0) initial dcl 13-4 dial_manager_arg_version_2 internal static fixed bin(17,0) initial dcl 1-10 dial_manager_arg_version_4 internal static fixed bin(17,0) initial dcl 1-12 event_wait_info_ptr automatic pointer dcl 4-5 iox_$attach_loud 000000 constant entry external dcl 6-8 iox_$attach_name 000000 constant entry external dcl 6-8 iox_$attach_ptr 000000 constant entry external dcl 6-8 iox_$close 000000 constant entry external dcl 6-8 iox_$close_file 000000 constant entry external dcl 6-8 iox_$control 000000 constant entry external dcl 6-8 iox_$delete_record 000000 constant entry external dcl 6-8 iox_$destroy_iocb 000000 constant entry external dcl 6-8 iox_$detach 000000 constant entry external dcl 6-8 iox_$detach_iocb 000000 constant entry external dcl 6-8 iox_$err_no_operation 000000 constant entry external dcl 6-8 iox_$error_output external static pointer dcl 6-41 iox_$find_iocb 000000 constant entry external dcl 6-8 iox_$find_iocb_n 000000 constant entry external dcl 6-8 iox_$get_chars 000000 constant entry external dcl 6-8 iox_$get_line 000000 constant entry external dcl 6-8 iox_$iocb_version_sentinel external static char(4) dcl 5-51 iox_$look_iocb 000000 constant entry external dcl 6-8 iox_$modes 000000 constant entry external dcl 6-8 iox_$move_attach 000000 constant entry external dcl 6-8 iox_$open 000000 constant entry external dcl 6-8 iox_$open_file 000000 constant entry external dcl 6-8 iox_$position 000000 constant entry external dcl 6-8 iox_$put_chars 000000 constant entry external dcl 6-8 iox_$read_key 000000 constant entry external dcl 6-8 iox_$read_length 000000 constant entry external dcl 6-8 iox_$read_record 000000 constant entry external dcl 6-8 iox_$rewrite_record 000000 constant entry external dcl 6-8 iox_$seek_key 000000 constant entry external dcl 6-8 iox_$user_input external static pointer dcl 6-41 iox_$user_io external static pointer dcl 6-41 iox_$user_output external static pointer dcl 6-41 iox_$write_record 000000 constant entry external dcl 6-8 ipc_create_arg_structure_ptr automatic pointer dcl 8-16 net_event_message based structure level 1 dcl 9-22 net_event_message_arg automatic fixed bin(71,0) dcl 9-19 sc_user_security_info based structure level 1 packed packed unaligned dcl 2-33 set_term_type_info based structure level 1 dcl 10-8 short_iox_modes internal static char(4) initial array dcl 7-12 stti_version_1 internal static fixed bin(17,0) initial dcl 10-5 sttip automatic pointer dcl 10-6 susip automatic pointer dcl 2-32 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN 003365 constant label dcl 507 ref 553 allocate_ev_channel 005237 constant entry internal dcl 792 ref 610 check_mode_length 006421 constant entry internal dcl 1052 ref 487 clean_up_attach 006651 constant entry internal dcl 1103 ref 251 552 dm_attachment_failed_ 005745 constant label dcl 908 ref 919 923 928 error 005073 constant entry internal dcl 542 ref 255 258 264 280 282 286 294 296 304 313 322 332 342 344 357 359 369 372 376 382 420 424 428 443 446 464 475 480 695 handler 005167 constant entry internal dcl 764 ref 489 574 635 740 hcs_detach 006307 constant entry internal dcl 1025 ref 570 1109 make_atd 004705 constant entry internal dcl 512 ref 485 release_channel 006156 constant entry internal dcl 993 ref 572 1112 set_up 006635 constant entry internal dcl 1091 ref 568 601 707 terminate_this_process 005206 constant entry internal dcl 776 ref 770 try_dial_manager_attach 005562 constant entry internal dcl 862 ref 423 474 try_hcs_attach 005343 constant entry internal dcl 827 ref 427 439 479 tty_ 000710 constant entry external dcl 17 tty_as_signal_handler 004536 constant entry external dcl 962 ref 942 942 tty_attach 000724 constant entry external dcl 237 tty_close 004267 constant entry external dcl 704 ref 641 tty_detach 003372 constant entry external dcl 565 ref 494 744 tty_open 003537 constant entry external dcl 597 ref 495 745 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10000 10220 6713 10010 Length 11052 6713 220 616 1064 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_ 1573 external procedure is an external procedure. on unit on line 251 64 on unit on unit on line 489 64 on unit make_atd internal procedure shares stack frame of external procedure tty_. error 90 internal procedure is called during a stack extension. on unit on line 574 64 on unit on unit on line 635 64 on unit on unit on line 740 64 on unit handler 94 internal procedure is declared options(non_quick). terminate_this_process internal procedure shares stack frame of internal procedure handler. allocate_ev_channel internal procedure shares stack frame of external procedure tty_. try_hcs_attach internal procedure shares stack frame of external procedure tty_. try_dial_manager_attach internal procedure shares stack frame of external procedure tty_. release_channel 74 internal procedure is called by several nonquick procedures. hcs_detach 76 internal procedure is called by several nonquick procedures. check_mode_length internal procedure shares stack frame of external procedure tty_. set_up internal procedure shares stack frame of external procedure tty_. clean_up_attach 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_area_ptr tty_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME handler 000106 ti terminate_this_process release_channel 000100 code release_channel tty_ 000100 access_class tty_ 000102 access_class_range tty_ 000106 access_class_specified tty_ 000107 access_class_string tty_ 000440 actual_iocbp tty_ 000442 atd tty_ 000503 billing_id tty_ 000506 billing_id_given tty_ 000507 device tty_ 000517 dial_id tty_ 000527 do_not_block tty_ 000530 dsa_connection_info_ptr tty_ 000532 dsa_connection_info_len tty_ 000533 i tty_ 000534 iocbp tty_ 000536 hangup tty_ 000537 local_code tty_ 000540 login_channel tty_ 000541 mask tty_ 000542 phone_no tty_ 000552 password tty_ 000555 password_given tty_ 000556 person_id tty_ 000561 person_id_given tty_ 000562 project_id tty_ 000565 project_id_given tty_ 000566 resource_description tty_ 000666 state tty_ 000667 suppress_dial_manager tty_ 000670 dma tty_ 001027 dm_flags tty_ 001030 event_message tty_ 001040 ipcas tty_ 001054 local_eci tty_ 001064 user_id tty_ 001116 subidp tty_ 001120 event_call_info_ptr tty_ 001122 attach_data_ptr tty_ 001124 tty_max_mode_length tty_ 001126 event_wait_channel tty_ 001174 very_long_mode_info check_mode_length 002162 new_attach_data_ptr check_mode_length THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp call_ent_var call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_access_class_$from_string convert_dial_message_$return_io_module dial_manager_$allow_dials dial_manager_$dial_out dial_manager_$privileged_attach dial_manager_$registered_server dial_manager_$release_channel dial_manager_$release_channel_no_hangup dial_manager_$release_dial_id dial_manager_$terminate_dial_out dsa_tty_$attach dsa_tty_$connect dsa_tty_$detach dsa_tty_$event dsa_tty_$order dsa_tty_io_$control dsa_tty_io_$control_not_open dsa_tty_io_$get_chars dsa_tty_io_$get_line dsa_tty_io_$modes dsa_tty_io_$position dsa_tty_io_$put_chars get_process_id_ get_system_free_area_ hcs_$delete_channel hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$tty_attach hcs_$tty_detach hcs_$tty_event hcs_$tty_order hcs_$wakeup ioa_$rsnnl iox_$err_not_attached iox_$err_not_closed iox_$err_not_open iox_$propagate ipc_$block ipc_$create_ev_chn ipc_$create_event_channel ipc_$decl_ev_call_chn ipc_$decl_ev_wait_chn ipc_$delete_ev_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls null_entry_ terminate_process_ tty_io_$control tty_io_$control_not_open tty_io_$get_chars tty_io_$get_line tty_io_$modes tty_io_$position tty_io_$put_chars user_info_$terminal_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_mode error_table_$badopt error_table_$inconsistent error_table_$io_no_permission error_table_$noarg error_table_$not_detached error_table_$resource_attached error_table_$too_many_args error_table_$unable_to_do_io error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 8 000703 17 000707 19 000716 237 000717 240 000743 241 000744 242 000745 243 000751 244 000770 245 001004 246 001010 247 001011 248 001013 249 001015 250 001016 251 001020 253 001042 255 001051 258 001076 261 001120 262 001131 264 001157 266 001203 267 001221 269 001222 272 001232 274 001242 277 001251 279 001263 280 001264 282 001310 286 001356 288 001376 289 001414 291 001415 293 001427 294 001430 296 001454 298 001504 299 001522 301 001523 303 001542 304 001543 306 001567 307 001605 308 001607 310 001610 312 001627 313 001630 315 001652 316 001670 317 001672 319 001673 321 001712 322 001713 324 001735 325 001753 326 001755 329 001756 331 001770 332 001771 334 002015 335 002033 336 002035 339 002036 341 002043 342 002044 344 002070 346 002114 347 002132 349 002133 351 002140 352 002142 354 002143 356 002150 357 002151 359 002173 361 002223 362 002241 363 002243 365 002244 367 002254 369 002263 370 002312 372 002315 376 002401 379 002431 381 002433 382 002454 386 002472 389 002524 390 002526 392 002551 393 002552 394 002555 395 002560 396 002563 397 002570 398 002600 399 002603 400 002613 401 002620 402 002625 404 002632 406 002637 407 002640 417 002645 420 002650 423 002672 424 002700 427 002721 428 002727 430 002750 439 002751 440 002757 443 002761 446 003004 449 003026 452 003032 453 003034 454 003036 455 003042 456 003047 457 003054 459 003061 460 003063 464 003147 469 003170 471 003176 474 003177 475 003205 479 003226 480 003234 485 003255 487 003256 489 003257 491 003301 492 003314 493 003317 494 003321 495 003325 497 003330 499 003341 502 003346 503 003354 504 003355 507 003365 565 003366 568 003403 570 003404 572 003410 574 003414 575 003436 576 003451 577 003454 578 003455 579 003462 580 003464 581 003466 582 003474 583 003504 584 003505 586 003527 588 003531 597 003532 601 003550 603 003551 606 003573 607 003576 610 003577 611 003605 614 003607 615 003616 618 003620 622 003630 624 003652 628 003670 630 003672 631 003702 635 003703 636 003725 638 003740 639 003744 640 003751 641 003753 643 003756 646 003762 647 003766 649 003771 651 003775 652 004001 653 004004 656 004007 658 004016 662 004017 663 004023 665 004026 667 004032 668 004036 669 004041 672 004044 676 004053 677 004061 678 004071 679 004072 681 004102 683 004143 692 004177 694 004203 695 004237 699 004263 700 004264 704 004265 707 004300 708 004301 713 004306 716 004311 718 004336 728 004357 730 004363 731 004374 732 004401 733 004402 735 004405 736 004416 740 004423 741 004445 743 004460 744 004463 745 004467 747 004472 749 004504 752 004511 754 004514 756 004522 757 004532 962 004533 965 004544 966 004550 968 004552 969 004610 972 004612 975 004617 978 004622 979 004624 981 004626 984 004662 986 004666 987 004672 988 004674 991 004704 512 004705 515 004706 537 005071 542 005072 548 005106 550 005152 552 005156 553 005163 764 005166 770 005174 773 005205 776 005206 786 005210 787 005211 788 005213 790 005236 792 005237 797 005241 799 005242 805 005247 806 005251 807 005253 808 005260 809 005262 810 005263 811 005301 814 005310 815 005312 816 005330 818 005337 821 005340 822 005342 827 005343 832 005345 837 005346 839 005351 840 005354 841 005407 844 005410 845 005413 848 005446 851 005455 855 005521 860 005561 862 005562 867 005564 868 005565 869 005600 871 005604 872 005606 873 005611 875 005614 876 005617 877 005623 879 005626 882 005635 883 005637 886 005641 888 005660 890 005663 891 005676 893 005714 894 005715 901 005730 903 005741 904 005742 906 005743 908 005745 910 005760 911 005763 912 005765 915 005766 917 005771 919 006007 922 006012 923 006050 925 006053 927 006056 928 006061 931 006062 932 006065 933 006072 935 006075 937 006100 938 006113 942 006117 944 006145 946 006150 947 006153 950 006154 993 006155 998 006163 1000 006170 1001 006172 1002 006175 1003 006177 1005 006207 1007 006230 1009 006247 1011 006262 1014 006266 1016 006270 1017 006301 1020 006305 1025 006306 1028 006314 1031 006325 1035 006330 1037 006353 1038 006371 1040 006372 1043 006410 1047 006416 1049 006420 1052 006421 1068 006422 1069 006424 1071 006427 1073 006470 1076 006524 1079 006545 1081 006547 1082 006572 1084 006613 1085 006632 1086 006634 1091 006635 1094 006636 1095 006637 1096 006640 1097 006645 1098 006647 1103 006650 1106 006656 1109 006663 1112 006675 1114 006702 ----------------------------------------------------------- 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