COMPILATION LISTING OF SEGMENT as_any_other_handler_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/28/84 1141.1 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 as_any_other_handler_: 7 procedure (P_caller, P_cleanup_proc, P_cleanup_label, P_error_label); 8 9 /* * AS_ANY_OTHER_HANDLER_ 10* * 11* * This procedure is used to handle unexpected conditions in the 12* * Answering Service. It is designed to be called as follows: 13* * 14* * on condition (any_other) 15* * call as_any_other_handler_ ("name-of-calling-procedure", 16* * cleanup_procedure_for_owning_procedure, 17* * exit_label_for_exit_after_cleanup, 18* * exit_label_for_exit_without_cleanup); 19* * 20* * It was abstracted from syserr_log_man_ in order to keep that 21* * procedure a little simpler. 22* * 23* * Modification history: 24* * 84-10-15, W. Olin Sibert: Moved from syserr_log_man_ 25* */ 26 27 declare P_caller char (*) parameter; 28 declare P_cleanup_proc entry () parameter; 29 declare P_cleanup_label label parameter; 30 declare P_error_label label parameter; 31 32 declare code fixed bin (35); 33 declare call_cleanup_procedure bit (1); 34 declare continue_sw bit (1); 35 declare non_local_exit bit (1); 36 37 declare 1 cond_info aligned like condition_info automatic; 38 39 declare as_check_condition_ entry (char (*), bit (1), bit (1)); 40 declare as_dump_ entry (char (*)); 41 declare continue_to_signal_ entry (fixed bin (35)); 42 declare find_condition_info_ entry (pointer, pointer, fixed bin (35)); 43 declare sys_log_ entry options (variable); 44 declare sys_log_$error_log entry options (variable); 45 46 declare WHOAMI char (32) internal static options (constant) init ("as_any_other_handler_"); 47 declare SYS_LOG_TYPE fixed bin internal static options (constant) init (1); 48 49 declare any_other condition; 50 51 declare (addr, null) builtin; 52 53 /* */ 54 55 call_cleanup_procedure = "1"b; 56 goto HANDLER_COMMON; 57 58 59 60 as_any_other_handler_$no_cleanup: 61 entry (P_caller, P_error_label); 62 63 call_cleanup_procedure = "0"b; 64 65 66 HANDLER_COMMON: 67 on condition (any_other) /* Not a thing that can be done */ 68 goto P_error_label; 69 70 cond_info.version = condition_info_version_1; 71 call find_condition_info_ (null (), addr (cond_info), code); 72 if (code ^= 0) then do; 73 call sys_log_$error_log (SYS_LOG_TYPE, code, WHOAMI, 74 "Cannot get condition information."); 75 goto P_error_label; 76 end; 77 78 call as_check_condition_ ((cond_info.condition_name), continue_sw, non_local_exit); 79 if continue_sw then do; /* ONLY way to "return" from this procedure */ 80 call continue_to_signal_ ((0)); 81 return; 82 end; 83 84 call sys_log_ (SYS_LOG_TYPE, "^a: Condition ^a signalled.", 85 P_caller, cond_info.condition_name); 86 87 call as_dump_ (P_caller); 88 89 if ^call_cleanup_procedure then /* None supplied by caller */ 90 goto P_error_label; 91 92 else if non_local_exit then do; 93 call P_cleanup_proc (); 94 goto P_cleanup_label; 95 end; 96 97 else goto P_error_label; 98 99 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 1 2 1 3 /* Structure for find_condition_info_. 1 4* 1 5* Written 1-Mar-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 /* automatic */ 1 9 1 10 declare condition_info_ptr pointer; 1 11 1 12 /* based */ 1 13 1 14 declare 1 condition_info aligned based (condition_info_ptr), 1 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 condition_name char (32) varying, /* name of condition */ 1 18 2 info_ptr pointer, /* pointer to the condition data structure */ 1 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 1 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 1 21 2 flags unaligned, 1 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 1 23 3 pad1 bit (35), 1 24 2 pad2 bit (36), 1 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 1 26 2 pad3 (4) bit (36); 1 27 1 28 /* internal static */ 1 29 1 30 declare condition_info_version_1 1 31 fixed binary internal static options (constant) initial (1); 1 32 1 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 99 100 101 end as_any_other_handler_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/28/84 1141.1 as_any_other_handler_.pl1 >special_ldd>online>41-0>as_any_other_handler_.pl1 99 1 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. P_caller parameter char unaligned dcl 27 set ref 6 60 84* 87* P_cleanup_label parameter label variable dcl 29 ref 6 94 P_cleanup_proc parameter entry variable dcl 28 ref 6 93 P_error_label parameter label variable dcl 30 ref 6 60 66 75 89 92 SYS_LOG_TYPE 000023 constant fixed bin(17,0) initial dcl 47 set ref 73* 84* WHOAMI 000000 constant char(32) initial unaligned dcl 46 set ref 73* addr builtin function dcl 51 ref 71 71 any_other 000136 stack reference condition dcl 49 ref 66 as_check_condition_ 000010 constant entry external dcl 39 ref 78 as_dump_ 000012 constant entry external dcl 40 ref 87 call_cleanup_procedure 000101 automatic bit(1) unaligned dcl 33 set ref 55* 63* 89 code 000100 automatic fixed bin(35,0) dcl 32 set ref 71* 72 73* cond_info 000104 automatic structure level 1 dcl 37 set ref 71 71 condition_info based structure level 1 dcl 1-14 condition_info_version_1 constant fixed bin(17,0) initial dcl 1-30 ref 70 condition_name 3 000104 automatic varying char(32) level 2 dcl 37 set ref 78 84* continue_sw 000102 automatic bit(1) unaligned dcl 34 set ref 78* 79 continue_to_signal_ 000014 constant entry external dcl 41 ref 80 find_condition_info_ 000016 constant entry external dcl 42 ref 71 non_local_exit 000103 automatic bit(1) unaligned dcl 35 set ref 78* 92 null builtin function dcl 51 ref 71 71 sys_log_ 000020 constant entry external dcl 43 ref 84 sys_log_$error_log 000022 constant entry external dcl 44 ref 73 version 2 000104 automatic fixed bin(17,0) level 2 dcl 37 set ref 70* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. condition_info_ptr automatic pointer dcl 1-10 NAMES DECLARED BY EXPLICIT CONTEXT. HANDLER_COMMON 000122 constant label dcl 66 ref 56 as_any_other_handler_ 000056 constant entry external dcl 6 as_any_other_handler_$no_cleanup 000103 constant entry external dcl 60 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 504 530 351 514 Length 732 351 24 166 132 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME as_any_other_handler_ 144 external procedure is an external procedure. on unit on line 66 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME as_any_other_handler_ 000100 code as_any_other_handler_ 000101 call_cleanup_procedure as_any_other_handler_ 000102 continue_sw as_any_other_handler_ 000103 non_local_exit as_any_other_handler_ 000104 cond_info as_any_other_handler_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_var call_ext_out_desc call_ext_out return tra_label_var enable shorten_stack ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. as_check_condition_ as_dump_ continue_to_signal_ find_condition_info_ sys_log_ sys_log_$error_log NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000051 55 000074 56 000076 60 000077 63 000121 66 000122 70 000141 71 000143 72 000162 73 000164 75 000214 78 000216 79 000246 80 000252 81 000262 84 000263 87 000315 89 000330 92 000334 93 000341 94 000346 ----------------------------------------------------------- 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