COMPILATION LISTING OF SEGMENT ssu_execute_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1640.6 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* Invoke a subsystem request */ 9 10 /* Created: 3 May 1980 by W. Olin Sibert */ 11 /* Modified: 15 February 1982 by G. Palter to treat the continue_sw from unknown requests according to the documentation 12* and to reflect the reorganization of the sci structure */ 13 14 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 15 16 17 ssu_execute_: 18 procedure (); 19 20 return; /* not an entrypoint */ 21 22 23 /* Parameters */ 24 25 dcl P_sci_ptr pointer parameter; 26 dcl P_request_name character (*) parameter; /* name of the request to be incoked */ 27 dcl P_arg_list_ptr pointer parameter; /* -> the arguments for the request */ 28 dcl P_code fixed binary (35) parameter; 29 30 31 /* Local copies of parameters */ 32 33 dcl code fixed bin (35); 34 35 36 /* Remaining declarations */ 37 38 dcl saved_request_data_ptr pointer; 39 dcl saved_executing_request bit (1) aligned; 40 41 dcl 1 auto_request_data aligned like request_data automatic; 42 43 dcl continue_sw bit (1) aligned; 44 45 dcl iox_$error_output pointer external; 46 47 dcl ( 48 ssu_et_$active_function_error, 49 ssu_et_$not_command_request, 50 ssu_et_$not_af_request, 51 ssu_et_$unknown_request 52 ) fixed binary (35) external; 53 54 dcl cu_$af_return_arg_rel entry (fixed binary, pointer, fixed binary (21), fixed binary (35), pointer); 55 dcl cu_$generate_call entry (entry, pointer); 56 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 57 dcl ioa_$ioa_switch entry () options (variable); 58 dcl iox_$put_chars entry (pointer, pointer, fixed binary (21), fixed binary (35)); 59 dcl ssu_$abort_line entry () options (variable); 60 dcl ssu_$locate_request entry (pointer, character (*), pointer, fixed binary (35)); 61 dcl ssu_$unknown_request entry (pointer, pointer, character (*), pointer, bit (1) aligned); 62 dcl ssu_misc_procs_$unknown_request entry (pointer, pointer, character (*), pointer, bit (1) aligned); 63 64 dcl (active_function_error, cleanup) condition; 65 66 dcl (addr, null, length, substr) builtin; 67 68 /* */ 69 70 /* Invokes a subsystem request: the default procedure reached by ssu_$invoke_request; also responsible for invoking 71* Multics requests */ 72 73 execute_request: 74 entry (P_sci_ptr, P_request_name, P_arg_list_ptr, P_code); 75 76 call ssu_check_sci (P_sci_ptr); 77 78 sci_ptr = P_sci_ptr; 79 80 request_data_ptr = addr (auto_request_data); 81 82 call ssu_$locate_request (sci_ptr, P_request_name, request_data_ptr, code); 83 if code = ssu_et_$unknown_request then do; /* not in the request table (or whatever) */ 84 continue_sw = "0"b; 85 call ssu_$unknown_request (sci_ptr, sci.info_ptr, P_request_name, P_arg_list_ptr, continue_sw); 86 if continue_sw then /* caller handled it and wants request line ... */ 87 P_code = 0; /* ... to be completed normally */ 88 else do; /* caller wants request line aborted ... */ 89 call ssu_misc_procs_$unknown_request (sci_ptr, sci.info_ptr, P_request_name, P_arg_list_ptr, 90 continue_sw); 91 P_code = code; 92 end; 93 return; 94 end; 95 96 else if code ^= 0 then /* some other peculiar type of error */ 97 call ssu_$abort_line (sci_ptr, code, """^a""", P_request_name); 98 99 request_data.arg_list_ptr = P_arg_list_ptr; 100 101 call cu_$af_return_arg_rel /* fill in call_info substructure */ 102 (request_data.arg_count, request_data.rv_ptr, request_data.rv_lth, code, request_data.arg_list_ptr); 103 104 if code = 0 then /* and set the AF flag */ 105 request_data.af_sw = "1"b; 106 else request_data.af_sw = "0"b; 107 108 if (^request_data.af_sw) & (^request_data.flags.allow_command) then 109 call ssu_$abort_line (sci_ptr, ssu_et_$not_command_request, "^a", request_data.full_name); 110 111 if request_data.af_sw & (^request_data.flags.allow_af) then 112 call ssu_$abort_line (sci_ptr, ssu_et_$not_af_request, "^a", request_data.full_name); 113 114 P_code = 0; 115 116 saved_request_data_ptr = sci.request_data_ptr; /* save it for later... */ 117 saved_executing_request = sci.executing_request; /* in case called from another request */ 118 119 on cleanup 120 begin; /* restore state on an abort */ 121 sci.request_data_ptr = saved_request_data_ptr; 122 sci.executing_request = saved_executing_request; 123 end; 124 125 sci.request_data_ptr = request_data_ptr; /* request_data is in our frame now, and will stick around */ 126 sci.executing_request = "1"b; /* as long as necessary */ 127 128 if request_data.flags.multics_request then do; /* invoke a Multics command/AF as a request ... */ 129 on condition (active_function_error) /* ... catch AF errors in order to print the message */ 130 call report_active_function_error (); 131 call cu_$generate_call (request_data.entry, request_data.arg_list_ptr); 132 revert condition (active_function_error); 133 end; 134 135 else call request_data.entry (sci_ptr, sci.info_ptr); 136 /* an ordinary request */ 137 138 sci.request_data_ptr = saved_request_data_ptr; 139 sci.executing_request = saved_executing_request; 140 141 return; 142 143 /* */ 144 145 /* Reports active function errors: prints the message that would have been printed by the default error handler and then 146* aborts the active function's execution */ 147 148 report_active_function_error: 149 procedure (); 150 151 dcl 1 cond_info aligned automatic like condition_info; 152 153 dcl 1 afe_info aligned based (cond_info.info_ptr) like com_af_error_info; 154 155 dcl code fixed binary (35); 156 157 call find_condition_info_ ((null ()), addr (cond_info), code); 158 if code ^= 0 then /* can't happen */ 159 call ssu_$abort_line (sci_ptr, code, "Unable to find active function error frame."); 160 161 if cond_info.info_ptr = null () then 162 call ssu_$abort_line (sci_ptr, code, "Unable to find active function error frame."); 163 164 call iox_$put_chars (iox_$error_output, afe_info.errmess_ptr, afe_info.errmess_lth, (0)); 165 166 call ssu_$abort_line (sci_ptr, ssu_et_$active_function_error); 167 /* never returns (we hope) */ 168 169 end report_active_function_error; 170 171 /* */ 172 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 * * * * * */ 173 174 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 */ 175 176 5 1 /* BEGIN INCLUDE FILE ... _ssu_request_data.incl.pl1 */ 5 2 /* Created: 13 May 1980 by W. Olin Sibert */ 5 3 /* Modified: 28 February 1982 by G. Palter to add dont_summarize and dont_list */ 5 4 /* Modified: 2 August 1982 by Jay Pattin to add unknown flag */ 5 5 5 6 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 5 7 5 8 5 9 /* Description of a subsystem request returned by ssu_$locate_request */ 5 10 5 11 dcl 1 request_data aligned based (request_data_ptr), 5 12 2 full_name character (32) unaligned, /* its primary name */ 5 13 2 entry entry (pointer, pointer) variable, /* entry to call to implement the request */ 5 14 2 call_info, /* describes current invocation of the request ... */ 5 15 3 arg_list_ptr pointer, /* ... -> argument list */ 5 16 3 arg_count fixed binary, 5 17 3 af_sw bit (1) aligned, /* ... ON => invoked as an active request */ 5 18 3 rv_ptr pointer, /* ... -> active request's return string */ 5 19 3 rv_lth fixed binary (21), /* ... maxlength of the return string */ 5 20 2 flags aligned like request_flags, /* attributes of the request (from the request table) */ 5 21 2 name_list_ptr pointer unaligned, /* -> list of all valid names for the request */ 5 22 2 info_string, /* brief description of the request (if any) */ 5 23 3 ptr pointer unaligned, 5 24 3 lth fixed binary (18), 5 25 2 pad (4) bit (36); 5 26 5 27 dcl request_data_ptr pointer; 5 28 5 29 5 30 /* Request attributes from the request table */ 5 31 5 32 dcl 1 request_flags aligned based, 5 33 2 system_flags unaligned, 5 34 3 allow_command bit (1) unaligned, /* ON => request may be called as a command */ 5 35 3 allow_af bit (1) unaligned, /* ON => request may be called as an active function */ 5 36 3 unimplemented bit (1) unaligned, /* ON => request is not yet implemented */ 5 37 3 multics_request bit (1) unaligned, /* ON => this request is really just a Multics command */ 5 38 3 dont_summarize bit (1) unaligned, /* ON => summarize_requests doesn't list this request */ 5 39 3 dont_list bit (1) unaligned, /* ON => list_requests doesn't match this one without -all */ 5 40 3 unknown bit (1) unaligned, /* ON => return unknown_request, don't list or summarize ever */ 5 41 3 pad bit (11) unaligned, 5 42 2 user_flags bit (18) unaligned; /* no longer used */ 5 43 5 44 5 45 /* List of all names for a given request */ 5 46 5 47 dcl 1 request_name_list aligned based (request_name_list_ptr), 5 48 2 n_names fixed binary, /* structure describing name list */ 5 49 2 name (request_name_list_n_names refer (request_name_list.n_names)) character (32) unaligned; 5 50 5 51 dcl request_name_list_ptr pointer; 5 52 dcl request_name_list_n_names fixed binary; 5 53 5 54 5 55 /* Brief description of a request */ 5 56 5 57 dcl request_info_string character (request_info_string_lth) based (request_info_string_ptr); 5 58 dcl request_info_string_lth fixed binary (21); 5 59 dcl request_info_string_ptr pointer; 5 60 5 61 /* END INCLUDE FILE ... _ssu_request_data.incl.pl1 */ 177 178 6 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 6 2 6 3 /* Structure for find_condition_info_. 6 4* 6 5* Written 1-Mar-79 by M. N. Davidoff. 6 6**/ 6 7 6 8 /* automatic */ 6 9 6 10 declare condition_info_ptr pointer; 6 11 6 12 /* based */ 6 13 6 14 declare 1 condition_info aligned based (condition_info_ptr), 6 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 condition_name char (32) varying, /* name of condition */ 6 18 2 info_ptr pointer, /* pointer to the condition data structure */ 6 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 6 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 6 21 2 flags unaligned, 6 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 6 23 3 pad1 bit (35), 6 24 2 pad2 bit (36), 6 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 6 26 2 pad3 (4) bit (36); 6 27 6 28 /* internal static */ 6 29 6 30 declare condition_info_version_1 6 31 fixed binary internal static options (constant) initial (1); 6 32 6 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 179 180 7 1 /* BEGIN INCLUDE FILE com_af_error_info.incl.pl1 April 81 BIM */ 7 2 /* format: style2 */ 7 3 7 4 /* info structures for command error and active function error */ 7 5 /* The include file condition_info_header must be included to use this file */ 7 6 7 7 declare com_af_error_info_ptr pointer; 7 8 declare 1 com_af_error_info aligned based (com_af_error_info_ptr), 7 9 2 header aligned like condition_info_header, 7 10 2 name_ptr ptr, 7 11 2 name_lth fixed bin, 7 12 2 errmess_ptr ptr, 7 13 2 errmess_lth fixed bin (21), 7 14 2 max_errmess_lth fixed bin (21), 7 15 2 print_sw bit (1); /* set this to inform com_err_ that the msg has been printed */ 7 16 7 17 declare com_af_error_info_version_3 internal static options (constant) init (3); 7 18 7 19 /* END INCLUDE FILE com_af_error_info */ 181 182 8 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 8 2 /* format: style2 */ 8 3 8 4 declare condition_info_header_ptr 8 5 pointer; 8 6 declare 1 condition_info_header 8 7 aligned based (condition_info_header_ptr), 8 8 2 length fixed bin, /* length in words of this structure */ 8 9 2 version fixed bin, /* version number of this structure */ 8 10 2 action_flags aligned, /* tell handler how to proceed */ 8 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 8 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 8 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 8 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 8 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 8 16 3 pad bit (32) unaligned, 8 17 2 info_string char (256) varying, /* may contain printable message */ 8 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 8 19 8 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 183 184 185 end ssu_execute_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1539.2 ssu_execute_.pl1 >special_ldd>install>MR12.1-1054>ssu_execute_.pl1 173 1 08/04/87 1140.5 _ssu_check_sci.incl.pl1 >spec>install>1056>_ssu_check_sci.incl.pl1 1-61 2 11/26/79 1320.6 its.incl.pl1 >ldd>include>its.incl.pl1 1-63 3 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 175 4 01/21/85 0912.2 _ssu_sci.incl.pl1 >ldd>include>_ssu_sci.incl.pl1 177 5 09/28/82 1437.6 _ssu_request_data.incl.pl1 >ldd>include>_ssu_request_data.incl.pl1 179 6 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 181 7 06/22/81 1815.3 com_af_error_info.incl.pl1 >ldd>include>com_af_error_info.incl.pl1 183 8 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.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 000022 constant bit(36) initial dcl 3-7 set ref 1-42* 1-48* 1-56* ITS_MODIFIER constant bit(6) initial unaligned dcl 2-55 ref 1-41 P_arg_list_ptr parameter pointer dcl 27 set ref 73 85* 89* 99 P_code parameter fixed bin(35,0) dcl 28 set ref 73 86* 91* 114* P_request_name parameter char unaligned dcl 26 set ref 73 82* 85* 89* 96* P_sci_ptr parameter pointer dcl 25 set ref 73 76* 78 SCI_VERSION_3 000010 constant char(8) initial unaligned dcl 4-98 ref 1-53 SSU_ 000000 constant char(32) initial unaligned dcl 1-31 set ref 1-42* 1-48* 1-56* active_function_error 000142 stack reference condition dcl 64 ref 129 132 addr builtin function dcl 66 ref 80 157 157 1-41 af_sw 17 based bit(1) level 3 dcl 5-11 set ref 104* 106* 108 111 afe_info based structure level 1 dcl 153 allow_af 23(01) based bit(1) level 4 packed unaligned dcl 5-11 ref 111 allow_command 23 based bit(1) level 4 packed unaligned dcl 5-11 ref 108 arg_count 16 based fixed bin(17,0) level 3 dcl 5-11 set ref 101* arg_list_ptr 14 based pointer level 3 dcl 5-11 set ref 99* 101* 131* auto_request_data 000106 automatic structure level 1 dcl 41 set ref 80 call_info 14 based structure level 2 dcl 5-11 cleanup 000150 stack reference condition dcl 64 ref 119 code 000100 automatic fixed bin(35,0) dcl 33 in procedure "ssu_execute_" set ref 82* 83 91 96 96* 101* 104 code 000140 automatic fixed bin(35,0) dcl 155 in procedure "report_active_function_error" set ref 157* 158 158* 161* com_af_error_info based structure level 1 dcl 7-8 cond_info 000106 automatic structure level 1 dcl 151 set ref 157 157 condition_info based structure level 1 dcl 6-14 condition_info_header based structure level 1 dcl 8-6 continue_sw 000141 automatic bit(1) dcl 43 set ref 84* 85* 86 89* cu_$af_return_arg_rel 000022 constant entry external dcl 54 ref 101 cu_$generate_call 000024 constant entry external dcl 55 ref 131 entry 10 based entry variable level 2 dcl 5-11 set ref 131* 135 errmess_lth 114 based fixed bin(21,0) level 2 dcl 153 set ref 164* errmess_ptr 112 based pointer level 2 dcl 153 set ref 164* error_table_$bad_ptr 000042 external static fixed bin(35,0) dcl 1-33 set ref 1-42* error_table_$null_info_ptr 000044 external static fixed bin(35,0) dcl 1-34 set ref 1-48* error_table_$unimplemented_version 000046 external static fixed bin(35,0) dcl 1-35 set ref 1-56* executing_request 32(02) based bit(1) level 4 packed unaligned dcl 4-14 set ref 117 122* 126* 139* find_condition_info_ 000026 constant entry external dcl 56 ref 157 flags 32 based structure level 3 in structure "sci" dcl 4-14 in procedure "ssu_execute_" flags 23 based structure level 2 in structure "request_data" dcl 5-11 in procedure "ssu_execute_" full_name based char(32) level 2 packed unaligned dcl 5-11 set ref 108* 111* global_info 4 based structure level 2 dcl 4-14 info_ptr 14 000106 automatic pointer level 2 in structure "cond_info" dcl 151 in procedure "report_active_function_error" set ref 161 164 164 info_ptr 24 based pointer level 3 in structure "sci" dcl 4-14 in procedure "ssu_execute_" set ref 85* 89* 135* iox_$error_output 000010 external static pointer dcl 45 set ref 164* iox_$put_chars 000030 constant entry external dcl 58 ref 164 its based structure level 1 dcl 2-5 its_mod 0(30) based bit(6) level 2 packed unaligned dcl 2-5 ref 1-41 multics_request 23(03) based bit(1) level 4 packed unaligned dcl 5-11 ref 128 null builtin function dcl 66 in procedure "ssu_execute_" ref 157 161 null builtin function dcl 1-39 in procedure "ssu_check_sci" ref 1-42 1-42 1-47 1-48 1-48 1-56 1-56 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 request_data based structure level 1 dcl 5-11 request_data_ptr 52 based pointer level 3 in structure "sci" dcl 4-14 in procedure "ssu_execute_" set ref 116 121* 125* 138* request_data_ptr 000160 automatic pointer dcl 5-27 in procedure "ssu_execute_" set ref 80* 82* 99 101 101 101 101 104 106 108 108 108 111 111 111 125 128 131 131 135 request_flags based structure level 1 dcl 5-32 request_processor_info 42 based structure level 2 dcl 4-14 rv_lth 22 based fixed bin(21,0) level 3 dcl 5-11 set ref 101* rv_ptr 20 based pointer level 3 dcl 5-11 set ref 101* saved_executing_request 000104 automatic bit(1) dcl 39 set ref 117* 122 139 saved_request_data_ptr 000102 automatic pointer dcl 38 set ref 116* 121 138 sci based structure level 1 dcl 4-14 sci_ptr 000156 automatic pointer dcl 4-94 set ref 78* 82* 85* 85 89* 89 96* 108* 111* 116 117 121 122 125 126 135* 135 138 139 158* 161* 166* ssu_$abort_line 000032 constant entry external dcl 59 ref 96 108 111 158 161 166 ssu_$locate_request 000034 constant entry external dcl 60 ref 82 ssu_$unknown_request 000036 constant entry external dcl 61 ref 85 ssu_et_$active_function_error 000012 external static fixed bin(35,0) dcl 47 set ref 166* ssu_et_$not_af_request 000016 external static fixed bin(35,0) dcl 47 set ref 111* ssu_et_$not_command_request 000014 external static fixed bin(35,0) dcl 47 set ref 108* ssu_et_$unknown_request 000020 external static fixed bin(35,0) dcl 47 ref 83 ssu_misc_procs_$unknown_request 000040 constant entry external dcl 62 ref 89 sub_err_ 000050 constant entry external dcl 1-37 ref 1-42 1-48 1-56 system_flags 23 based structure level 3 packed unaligned dcl 5-11 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 unaligned dcl 2-56 com_af_error_info_ptr automatic pointer dcl 7-7 com_af_error_info_version_3 internal static fixed bin(17,0) initial dcl 7-17 condition_info_header_ptr automatic pointer dcl 8-4 condition_info_ptr automatic pointer dcl 6-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 6-30 ioa_$ioa_switch 000000 constant entry external dcl 57 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 length builtin function dcl 66 request_info_string based char unaligned dcl 5-57 request_info_string_lth automatic fixed bin(21,0) dcl 5-58 request_info_string_ptr automatic pointer dcl 5-59 request_name_list based structure level 1 dcl 5-47 request_name_list_n_names automatic fixed bin(17,0) dcl 5-52 request_name_list_ptr automatic pointer dcl 5-51 sci_parent_area based area(1024) dcl 4-96 substr builtin function dcl 66 in procedure "ssu_execute_" substr builtin function dcl 1-39 in procedure "ssu_check_sci" NAMES DECLARED BY EXPLICIT CONTEXT. RESIGNAL_BAD_POINTER 000726 constant label dcl 1-42 set ref 1-44 RESIGNAL_BAD_VERSION 001060 constant label dcl 1-56 set ref 1-59 RESIGNAL_NULL_POINTER 001006 constant label dcl 1-48 ref 1-50 execute_request 000077 constant entry external dcl 73 report_active_function_error 000562 constant entry internal dcl 148 ref 129 ssu_check_sci 000720 constant entry internal dcl 1-26 ref 76 ssu_execute_ 000064 constant entry external dcl 17 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1412 1464 1135 1422 Length 2046 1135 52 346 254 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ssu_execute_ 206 external procedure is an external procedure. on unit on line 119 64 on unit on unit on line 129 136 on unit report_active_function_error internal procedure shares stack frame of on unit on line 129. ssu_check_sci internal procedure shares stack frame of external procedure ssu_execute_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME on unit on line 129 000106 cond_info report_active_function_error 000140 code report_active_function_error ssu_execute_ 000100 code ssu_execute_ 000102 saved_request_data_ptr ssu_execute_ 000104 saved_executing_request ssu_execute_ 000106 auto_request_data ssu_execute_ 000141 continue_sw ssu_execute_ 000156 sci_ptr ssu_execute_ 000160 request_data_ptr ssu_execute_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var call_ext_out_desc call_ext_out return_mac enable_op ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$af_return_arg_rel cu_$generate_call find_condition_info_ iox_$put_chars ssu_$abort_line ssu_$locate_request ssu_$unknown_request ssu_misc_procs_$unknown_request sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_ptr error_table_$null_info_ptr error_table_$unimplemented_version iox_$error_output ssu_et_$active_function_error ssu_et_$not_af_request ssu_et_$not_command_request ssu_et_$unknown_request LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000063 20 000071 73 000072 76 000112 78 000121 80 000125 82 000127 83 000154 84 000160 85 000161 86 000212 89 000220 91 000252 93 000255 96 000256 99 000310 101 000315 104 000334 106 000342 108 000344 111 000400 114 000435 116 000437 117 000442 119 000447 121 000463 122 000470 123 000476 125 000477 126 000502 128 000504 129 000507 131 000525 132 000537 133 000540 135 000541 138 000551 139 000554 141 000561 148 000562 157 000563 158 000602 161 000631 164 000662 166 000701 169 000717 1 26 000720 1 41 000722 1 42 000726 1 44 001001 1 47 001002 1 48 001006 1 50 001050 1 53 001051 1 56 001060 1 59 001134 ----------------------------------------------------------- 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