COMPILATION LISTING OF SEGMENT ssu_procedure_mgr_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1153.11_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* Manages the subsystem utilities (ssu_) replaceable procedures */ 9 10 /* Created: by W. Olin Sibert */ 11 /* Modified: 10 December 1981 by G. Palter to make arg_count, arg_ptr, return_arg, and arg_list_ptr replaceable */ 12 /* Modified: 14 February 1982 by G. Palter to rename eval_string to evaluate_active_string */ 13 /* Modified: 8 June 1982 by G. Palter to add (get set reset)_request_processor_options and get_default_rp_options */ 14 /* Modified: 6 November 1984 by G. Palter to add get_subsystem_and_request_name */ 15 16 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 17 18 19 ssu_procedure_mgr_: 20 procedure (); 21 22 return; /* not an entrypoint */ 23 24 25 /* Parameters */ 26 27 dcl P_sci_ptr pointer parameter; 28 dcl P_proc_name character (*) parameter; 29 dcl P_entry_variable entry variable parameter; 30 dcl P_code fixed binary (35) parameter; 31 32 33 /* Remaining declarations */ 34 35 dcl proc_idx fixed binary; 36 37 dcl error_table_$noentry fixed binary (35) external; 38 39 /* format: off */ 40 41 dcl (ssu_error_$abort_line, ssu_error_$abort_subsystem, ssu_error_$print_message, ssu_misc_procs_$cpescape, 42 ssu_misc_procs_$unknown_request, ssu_listen_$listen, ssu_request_processor_$execute_line, 43 ssu_request_processor_$evaluate_active_string, ssu_execute_$execute_request, ssu_request_mgr_$locate_request, 44 ssu_$just_return, ssu_misc_procs_$ready_proc, ssu_arglist_$arg_count, ssu_arglist_$arg_ptr, ssu_arglist_$return_arg, 45 ssu_arglist_$arg_list_ptr, ssu_request_processor_$get_default_rp_options, ssu_request_processor_$get_rp_options, 46 ssu_request_processor_$reset_rp_options, ssu_request_processor_$set_rp_options, 47 ssu_invocation_$get_subsystem_and_request_name) 48 entry () options (variable); 49 50 dcl PROC_NAME (23) character (32) static options (constant) initial ( 51 "abort_line", "abort_subsystem", "print_message", "program_interrupt", 52 "pre_request_line", "post_request_line", "ready", "cpescape", 53 "unknown_request", "listen", "execute_line", "evaluate_active_string", 54 "invoke_request", "locate_request", "arg_count", "arg_ptr", 55 "return_arg", "arg_list_ptr", "get_default_rp_options", "get_request_processor_options", 56 "reset_request_processor_options", "set_request_processor_options", 57 "get_subsystem_and_request_name"); 58 59 /* format: on */ 60 61 dcl hbound builtin; 62 63 /* */ 64 65 /* Returns the entry which would be invoked by the specified replaceable ssu_ entry */ 66 67 get: 68 entry (P_sci_ptr, P_proc_name, P_entry_variable, P_code); 69 70 call ssu_check_sci (P_sci_ptr); 71 72 sci_ptr = P_sci_ptr; 73 74 call lookup_proc_name (P_proc_name, proc_idx, P_code); 75 if P_code ^= 0 then return; /* not found */ 76 77 call get_or_set_entry (proc_idx, "0"b, P_entry_variable); 78 79 return; 80 81 82 83 /* Sets the entry to be invoked by the specified replaceable ssu_ entry */ 84 85 set: 86 entry (P_sci_ptr, P_proc_name, P_entry_variable, P_code); 87 88 call ssu_check_sci (P_sci_ptr); 89 90 sci_ptr = P_sci_ptr; 91 92 call lookup_proc_name (P_proc_name, proc_idx, P_code); 93 if P_code ^= 0 then return; /* not found */ 94 95 call get_or_set_entry (proc_idx, "1"b, P_entry_variable); 96 97 return; 98 99 /* */ 100 101 /* Returns the default entry for the specified replaceable ssu_ entry */ 102 103 get_default: 104 entry (P_sci_ptr, P_proc_name, P_entry_variable, P_code); 105 106 call ssu_check_sci (P_sci_ptr); 107 108 sci_ptr = P_sci_ptr; 109 110 call lookup_proc_name (P_proc_name, proc_idx, P_code); 111 if P_code ^= 0 then return; /* not found */ 112 113 P_entry_variable = get_default_entry (proc_idx); 114 115 return; 116 117 118 119 /* Sets the specified ssu_ replaceable entry to its default value */ 120 121 set_default: 122 entry (P_sci_ptr, P_proc_name, P_code); 123 124 call ssu_check_sci (P_sci_ptr); 125 126 sci_ptr = P_sci_ptr; 127 128 call lookup_proc_name (P_proc_name, proc_idx, P_code); 129 if P_code ^= 0 then return; /* not found */ 130 131 call get_or_set_entry (proc_idx, "1"b, get_default_entry (proc_idx)); 132 133 return; 134 135 136 137 /* Sets all replaceable entries to the default values (called during initialization only) */ 138 139 set_all_default: 140 entry (P_sci_ptr); 141 142 sci_ptr = P_sci_ptr; 143 144 do proc_idx = 1 to hbound (PROC_NAME, 1); /* loop through them all */ 145 call get_or_set_entry (proc_idx, "1"b, get_default_entry (proc_idx)); 146 end; 147 148 return; 149 150 /* */ 151 152 /* Validates that the caller's procedure name is valid and returns its index */ 153 154 lookup_proc_name: 155 procedure (p_name, p_idx, p_code); 156 157 dcl p_name character (*) parameter; 158 dcl p_idx fixed binary parameter; 159 dcl p_code fixed binary (35) parameter; 160 161 dcl idx fixed binary; 162 dcl proc_name character (32); 163 164 proc_name = p_name; 165 166 do idx = 1 to hbound (PROC_NAME, 1); 167 if proc_name = PROC_NAME (idx) then do; 168 p_code = 0; /* found it */ 169 p_idx = idx; 170 return; 171 end; 172 end; 173 174 p_idx = -1; 175 p_code = error_table_$noentry; 176 177 return; 178 179 end lookup_proc_name; 180 181 /* */ 182 183 /* Returns the default entry variable for handling the specified operation */ 184 185 get_default_entry: 186 procedure (p_index) returns (entry () options (variable) variable); 187 188 dcl p_index fixed binary parameter; 189 dcl return_entry entry () options (variable) variable; 190 191 go to GET_DEFAULT (p_index); /* do it */ 192 193 194 GET_DEFAULT_DONE: /* and "return" here when done. Oh, if only we had subscripted */ 195 return (return_entry); /* internal procedures..... */ 196 197 198 GET_DEFAULT (1): /* individual handlers */ 199 return_entry = ssu_error_$abort_line; 200 go to GET_DEFAULT_DONE; 201 202 GET_DEFAULT (2): /* abort_subsystem */ 203 return_entry = ssu_error_$abort_subsystem; 204 go to GET_DEFAULT_DONE; 205 206 GET_DEFAULT (3): /* print_message */ 207 return_entry = ssu_error_$print_message; 208 go to GET_DEFAULT_DONE; 209 210 GET_DEFAULT (4): /* program_interrupt */ 211 return_entry = ssu_$just_return; 212 go to GET_DEFAULT_DONE; 213 214 GET_DEFAULT (5): /* pre_request_line */ 215 return_entry = ssu_$just_return; 216 go to GET_DEFAULT_DONE; 217 218 GET_DEFAULT (6): /* post_request_line */ 219 return_entry = ssu_$just_return; 220 go to GET_DEFAULT_DONE; 221 222 GET_DEFAULT (7): /* ready */ 223 return_entry = ssu_misc_procs_$ready_proc; 224 go to GET_DEFAULT_DONE; 225 226 GET_DEFAULT (8): /* cpescape */ 227 return_entry = ssu_misc_procs_$cpescape; 228 go to GET_DEFAULT_DONE; 229 230 GET_DEFAULT (9): /* unknown_request */ 231 return_entry = ssu_misc_procs_$unknown_request; 232 go to GET_DEFAULT_DONE; 233 234 GET_DEFAULT (10): /* listen */ 235 return_entry = ssu_listen_$listen; 236 go to GET_DEFAULT_DONE; 237 238 GET_DEFAULT (11): /* execute_line */ 239 return_entry = ssu_request_processor_$execute_line; 240 go to GET_DEFAULT_DONE; 241 242 GET_DEFAULT (12): /* evaluate_active_string */ 243 return_entry = ssu_request_processor_$evaluate_active_string; 244 go to GET_DEFAULT_DONE; 245 246 GET_DEFAULT (13): /* invoke_request */ 247 return_entry = ssu_execute_$execute_request; 248 go to GET_DEFAULT_DONE; 249 250 GET_DEFAULT (14): /* locate_request */ 251 return_entry = ssu_request_mgr_$locate_request; 252 go to GET_DEFAULT_DONE; 253 254 GET_DEFAULT (15): /* arg_count */ 255 return_entry = ssu_arglist_$arg_count; 256 go to GET_DEFAULT_DONE; 257 258 GET_DEFAULT (16): /* arg_ptr */ 259 return_entry = ssu_arglist_$arg_ptr; 260 go to GET_DEFAULT_DONE; 261 262 GET_DEFAULT (17): /* return_arg */ 263 return_entry = ssu_arglist_$return_arg; 264 go to GET_DEFAULT_DONE; 265 266 GET_DEFAULT (18): /* arg_list_ptr */ 267 return_entry = ssu_arglist_$arg_list_ptr; 268 go to GET_DEFAULT_DONE; 269 270 GET_DEFAULT (19): /* get_default_rp_options */ 271 return_entry = ssu_request_processor_$get_default_rp_options; 272 go to GET_DEFAULT_DONE; 273 274 GET_DEFAULT (20): /* get_request_processor_options */ 275 return_entry = ssu_request_processor_$get_rp_options; 276 go to GET_DEFAULT_DONE; 277 278 GET_DEFAULT (21): /* reset_request_processor_options */ 279 return_entry = ssu_request_processor_$reset_rp_options; 280 go to GET_DEFAULT_DONE; 281 282 GET_DEFAULT (22): /* set_request_processor_options */ 283 return_entry = ssu_request_processor_$set_rp_options; 284 go to GET_DEFAULT_DONE; 285 286 GET_DEFAULT (23): /* get_subsystem_and_request_name */ 287 return_entry = ssu_invocation_$get_subsystem_and_request_name; 288 go to GET_DEFAULT_DONE; 289 290 end get_default_entry; 291 292 /* */ 293 294 /* Get or set the specified replaceable entry */ 295 296 get_or_set_entry: 297 proc (p_index, p_set_sw, p_entry_variable); 298 299 dcl p_index fixed binary parameter; 300 dcl p_set_sw bit (1) aligned parameter; 301 dcl p_entry_variable entry () options (variable) variable parameter; 302 303 go to GET_OR_SET (p_index); 304 305 GET_OR_SET_DONE: /* "return" to here */ 306 return; 307 308 309 GET_OR_SET (1): /* individual handlers */ 310 if p_set_sw then 311 sci.entries.abort_line = p_entry_variable; 312 else p_entry_variable = sci.entries.abort_line; 313 go to GET_OR_SET_DONE; 314 315 GET_OR_SET (2): 316 if p_set_sw then 317 sci.entries.abort_subsystem = p_entry_variable; 318 else p_entry_variable = sci.entries.abort_subsystem; 319 go to GET_OR_SET_DONE; 320 321 GET_OR_SET (3): 322 if p_set_sw then 323 sci.entries.print_message = p_entry_variable; 324 else p_entry_variable = sci.entries.print_message; 325 go to GET_OR_SET_DONE; 326 327 GET_OR_SET (4): 328 if p_set_sw then 329 sci.entries.program_interrupt = p_entry_variable; 330 else p_entry_variable = sci.entries.program_interrupt; 331 go to GET_OR_SET_DONE; 332 333 GET_OR_SET (5): 334 if p_set_sw then 335 sci.entries.pre_request_line = p_entry_variable; 336 else p_entry_variable = sci.entries.pre_request_line; 337 go to GET_OR_SET_DONE; 338 339 GET_OR_SET (6): 340 if p_set_sw then 341 sci.entries.post_request_line = p_entry_variable; 342 else p_entry_variable = sci.entries.post_request_line; 343 go to GET_OR_SET_DONE; 344 345 GET_OR_SET (7): 346 if p_set_sw then 347 sci.entries.ready = p_entry_variable; 348 else p_entry_variable = sci.entries.ready; 349 go to GET_OR_SET_DONE; 350 351 GET_OR_SET (8): 352 if p_set_sw then 353 sci.entries.cpescape = p_entry_variable; 354 else p_entry_variable = sci.entries.cpescape; 355 go to GET_OR_SET_DONE; 356 357 GET_OR_SET (9): 358 if p_set_sw then 359 sci.entries.unknown_request = p_entry_variable; 360 else p_entry_variable = sci.entries.unknown_request; 361 go to GET_OR_SET_DONE; 362 363 GET_OR_SET (10): 364 if p_set_sw then 365 sci.entries.listen = p_entry_variable; 366 else p_entry_variable = sci.entries.listen; 367 go to GET_OR_SET_DONE; 368 369 GET_OR_SET (11): 370 if p_set_sw then 371 sci.entries.execute_line = p_entry_variable; 372 else p_entry_variable = sci.entries.execute_line; 373 go to GET_OR_SET_DONE; 374 375 GET_OR_SET (12): 376 if p_set_sw then 377 sci.entries.evaluate_active_string = p_entry_variable; 378 else p_entry_variable = sci.entries.evaluate_active_string; 379 go to GET_OR_SET_DONE; 380 381 GET_OR_SET (13): 382 if p_set_sw then 383 sci.entries.invoke_request = p_entry_variable; 384 else p_entry_variable = sci.entries.invoke_request; 385 go to GET_OR_SET_DONE; 386 387 GET_OR_SET (14): 388 if p_set_sw then 389 sci.entries.locate_request = p_entry_variable; 390 else p_entry_variable = sci.entries.locate_request; 391 go to GET_OR_SET_DONE; 392 393 GET_OR_SET (15): 394 if p_set_sw then 395 sci.entries.arg_count = p_entry_variable; 396 else p_entry_variable = sci.entries.arg_count; 397 go to GET_OR_SET_DONE; 398 399 GET_OR_SET (16): 400 if p_set_sw then 401 sci.entries.arg_ptr = p_entry_variable; 402 else p_entry_variable = sci.entries.arg_ptr; 403 go to GET_OR_SET_DONE; 404 405 GET_OR_SET (17): 406 if p_set_sw then 407 sci.entries.return_arg = p_entry_variable; 408 else p_entry_variable = sci.entries.return_arg; 409 go to GET_OR_SET_DONE; 410 411 GET_OR_SET (18): 412 if p_set_sw then 413 sci.entries.arg_list_ptr = p_entry_variable; 414 else p_entry_variable = sci.entries.arg_list_ptr; 415 go to GET_OR_SET_DONE; 416 417 GET_OR_SET (19): 418 if p_set_sw then 419 sci.entries.get_default_rp_options = p_entry_variable; 420 else p_entry_variable = sci.entries.get_default_rp_options; 421 go to GET_OR_SET_DONE; 422 423 GET_OR_SET (20): 424 if p_set_sw then 425 sci.entries.get_rp_options = p_entry_variable; 426 else p_entry_variable = sci.entries.get_rp_options; 427 go to GET_OR_SET_DONE; 428 429 GET_OR_SET (21): 430 if p_set_sw then 431 sci.entries.reset_rp_options = p_entry_variable; 432 else p_entry_variable = sci.entries.reset_rp_options; 433 go to GET_OR_SET_DONE; 434 435 GET_OR_SET (22): 436 if p_set_sw then 437 sci.entries.set_rp_options = p_entry_variable; 438 else p_entry_variable = sci.entries.set_rp_options; 439 go to GET_OR_SET_DONE; 440 441 GET_OR_SET (23): 442 if p_set_sw then 443 sci.entries.get_subsys_and_request_name = p_entry_variable; 444 else p_entry_variable = sci.entries.get_subsys_and_request_name; 445 go to GET_OR_SET_DONE; 446 447 end get_or_set_entry; 448 449 /* */ 450 1 1 /* BEGIN: _ssu_check_sci.incl.pl1 * * * * * */ 1 2 1 3 /* Created: 25 February 1982 by G. Palter */ 1 4 /* Modified: 6 November 1984 by G. Palter for version 3 and new sub_err_ 1 5* calling sequence */ 1 6 1 7 1 8 /****^ HISTORY COMMENTS: 1 9* 1) change(87-02-07,GDixon), approve(87-05-25,MCR7680), 1 10* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 1 11* Modified to verify that p_sci_ptr has proper its modifier by overlaying it 1 12* with the structure in its.incl.pl1, rather than assuming knowledge of 1 13* pointer format. 1 14* END HISTORY COMMENTS */ 1 15 1 16 1 17 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 1 18 1 19 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 20 /* */ 1 21 /* Validates that the caller's sci_ptr acutally references a valid */ 1 22 /* subsystem control info structure. */ 1 23 /* */ 1 24 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 25 1 26 ssu_check_sci: 1 27 procedure (p_sci_ptr); 1 28 1 29 dcl p_sci_ptr pointer parameter; 1 30 1 31 dcl SSU_ character (32) static options (constant) initial ("ssu_"); 1 32 1 33 dcl error_table_$bad_ptr fixed binary (35) external; 1 34 dcl error_table_$null_info_ptr fixed binary (35) external; 1 35 dcl error_table_$unimplemented_version fixed binary (35) external; 1 36 1 37 dcl sub_err_ entry () options (variable); 1 38 1 39 dcl (null, substr, unspec) builtin; 1 40 1 41 if addr(p_sci_ptr) -> its.its_mod ^= ITS_MODIFIER then do; 1 42 RESIGNAL_BAD_POINTER: 1 43 call sub_err_ (error_table_$bad_ptr, SSU_, ACTION_CANT_RESTART, null (), (0), "^24.3b", unspec (p_sci_ptr)); 1 44 go to RESIGNAL_BAD_POINTER; 1 45 end; 1 46 1 47 if p_sci_ptr = null () then do; 1 48 RESIGNAL_NULL_POINTER: 1 49 call sub_err_ (error_table_$null_info_ptr, SSU_, ACTION_CANT_RESTART, null (), (0), "sci_ptr"); 1 50 go to RESIGNAL_NULL_POINTER; 1 51 end; 1 52 1 53 if p_sci_ptr -> sci.version = SCI_VERSION_3 then /* all is well */ 1 54 return; 1 55 1 56 RESIGNAL_BAD_VERSION: 1 57 call sub_err_ (error_table_$unimplemented_version, SSU_, ACTION_CANT_RESTART, null (), (0), "^24.3b", 1 58 unspec (p_sci_ptr -> sci.version)); 1 59 go to RESIGNAL_BAD_VERSION; 1 60 2 1 /* BEGIN INCLUDE FILE its.incl.pl1 2 2* modified 27 July 79 by JRDavis to add its_unsigned 2 3* Internal format of ITS pointer, including ring-number field for follow-on processor */ 2 4 2 5 dcl 1 its based aligned, /* declaration for ITS type pointer */ 2 6 2 pad1 bit (3) unaligned, 2 7 2 segno bit (15) unaligned, /* segment number within the pointer */ 2 8 2 ringno bit (3) unaligned, /* ring number within the pointer */ 2 9 2 pad2 bit (9) unaligned, 2 10 2 its_mod bit (6) unaligned, /* should be 43(8) */ 2 11 2 12 2 offset bit (18) unaligned, /* word offset within the addressed segment */ 2 13 2 pad3 bit (3) unaligned, 2 14 2 bit_offset bit (6) unaligned, /* bit offset within the word */ 2 15 2 pad4 bit (3) unaligned, 2 16 2 mod bit (6) unaligned; /* further modification */ 2 17 2 18 dcl 1 itp based aligned, /* declaration for ITP type pointer */ 2 19 2 pr_no bit (3) unaligned, /* number of pointer register to use */ 2 20 2 pad1 bit (27) unaligned, 2 21 2 itp_mod bit (6) unaligned, /* should be 41(8) */ 2 22 2 23 2 offset bit (18) unaligned, /* word offset from pointer register word offset */ 2 24 2 pad2 bit (3) unaligned, 2 25 2 bit_offset bit (6) unaligned, /* bit offset relative to new word offset */ 2 26 2 pad3 bit (3) unaligned, 2 27 2 mod bit (6) unaligned; /* further modification */ 2 28 2 29 2 30 dcl 1 its_unsigned based aligned, /* just like its, but with unsigned binary */ 2 31 2 pad1 bit (3) unaligned, 2 32 2 segno fixed bin (15) unsigned unaligned, 2 33 2 ringno fixed bin (3) unsigned unaligned, 2 34 2 pad2 bit (9) unaligned, 2 35 2 its_mod bit (6) unaligned, 2 36 2 37 2 offset fixed bin (18) unsigned unaligned, 2 38 2 pad3 bit (3) unaligned, 2 39 2 bit_offset fixed bin (6) unsigned unaligned, 2 40 2 pad4 bit (3) unaligned, 2 41 2 mod bit (6) unaligned; 2 42 2 43 dcl 1 itp_unsigned based aligned, /* just like itp, but with unsigned binary where appropriate */ 2 44 2 pr_no fixed bin (3) unsigned unaligned, 2 45 2 pad1 bit (27) unaligned, 2 46 2 itp_mod bit (6) unaligned, 2 47 2 48 2 offset fixed bin (18) unsigned unaligned, 2 49 2 pad2 bit (3) unaligned, 2 50 2 bit_offset fixed bin (6) unsigned unaligned, 2 51 2 pad3 bit (3) unaligned, 2 52 2 mod bit (6) unaligned; 2 53 2 54 2 55 dcl ITS_MODIFIER bit (6) unaligned internal static options (constant) init ("43"b3); 2 56 dcl ITP_MODIFIER bit (6) unaligned internal static options (constant) init ("41"b3); 2 57 2 58 /* END INCLUDE FILE its.incl.pl1 */ 1 61 1 62 3 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 3 2 /* format: style3 */ 3 3 3 4 /* These constants are to be used for the flags argument of sub_err_ */ 3 5 /* They are just "string (condition_info_header.action_flags)" */ 3 6 3 7 declare ( 3 8 ACTION_CAN_RESTART init (""b), 3 9 ACTION_CANT_RESTART init ("1"b), 3 10 ACTION_DEFAULT_RESTART 3 11 init ("01"b), 3 12 ACTION_QUIET_RESTART 3 13 init ("001"b), 3 14 ACTION_SUPPORT_SIGNAL 3 15 init ("0001"b) 3 16 ) bit (36) aligned internal static options (constant); 3 17 3 18 /* End include file */ 1 63 1 64 1 65 end ssu_check_sci; 1 66 1 67 1 68 /* END OF: _ssu_check_sci.incl.pl1 * * * * * */ 451 452 4 1 /* BEGIN INCLUDE FILE ... _ssu_sci.incl.pl1 */ 4 2 /* Created: 31 April 1980 by W. Olin Sibert */ 4 3 /* Modified: 17 November 1981 by Jay Pattin to add info_prefix */ 4 4 /* Modified: 10 December 1981 by G. Palter to make arg_count, arg_ptr, return_arg, and arg_list_ptr replaceable */ 4 5 /* Modified: 10 February 1982 by G. Palter to reorganize and make changes required for installation */ 4 6 /* Modified: June 1982 by G. Palter for version 2 (new request processor options and replaceable procedures) */ 4 7 /* Modified: 6 November 1984 by G. Palter for version 3 (get_subsystem_and_request_name is now replaceable) */ 4 8 4 9 /* format: style4,^delnl */ 4 10 4 11 4 12 /* Structure used internally by subsystem utilities to contain control information about a single invocation */ 4 13 4 14 dcl 1 sci aligned based (sci_ptr), 4 15 2 version character (8), 4 16 2 parent_area_ptr pointer, /* -> area holding this data and referenced structures */ 4 17 4 18 2 global_info, /* global information about this subsystem ... */ 4 19 3 subsystem_name char (32) unaligned, /* ... its name (eg: read_mail) */ 4 20 3 subsystem_version char (32) unaligned, /* ... its version numer (eg: 4.3j) */ 4 21 3 info_ptr pointer, /* ... -> data maintained by the subsystem */ 4 22 3 standalone_abort_entry entry () variable, /* ... for standalone invocations: called by ssu_$abort_* */ 4 23 3 flags, 4 24 4 standalone_invocation bit (1) unaligned, /* ... ON => ssu_$standalone_invocation was used */ 4 25 4 in_listener bit (1) unaligned, /* ... ON => in subsystem listener loop */ 4 26 4 executing_request bit (1) unaligned, /* ... ON => executing a request */ 4 27 4 debug_mode bit (1) unaligned, /* ... ON => debugging the subsystem */ 4 28 4 pad bit (32) unaligned, 4 29 4 30 2 recursion_info, /* describes relationship of this invocation to other active 4 31* invocations of the same subsystem ... */ 4 32 3 invocation_data_idx fixed binary, /* ... locates the list of active invocations */ 4 33 3 level fixed binary, /* ... # of active invocations when this one created + 1 */ 4 34 3 previous_sci_ptr pointer, /* ... -> description of previous invocation */ 4 35 3 next_sci_ptr pointer, /* ... -> description of next invocation */ 4 36 4 37 2 request_processor_info, /* information related to request line processing ... */ 4 38 3 request_tables_ptr pointer, /* ... -> list of request tables in use */ 4 39 3 rp_options_ptr pointer, /* ... -> options controlling the processor */ 4 40 3 abort_line_label label variable, 4 41 3 request_data_ptr pointer, /* ... -> request_data structure for current request */ 4 42 4 43 2 prompt_and_ready_info, /* information related to prompts and ready messages ... */ 4 44 3 prompt character (64) varying, /* the prompt (if any): an ioa_ control string */ 4 45 3 prompt_mode, /* controls prompting ... */ 4 46 4 dont_prompt bit (1) unaligned, /* ... ON => never prompt */ 4 47 4 prompt_after_null_lines bit (1) unaligned, /* ... ON => prompt after a blank line if prompts enabled */ 4 48 4 dont_prompt_if_typeahead bit (1) unaligned, /* ... ON => suppress prompts if request line available */ 4 49 4 pad bit (33) unaligned, 4 50 3 ready_enabled bit (1) aligned, /* ... ON => ready procedure should be invoked */ 4 51 4 52 2 listener_info, /* information used by the listener ... */ 4 53 3 abort_subsystem_label label variable, 4 54 3 temp_seg_ptr pointer, /* ... -> temporary segment used for long request lines */ 4 55 4 56 2 temp_info_ptr pointer, /* pointer to data used by ssu_temp_mgr_ */ 4 57 4 58 2 info_info, /* information related to self-documentation ... */ 4 59 3 info_dirs_ptr pointer, /* ... -> list of info directories */ 4 60 3 info_prefix character (32), /* ... prefix used to form info segment names */ 4 61 4 62 2 ec_info, /* data for subsystem exec_com processing ... */ 4 63 3 ec_suffix char (32) unaligned, /* ... suffix of exec_com segments */ 4 64 3 ec_search_list char (32) unaligned, /* ... search list used to find exec_coms */ 4 65 3 subsystem_dir_ptr pointer, /* ... defines referencing_dir rule for above search list */ 4 66 4 67 2 entries, /* all replaceable entries ... */ 4 68 ( 4 69 3 abort_line, /* ... invoked by ssu_$abort_line */ 4 70 3 abort_subsystem, /* ... invoked by ssu_$abort_subsystem */ 4 71 3 print_message, /* ... invoked by ssu_$print_message */ 4 72 3 program_interrupt, /* ... cannot be called externally */ 4 73 3 pre_request_line, /* ... cannot be called externally */ 4 74 3 post_request_line, /* ... cannot be called externally */ 4 75 3 ready, /* ... invoked by ssu_$ready_proc */ 4 76 3 cpescape, /* ... cannot be called externally */ 4 77 3 unknown_request, /* ... invoked by ssu_$unknown_request */ 4 78 3 listen, /* ... invoked by ssu_$listen */ 4 79 3 execute_line, /* ... invoked by ssu_$execute_line */ 4 80 3 evaluate_active_string, /* ... invoked by ssu_$evaluate_active_string */ 4 81 3 invoke_request, /* ... invoked by ssu_$invoke_request */ 4 82 3 locate_request, /* ... invoked by ssu_$locate_request */ 4 83 3 arg_count, /* ... invoked by ssu_$arg_count */ 4 84 3 arg_ptr, /* ... invoked by ssu_$arg_ptr */ 4 85 3 return_arg, /* ... invoked by ssu_$return_arg */ 4 86 3 arg_list_ptr, /* ... invoked by ssu_$arg_list_ptr */ 4 87 3 get_default_rp_options, /* ... invoked by ssu_$get_default_rp_options */ 4 88 3 get_rp_options, /* ... invoked by ssu_$get_request_processor_options */ 4 89 3 set_rp_options, /* ... invoked by ssu_$set_request_processor_options */ 4 90 3 reset_rp_options, /* ... invoked by ssu_$reset_request_processor_options */ 4 91 3 get_subsys_and_request_name /* ... invoked by ssu_$get_subsystem_and_request_name */ 4 92 ) entry () variable options (variable); 4 93 4 94 dcl sci_ptr pointer; 4 95 4 96 dcl sci_parent_area area based (sci.parent_area_ptr); 4 97 4 98 dcl SCI_VERSION_3 character (8) static options (constant) init ("sci_0003"); 4 99 4 100 /* END INCLUDE FILE ... _ssu_sci.incl.pl1 */ 453 454 455 end ssu_procedure_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1153.1 ssu_procedure_mgr_.pl1 >udd>sm>ds>w>ml>ssu_procedure_mgr_.pl1 451 1 08/06/87 1013.4 _ssu_check_sci.incl.pl1 >ldd>incl>_ssu_check_sci.incl.pl1 1-61 2 11/26/79 1420.6 its.incl.pl1 >ldd>incl>its.incl.pl1 1-63 3 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>incl>sub_err_flags.incl.pl1 453 4 01/21/85 1012.2 _ssu_sci.incl.pl1 >ldd>incl>_ssu_sci.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. ACTION_CANT_RESTART 000367 constant bit(36) initial dcl 3-7 set ref 1-42* 1-48* 1-56* ITS_MODIFIER constant bit(6) initial packed unaligned dcl 2-55 ref 1-41 PROC_NAME 000070 constant char(32) initial array packed unaligned dcl 50 ref 144 166 167 P_code parameter fixed bin(35,0) dcl 30 set ref 67 74* 75 85 92* 93 103 110* 111 121 128* 129 P_entry_variable parameter entry variable dcl 29 set ref 67 77* 85 95* 103 113* P_proc_name parameter char packed unaligned dcl 28 set ref 67 74* 85 92* 103 110* 121 128* P_sci_ptr parameter pointer dcl 27 set ref 67 70* 72 85 88* 90 103 106* 108 121 124* 126 139 142 SCI_VERSION_3 000066 constant char(8) initial packed unaligned dcl 4-98 ref 1-53 SSU_ 000056 constant char(32) initial packed unaligned dcl 1-31 set ref 1-42* 1-48* 1-56* abort_line 144 based entry variable level 3 dcl 4-14 set ref 309* 312 abort_subsystem 150 based entry variable level 3 dcl 4-14 set ref 315* 318 arg_count 234 based entry variable level 3 dcl 4-14 set ref 393* 396 arg_list_ptr 250 based entry variable level 3 dcl 4-14 set ref 411* 414 arg_ptr 240 based entry variable level 3 dcl 4-14 set ref 399* 402 cpescape 200 based entry variable level 3 dcl 4-14 set ref 351* 354 entries 144 based structure level 2 dcl 4-14 error_table_$bad_ptr 000064 external static fixed bin(35,0) dcl 1-33 set ref 1-42* error_table_$noentry 000010 external static fixed bin(35,0) dcl 37 ref 175 error_table_$null_info_ptr 000066 external static fixed bin(35,0) dcl 1-34 set ref 1-48* error_table_$unimplemented_version 000070 external static fixed bin(35,0) dcl 1-35 set ref 1-56* evaluate_active_string 220 based entry variable level 3 dcl 4-14 set ref 375* 378 execute_line 214 based entry variable level 3 dcl 4-14 set ref 369* 372 get_default_rp_options 254 based entry variable level 3 dcl 4-14 set ref 417* 420 get_rp_options 260 based entry variable level 3 dcl 4-14 set ref 423* 426 get_subsys_and_request_name 274 based entry variable level 3 dcl 4-14 set ref 441* 444 hbound builtin function dcl 61 ref 144 166 idx 000114 automatic fixed bin(17,0) dcl 161 set ref 166* 167 169* invoke_request 224 based entry variable level 3 dcl 4-14 set ref 381* 384 its based structure level 1 dcl 2-5 its_mod 0(30) based bit(6) level 2 packed packed unaligned dcl 2-5 ref 1-41 listen 210 based entry variable level 3 dcl 4-14 set ref 363* 366 locate_request 230 based entry variable level 3 dcl 4-14 set ref 387* 390 null builtin function dcl 1-39 ref 1-42 1-42 1-47 1-48 1-48 1-56 1-56 p_code parameter fixed bin(35,0) dcl 159 set ref 154 168* 175* p_entry_variable parameter entry variable dcl 301 set ref 296 309 312* 315 318* 321 324* 327 330* 333 336* 339 342* 345 348* 351 354* 357 360* 363 366* 369 372* 375 378* 381 384* 387 390* 393 396* 399 402* 405 408* 411 414* 417 420* 423 426* 429 432* 435 438* 441 444* p_idx parameter fixed bin(17,0) dcl 158 set ref 154 169* 174* p_index parameter fixed bin(17,0) dcl 299 in procedure "get_or_set_entry" ref 296 303 p_index parameter fixed bin(17,0) dcl 188 in procedure "get_default_entry" ref 185 191 p_name parameter char packed unaligned dcl 157 ref 154 164 p_sci_ptr parameter pointer dcl 1-29 set ref 1-26 1-41 1-42 1-42 1-47 1-53 1-56 1-56 p_set_sw parameter bit(1) dcl 300 ref 296 309 315 321 327 333 339 345 351 357 363 369 375 381 387 393 399 405 411 417 423 429 435 441 post_request_line 170 based entry variable level 3 dcl 4-14 set ref 339* 342 pre_request_line 164 based entry variable level 3 dcl 4-14 set ref 333* 336 print_message 154 based entry variable level 3 dcl 4-14 set ref 321* 324 proc_idx 000100 automatic fixed bin(17,0) dcl 35 set ref 74* 77* 92* 95* 110* 113* 128* 131* 131* 131* 144* 145* 145* 145* proc_name 000115 automatic char(32) packed unaligned dcl 162 set ref 164* 167 program_interrupt 160 based entry variable level 3 dcl 4-14 set ref 327* 330 ready 174 based entry variable level 3 dcl 4-14 set ref 345* 348 reset_rp_options 270 based entry variable level 3 dcl 4-14 set ref 429* 432 return_arg 244 based entry variable level 3 dcl 4-14 set ref 405* 408 return_entry 000134 automatic entry variable dcl 189 set ref 194 198* 202* 206* 210* 214* 218* 222* 226* 230* 234* 238* 242* 246* 250* 254* 258* 262* 266* 270* 274* 278* 282* 286* sci based structure level 1 dcl 4-14 sci_ptr 000102 automatic pointer dcl 4-94 set ref 72* 90* 108* 126* 142* 309 312 315 318 321 324 327 330 333 336 339 342 345 348 351 354 357 360 363 366 369 372 375 378 381 384 387 390 393 396 399 402 405 408 411 414 417 420 423 426 429 432 435 438 441 444 set_rp_options 264 based entry variable level 3 dcl 4-14 set ref 435* 438 ssu_$just_return 000036 constant entry external dcl 41 ref 210 214 218 ssu_arglist_$arg_count 000042 constant entry external dcl 41 ref 254 ssu_arglist_$arg_list_ptr 000050 constant entry external dcl 41 ref 266 ssu_arglist_$arg_ptr 000044 constant entry external dcl 41 ref 258 ssu_arglist_$return_arg 000046 constant entry external dcl 41 ref 262 ssu_error_$abort_line 000012 constant entry external dcl 41 ref 198 ssu_error_$abort_subsystem 000014 constant entry external dcl 41 ref 202 ssu_error_$print_message 000016 constant entry external dcl 41 ref 206 ssu_execute_$execute_request 000032 constant entry external dcl 41 ref 246 ssu_invocation_$get_subsystem_and_request_name 000062 constant entry external dcl 41 ref 286 ssu_listen_$listen 000024 constant entry external dcl 41 ref 234 ssu_misc_procs_$cpescape 000020 constant entry external dcl 41 ref 226 ssu_misc_procs_$ready_proc 000040 constant entry external dcl 41 ref 222 ssu_misc_procs_$unknown_request 000022 constant entry external dcl 41 ref 230 ssu_request_mgr_$locate_request 000034 constant entry external dcl 41 ref 250 ssu_request_processor_$evaluate_active_string 000030 constant entry external dcl 41 ref 242 ssu_request_processor_$execute_line 000026 constant entry external dcl 41 ref 238 ssu_request_processor_$get_default_rp_options 000052 constant entry external dcl 41 ref 270 ssu_request_processor_$get_rp_options 000054 constant entry external dcl 41 ref 274 ssu_request_processor_$reset_rp_options 000056 constant entry external dcl 41 ref 278 ssu_request_processor_$set_rp_options 000060 constant entry external dcl 41 ref 282 sub_err_ 000072 constant entry external dcl 1-37 ref 1-42 1-48 1-56 unknown_request 204 based entry variable level 3 dcl 4-14 set ref 357* 360 unspec builtin function dcl 1-39 ref 1-42 1-42 1-56 1-56 version based char(8) level 2 dcl 4-14 ref 1-53 1-56 1-56 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 3-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 3-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 3-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 3-7 ITP_MODIFIER internal static bit(6) initial packed unaligned dcl 2-56 itp based structure level 1 dcl 2-18 itp_unsigned based structure level 1 dcl 2-43 its_unsigned based structure level 1 dcl 2-30 sci_parent_area based area(1024) dcl 4-96 substr builtin function dcl 1-39 NAMES DECLARED BY EXPLICIT CONTEXT. GET_DEFAULT 000000 constant label array(23) dcl 198 ref 191 GET_DEFAULT_DONE 001074 constant label dcl 194 ref 200 204 208 212 216 220 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284 288 GET_OR_SET 000027 constant label array(23) dcl 309 ref 303 GET_OR_SET_DONE 001321 constant label dcl 305 set ref 313 319 325 331 337 343 349 355 361 367 373 379 385 391 397 403 409 415 421 427 433 439 445 RESIGNAL_BAD_POINTER 002215 constant label dcl 1-42 ref 1-44 RESIGNAL_BAD_VERSION 002347 constant label dcl 1-56 set ref 1-59 RESIGNAL_NULL_POINTER 002275 constant label dcl 1-48 ref 1-50 get 000420 constant entry external dcl 67 get_default 000610 constant entry external dcl 103 get_default_entry 001070 constant entry internal dcl 185 ref 113 131 131 145 145 get_or_set_entry 001315 constant entry internal dcl 296 ref 77 95 131 145 lookup_proc_name 001020 constant entry internal dcl 154 ref 74 92 110 128 set 000514 constant entry external dcl 85 set_all_default 000770 constant entry external dcl 139 set_default 000702 constant entry external dcl 121 ssu_check_sci 002207 constant entry internal dcl 1-26 ref 70 88 106 124 ssu_procedure_mgr_ 000405 constant entry external dcl 19 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 1-41 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3056 3152 2444 3066 Length 3460 2444 74 272 412 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ssu_procedure_mgr_ 172 external procedure is an external procedure. lookup_proc_name internal procedure shares stack frame of external procedure ssu_procedure_mgr_. get_default_entry internal procedure shares stack frame of external procedure ssu_procedure_mgr_. get_or_set_entry internal procedure shares stack frame of external procedure ssu_procedure_mgr_. ssu_check_sci internal procedure shares stack frame of external procedure ssu_procedure_mgr_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ssu_procedure_mgr_ 000100 proc_idx ssu_procedure_mgr_ 000102 sci_ptr ssu_procedure_mgr_ 000114 idx lookup_proc_name 000115 proc_name lookup_proc_name 000134 return_entry get_default_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ssu_$just_return ssu_arglist_$arg_count ssu_arglist_$arg_list_ptr ssu_arglist_$arg_ptr ssu_arglist_$return_arg ssu_error_$abort_line ssu_error_$abort_subsystem ssu_error_$print_message ssu_execute_$execute_request ssu_invocation_$get_subsystem_and_request_name ssu_listen_$listen ssu_misc_procs_$cpescape ssu_misc_procs_$ready_proc ssu_misc_procs_$unknown_request ssu_request_mgr_$locate_request ssu_request_processor_$evaluate_active_string ssu_request_processor_$execute_line ssu_request_processor_$get_default_rp_options ssu_request_processor_$get_rp_options ssu_request_processor_$reset_rp_options ssu_request_processor_$set_rp_options sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_ptr error_table_$noentry error_table_$null_info_ptr error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000404 22 000412 67 000413 70 000436 72 000445 74 000451 75 000472 77 000474 79 000511 85 000512 88 000532 90 000541 92 000545 93 000566 95 000570 97 000605 103 000606 106 000626 108 000635 110 000641 111 000662 113 000664 115 000675 121 000676 124 000720 126 000727 128 000733 129 000754 131 000756 133 000764 139 000765 142 000775 144 001001 145 001007 146 001015 148 001017 154 001020 164 001031 166 001036 167 001043 168 001052 169 001054 170 001056 172 001057 174 001061 175 001064 177 001067 185 001070 191 001072 194 001074 198 001103 200 001110 202 001111 204 001116 206 001117 208 001124 210 001125 212 001132 214 001133 216 001140 218 001141 220 001146 222 001147 224 001154 226 001155 228 001162 230 001163 232 001170 234 001171 236 001176 238 001177 240 001204 242 001205 244 001212 246 001213 248 001220 250 001221 252 001226 254 001227 256 001234 258 001235 260 001242 262 001243 264 001250 266 001251 268 001256 270 001257 272 001264 274 001265 276 001272 278 001273 280 001300 282 001301 284 001306 286 001307 288 001314 296 001315 303 001317 305 001321 309 001322 312 001335 313 001344 315 001345 318 001360 319 001367 321 001370 324 001403 325 001412 327 001413 330 001426 331 001435 333 001436 336 001451 337 001460 339 001461 342 001474 343 001503 345 001504 348 001517 349 001526 351 001527 354 001542 355 001551 357 001552 360 001565 361 001574 363 001575 366 001610 367 001617 369 001620 372 001633 373 001642 375 001643 378 001656 379 001665 381 001666 384 001701 385 001710 387 001711 390 001724 391 001733 393 001734 396 001747 397 001756 399 001757 402 001772 403 002001 405 002002 408 002015 409 002024 411 002025 414 002040 415 002047 417 002050 420 002063 421 002072 423 002073 426 002106 427 002115 429 002116 432 002131 433 002140 435 002141 438 002154 439 002163 441 002164 444 002177 445 002206 1 26 002207 1 41 002211 1 42 002215 1 44 002270 1 47 002271 1 48 002275 1 50 002337 1 53 002340 1 56 002347 1 59 002423 ----------------------------------------------------------- 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