COMPILATION LISTING OF SEGMENT dm_signal_user_shutdown Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/24/85 0832.7 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This program, dm_signal_user_shutdown, is the target of an alarm 10* call channel set up by the handler for the dm_shutdown_scheduled_ IPS. 11* It builds the dm_user_shutdown_info condition info structure, calls 12* signal_ so the user process may handle the condition, outputs a warning 13* user shutdown is in progress on the error_output I/O switch, and then 14* calls transaction_manager_$user_shutdown to actually do the per-process 15* shutdown. If a transaction was acted upon in any way, the user is 16* informed (again on the error_output switch). Care must be taken by the 17* software to not invoke per-process initialization in the process of 18* shutdown. It is possible for a user process to have shutdown before the 19* alarm goes off, in which case we just return. 20**/ 21 22 /* HISTORY: 23* 24*Written by Lee A. Newcomb, 11/15/83. 25*Modified: 26*04/19/84 by Lee A. Newcomb: upgraded from prototype version. 27*05/10/84 by Lee A. Newcomb: to use dm_tm_shutdown_info.incl.pl1 properly. 28*07/16/84 by R. Michael Tague: Changed the call dm_util_$using_dm to 29* call dm_misc_util_$dm_is_process_using_dm. 30*08/17/84 by Lee A. Newcomb: Replaced dm_per_system_$... calls with calls to 31* the dm_misc_util_$ TV. 32*09/19/84 by Lee A. Newcomb: Renamed from dm_user_shut_handler_ and made to 33* understand user settable flags upon return from the signal_ call. 34*10/29/84 by Lee A. Newcomb: Fixed to not use dm_ prefix on 35* dm_misc_util_$is_process_using_dm. 36*02/21/85 by Lee A. Newcomb: Fixed to reset the IPS mask before signalling. 37*03/11/85 by Lindsey L. Spratt: Reformatted the shutdown message. Changed to 38* use ioa_$ioa_switch instead of $ioa_stream, changed to put the 39* message out on user_io instead of error_output. 40*04/08/85 by Lee A. Newcomb: Fixed to use the maxlength builtin instead of the 41* constant 256 when filling in the condition_info.info_string 42**/ 43 44 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo */ 45 /* format: ^inddcls,dclind5,idind35,linecom */ 46 47 dm_signal_user_shutdown: 48 proc (); 49 50 /* START OF DECLARATIONS */ 51 52 /* Automatic */ 53 dcl ( 54 code fixed bin (35) init (0), 55 1 local_dm_user_shutdown_info aligned like dm_user_shutdown_info, 56 saved_ips_mask bit (36) aligned init ("0"b), 57 tm_shutdown_info_idx fixed bin 58 ) automatic; 59 60 /* Builtin */ 61 dcl (addr, bin, length, maxlength, min, null, rtrim, size, unspec) 62 builtin; 63 64 /* Condition */ 65 dcl (cleanup, ioa_error) condition; 66 67 /* Constant */ 68 dcl ( 69 ALLOW_NO_INTERRUPTIONS_MASK bit (36) aligned init (""b), 70 myname char (32) varying 71 init ("dm_signal_user_shutdown") 72 ) internal static options (constant); 73 74 /* Entry */ 75 dcl ( 76 dm_misc_util_$is_process_using_dm entry () returns (bit (1) aligned), 77 dm_misc_util_$get_shutdown_reason entry returns (char (64)), 78 get_system_free_area_ entry () returns (ptr), 79 hcs_$reset_ips_mask entry (bit (36) aligned, 80 bit (36) aligned), 81 hcs_$set_ips_mask entry (bit (36) aligned, 82 bit (36) aligned), 83 ioa_$ioa_switch entry () options (variable), 84 signal_ entry () options (variable), 85 sub_err_ entry () options (variable), 86 transaction_manager_$user_shutdown entry (ptr, ptr, fixed bin (35)) 87 ); 88 89 /* External */ 90 91 dcl iox_$user_io ptr ext static; 92 dcl ( 93 error_table_$unimplemented_version fixed bin (35) 94 ) ext; 95 96 /* END OF DECLARATIONS */ 97 98 /* Mask IPS' while getting shutdown info so user can't do */ 99 /* user shutdown by breaking and calling dm_user_shutdown; */ 100 /* causing us to take an error if a start is done. We will */ 101 /* reset the mask before signalling, however. */ 102 103 on cleanup call CLEAN_UP (); 104 call hcs_$set_ips_mask (ALLOW_NO_INTERRUPTIONS_MASK, saved_ips_mask); 105 106 /* Is the process still using DM? If not, our job is done. */ 107 108 if dm_misc_util_$is_process_using_dm () then 109 SIGNAL_USER_SHUTDOWN: 110 do; 111 112 /* We fill in the dm_user_shutdown_info condition info structure. */ 113 114 unspec (local_dm_user_shutdown_info) = ""b; /* clear flags and all */ 115 local_dm_user_shutdown_info.header.length = 116 size (local_dm_user_shutdown_info); /* nothing like self-definition */ 117 local_dm_user_shutdown_info.header.version = 118 DM_USER_SHUTDOWN_INFO_VERSION_1; 119 local_dm_user_shutdown_info.header.quiet_restart = "1"b; 120 /* turn quiet_restart on */ 121 122 /* now the DM part of the condition info. */ 123 local_dm_user_shutdown_info.reason = 124 dm_misc_util_$get_shutdown_reason (); 125 126 call hcs_$reset_ips_mask (saved_ips_mask, saved_ips_mask); 127 /* user may interrupt now */ 128 129 /* fill in the info_string for our convenience, or a user's that */ 130 /* handles the condition without returning to here. */ 131 132 local_dm_user_shutdown_info.header.info_string = 133 " The Data Management system is shutting down; starting DM user shutdown. 134 Shutdown reason: 135 " 136 ; 137 local_dm_user_shutdown_info.header.info_string = 138 local_dm_user_shutdown_info.header.info_string 139 || 140 substr (local_dm_user_shutdown_info.reason, 1, 141 min (length (rtrim (local_dm_user_shutdown_info.reason)), 142 maxlength (local_dm_user_shutdown_info.header.info_string) 143 - length (local_dm_user_shutdown_info.header.info_string))); 144 145 /* NOW signal the shutdown warning to the user with the above info. */ 146 147 call signal_ ("dm_user_shutdown_", null (), 148 addr (local_dm_user_shutdown_info), null ()); 149 150 /* To get to this point, the user must have either (1) not handled */ 151 /* the condition we signalled, or (2) handled it, but used */ 152 /* continue_to_signal_ to return control here. In either case, check */ 153 /* if the user wishes to call transaction_manager_$user_shutdown */ 154 /* and/or recieve any warning messages. If the user process is not */ 155 /* shutdown as far as DM is concerned, the process will get bumped by */ 156 /* the Daemon later in DMS shutdown. */ 157 /* We do not mask IPS' again, but try to not call shutdown if the */ 158 /* has already done DM shutdown. The window is very small, and the */ 159 /* worst that can happen is tm_$user_shutdown gets called and does */ 160 /* nothing, and the user sees some messages on the error_output I/O */ 161 /* switch which don't mean much. */ 162 163 if ^local_dm_user_shutdown_info.flags.dont_do_user_shutdown 164 & dm_misc_util_$is_process_using_dm () then 165 DO_USER_SHUTDOWN: 166 do; 167 168 if ^local_dm_user_shutdown_info.flags.dont_print_warning then do; 169 on ioa_error go to IGNORE_USER_SHUTDOWN_WARNING; 170 call ioa_$ioa_switch (iox_$user_io, 171 local_dm_user_shutdown_info.info_string); 172 IGNORE_USER_SHUTDOWN_WARNING: 173 end; 174 175 call transaction_manager_$user_shutdown (get_system_free_area_ (), 176 tm_shutdown_info_ptr, code); 177 178 if ^local_dm_user_shutdown_info.dont_print_warning then 179 OUTPUT_USER_SHUTDOWN_RESULTS: 180 do; 181 182 if tm_shutdown_info_ptr ^= null () then 183 OUTPUT_TM_USER_SHUTDOWN_INFO: 184 do; 185 186 call CHECK_VERSION (tm_shutdown_info.version, 187 TM_SHUTDOWN_INFO_VERSION_1, "tm_shutdown_info"); 188 189 on ioa_error go to IGNORE_TM_SHUTDOWN_RESULTS_OUTPUT; 190 191 call ioa_$ioa_switch (iox_$user_io, 192 "^a:^2xAdjusted ^[no^s^;^d^] transaction^[s^].", myname, 193 (tm_shutdown_info.count = 0), tm_shutdown_info.count, 194 (tm_shutdown_info.count ^= 1)); 195 196 PER_TXN_INFO: 197 do tm_shutdown_info_idx = 1 to tm_shutdown_info.count; 198 call ioa_$ioa_switch (iox_$user_io, 199 "^5xTransaction ^d ^a^(, error code = ^d^).", 200 bin (tm_shutdown_info.txn_id (tm_shutdown_info_idx)), 201 OP_NAME (tm_shutdown_info 202 .op_completed (tm_shutdown_info_idx)), 203 (tm_shutdown_info.error_code (tm_shutdown_info_idx) 204 ^= 0), 205 tm_shutdown_info.error_code (tm_shutdown_info_idx)); 206 end PER_TXN_INFO; 207 208 end OUTPUT_TM_USER_SHUTDOWN_INFO; 209 210 if code ^= 0 then /* check code returned */ 211 call sub_err_ (code, myname, ACTION_DEFAULT_RESTART, 212 "Error occurred during DM user shutdown."); 213 214 end OUTPUT_USER_SHUTDOWN_RESULTS; 215 216 IGNORE_TM_SHUTDOWN_RESULTS_OUTPUT: 217 end DO_USER_SHUTDOWN; 218 219 end SIGNAL_USER_SHUTDOWN; 220 221 call FINISH (); 222 223 MAIN_RETURN: 224 return; 225 226 227 /* end dm_signal_user_shutdown; */ 228 229 /* FINISH and CLEAN_UP currently do the same work. */ 230 231 FINISH: 232 proc (); 233 CLEAN_UP: 234 entry (); 235 236 if tm_shutdown_info_ptr ^= null () then 237 free tm_shutdown_info; 238 if saved_ips_mask ^= ""b then 239 call hcs_$reset_ips_mask (saved_ips_mask, saved_ips_mask); 240 241 242 end FINISH; 243 244 CHECK_VERSION: 245 proc (chkvs_input_version, chkvs_expected_version, chkvs_structure_name); 246 247 dcl ( 248 chkvs_input_version char (8) aligned, 249 chkvs_expected_version char (8) aligned, 250 chkvs_structure_name char (*) 251 ) parameter; 252 253 if chkvs_input_version ^= chkvs_expected_version then 254 call sub_err_ (error_table_$unimplemented_version, myname, 255 ACTION_CANT_RESTART, "Expected version ^a of ^a, received ^a.", 256 chkvs_expected_version, chkvs_structure_name, chkvs_input_version); 257 258 return; 259 260 261 end CHECK_VERSION; 262 1 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 1 2 /* format: style2 */ 1 3 1 4 declare condition_info_header_ptr 1 5 pointer; 1 6 declare 1 condition_info_header 1 7 aligned based (condition_info_header_ptr), 1 8 2 length fixed bin, /* length in words of this structure */ 1 9 2 version fixed bin, /* version number of this structure */ 1 10 2 action_flags aligned, /* tell handler how to proceed */ 1 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 1 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 1 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 1 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 1 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 1 16 3 pad bit (32) unaligned, 1 17 2 info_string char (256) varying, /* may contain printable message */ 1 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 1 19 1 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 263 264 2 1 /* BEGIN INCLUDE FILE dm_user_shut_info.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* The following structure is used for keeping track of data 2 6* for the dm_user_shutdown_ condition. It is filled in by 2 7* dm_misc_util_$user_shutdown before calling signal_. 2 8**/ 2 9 2 10 /* HISTORY: 2 11* 2 12*Written by Lee A. Newcomb, 09/06/84. 2 13*Modified: 2 14**/ 2 15 2 16 /* format: style2,^inddcls,linecom,ifthendo,ifthen,^indnoniterdo,dclind5,idind35 */ 2 17 2 18 dcl 1 dm_user_shutdown_info aligned based (dm_user_shutdown_info_ptr), 2 19 2 header like condition_info_header, 2 20 /* version is one, */ 2 21 /* info_string is set to warning of shutdown */ 2 22 2 flags, 2 23 3 dont_print_warning bit (1) unaligned, /* if set by user, don't do any of the warnings */ 2 24 3 dont_do_user_shutdown bit (1) unaligned, /* if set by user, don't do user shutdown */ 2 25 3 mbz bit (34) unaligned, /* must be zero */ 2 26 2 reason char (64); /* why the DMS is shutting down */ 2 27 2 28 dcl dm_user_shutdown_info_ptr ptr; 2 29 2 30 dcl DM_USER_SHUTDOWN_INFO_VERSION_1 fixed bin init (1) int static options (constant); 2 31 2 32 2 33 /* END INCLUDE FILE dm_user_shut_info.incl.pl1 */ 265 266 3 1 /* BEGIN INCLUDE FILE dm_tm_shutdown_info.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* This contains the structure used to pass information from 3 6* the DM ring to the user ring about a process' transactions that 3 7* existed when the process terminated its usage of a Data 3 8* Management System. 3 9**/ 3 10 3 11 /* HISTORY: 3 12*Written by Steve Herbst, 11/22/83. 3 13*Modified: 3 14*04/27/84 by L. A. Newcomb: Renamed structure shutdown_info to 3 15* tm_shutdown_info to prevent collision with system shutdown info 3 16* structure. 3 17*05/16/84 by Steve Herbst: Added ABANDONED constant. 3 18*09/20/84 by Lee A. Newcomb: Added an abandoned entry to the OP_NAME array, 3 19* aligned the version, and init'd tm_shutdown_info_ptr to null. 3 20**/ 3 21 3 22 /* format: style4,indattr,^indcomtxt,idind33 */ 3 23 3 24 dcl 1 tm_shutdown_info aligned based (tm_shutdown_info_ptr), 3 25 2 version char (8) aligned, /* = "TMSHUT 1" */ 3 26 2 count fixed bin, 3 27 2 transaction (tm_shutdown_alloc_count refer (tm_shutdown_info.count)), 3 28 3 txn_id bit (36) aligned, 3 29 3 op_completed fixed bin, 3 30 3 state fixed bin, 3 31 3 error_code fixed bin (35); 3 32 3 33 dcl tm_shutdown_info_ptr ptr init (null ()); 3 34 dcl tm_shutdown_alloc_count fixed bin; 3 35 3 36 dcl ( /* constants */ 3 37 TM_SHUTDOWN_INFO_VERSION_1 char (8) aligned init ("TMSHUT 1"), 3 38 (ABORTED init (1), 3 39 FINISHED_ABORT init (2), 3 40 FINISHED_COMMIT init (3), 3 41 ABANDONED init (4)) fixed bin, 3 42 OP_NAME (4) char (32) init 3 43 ("Aborted", "Finished aborting", "Finished committing", "Abandoned") 3 44 ) int static options (constant); 3 45 3 46 /* END INCLUDE FILE - dm_tm_shutdown_info.incl.pl1 */ 267 268 4 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 4 2 /* format: style3 */ 4 3 4 4 /* These constants are to be used for the flags argument of sub_err_ */ 4 5 /* They are just "string (condition_info_header.action_flags)" */ 4 6 4 7 declare ( 4 8 ACTION_CAN_RESTART init (""b), 4 9 ACTION_CANT_RESTART init ("1"b), 4 10 ACTION_DEFAULT_RESTART 4 11 init ("01"b), 4 12 ACTION_QUIET_RESTART 4 13 init ("001"b), 4 14 ACTION_SUPPORT_SIGNAL 4 15 init ("0001"b) 4 16 ) bit (36) aligned internal static options (constant); 4 17 4 18 /* End include file */ 269 270 271 272 end dm_signal_user_shutdown; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/85 0803.1 dm_signal_user_shutdown.pl1 >spec>on>41-21>dm_signal_user_shutdown.pl1 263 1 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 265 2 01/07/85 0900.2 dm_user_shut_info.incl.pl1 >ldd>include>dm_user_shut_info.incl.pl1 267 3 01/07/85 0900.0 dm_tm_shutdown_info.incl.pl1 >ldd>include>dm_tm_shutdown_info.incl.pl1 269 4 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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 000074 constant bit(36) initial dcl 4-7 set ref 253* ACTION_DEFAULT_RESTART 000000 constant bit(36) initial dcl 4-7 set ref 210* ALLOW_NO_INTERRUPTIONS_MASK 000065 constant bit(36) initial dcl 68 set ref 104* DM_USER_SHUTDOWN_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 2-30 ref 117 OP_NAME 000001 constant char(32) initial array unaligned dcl 3-36 set ref 198* TM_SHUTDOWN_INFO_VERSION_1 000042 constant char(8) initial dcl 3-36 set ref 186* action_flags 2 000101 automatic structure level 3 dcl 53 addr builtin function dcl 61 ref 147 147 bin builtin function dcl 61 ref 198 198 chkvs_expected_version parameter char(8) dcl 247 set ref 244 253 253* chkvs_input_version parameter char(8) dcl 247 set ref 244 253 253* chkvs_structure_name parameter char unaligned dcl 247 set ref 244 253* cleanup 000232 stack reference condition dcl 65 ref 103 code 000100 automatic fixed bin(35,0) initial dcl 53 set ref 53* 175* 210 210* condition_info_header based structure level 1 dcl 1-6 count 2 based fixed bin(17,0) level 2 dcl 3-24 set ref 191 191* 191 196 236 dm_misc_util_$get_shutdown_reason 000012 constant entry external dcl 75 ref 123 dm_misc_util_$is_process_using_dm 000010 constant entry external dcl 75 ref 108 163 dm_user_shutdown_info based structure level 1 dcl 2-18 dont_do_user_shutdown 105(01) 000101 automatic bit(1) level 3 packed unaligned dcl 53 set ref 163 dont_print_warning 105 000101 automatic bit(1) level 3 packed unaligned dcl 53 set ref 168 178 error_code 6 based fixed bin(35,0) array level 3 dcl 3-24 set ref 198 198* error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 92 set ref 253* flags 105 000101 automatic structure level 2 dcl 53 get_system_free_area_ 000014 constant entry external dcl 75 ref 175 175 hcs_$reset_ips_mask 000016 constant entry external dcl 75 ref 126 238 hcs_$set_ips_mask 000020 constant entry external dcl 75 ref 104 header 000101 automatic structure level 2 dcl 53 info_string 3 000101 automatic varying char(256) level 3 dcl 53 set ref 132* 137* 137 137 137 170* ioa_$ioa_switch 000022 constant entry external dcl 75 ref 170 191 198 ioa_error 000240 stack reference condition dcl 65 ref 169 189 iox_$user_io 000032 external static pointer dcl 91 set ref 170* 191* 198* length 000101 automatic fixed bin(17,0) level 3 in structure "local_dm_user_shutdown_info" dcl 53 in procedure "dm_signal_user_shutdown" set ref 115* length builtin function dcl 61 in procedure "dm_signal_user_shutdown" ref 137 137 local_dm_user_shutdown_info 000101 automatic structure level 1 dcl 53 set ref 114* 115 147 147 maxlength builtin function dcl 61 ref 137 min builtin function dcl 61 ref 137 myname 000044 constant varying char(32) initial dcl 68 set ref 191* 210* 253* null builtin function dcl 61 ref 147 147 147 147 182 3-33 236 op_completed 4 based fixed bin(17,0) array level 3 dcl 3-24 ref 198 quiet_restart 2(02) 000101 automatic bit(1) level 4 packed unaligned dcl 53 set ref 119* reason 106 000101 automatic char(64) level 2 dcl 53 set ref 123* 137 137 rtrim builtin function dcl 61 ref 137 saved_ips_mask 000227 automatic bit(36) initial dcl 53 set ref 53* 104* 126* 126* 238 238* 238* signal_ 000024 constant entry external dcl 75 ref 147 size builtin function dcl 61 ref 115 sub_err_ 000026 constant entry external dcl 75 ref 210 253 tm_shutdown_info based structure level 1 dcl 3-24 set ref 236 tm_shutdown_info_idx 000230 automatic fixed bin(17,0) dcl 53 set ref 196* 198 198 198 198 198* tm_shutdown_info_ptr 000246 automatic pointer initial dcl 3-33 set ref 175* 182 186 191 191 191 196 198 198 198 198 198 3-33* 236 236 transaction 3 based structure array level 2 dcl 3-24 transaction_manager_$user_shutdown 000030 constant entry external dcl 75 ref 175 txn_id 3 based bit(36) array level 3 dcl 3-24 ref 198 198 unspec builtin function dcl 61 set ref 114* version based char(8) level 2 in structure "tm_shutdown_info" dcl 3-24 in procedure "dm_signal_user_shutdown" set ref 186* version 1 000101 automatic fixed bin(17,0) level 3 in structure "local_dm_user_shutdown_info" dcl 53 in procedure "dm_signal_user_shutdown" set ref 117* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABANDONED internal static fixed bin(17,0) initial dcl 3-36 ABORTED internal static fixed bin(17,0) initial dcl 3-36 ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 4-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 4-7 FINISHED_ABORT internal static fixed bin(17,0) initial dcl 3-36 FINISHED_COMMIT internal static fixed bin(17,0) initial dcl 3-36 condition_info_header_ptr automatic pointer dcl 1-4 dm_user_shutdown_info_ptr automatic pointer dcl 2-28 tm_shutdown_alloc_count automatic fixed bin(17,0) dcl 3-34 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 001047 constant entry internal dcl 244 ref 186 CLEAN_UP 001013 constant entry internal dcl 233 ref 103 DO_USER_SHUTDOWN 000451 constant label dcl 163 FINISH 001004 constant entry internal dcl 231 ref 221 IGNORE_TM_SHUTDOWN_RESULTS_OUTPUT 000776 constant label dcl 216 ref 189 IGNORE_USER_SHUTDOWN_WARNING 000510 constant label dcl 172 ref 169 MAIN_RETURN 001002 constant label dcl 223 OUTPUT_TM_USER_SHUTDOWN_INFO 000541 constant label dcl 182 OUTPUT_USER_SHUTDOWN_RESULTS 000535 constant label dcl 178 PER_TXN_INFO 000653 constant label dcl 196 SIGNAL_USER_SHUTDOWN 000304 constant label dcl 108 dm_signal_user_shutdown 000226 constant entry external dcl 47 NAME DECLARED BY CONTEXT OR IMPLICATION. substr builtin function ref 137 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1364 1422 1136 1374 Length 1714 1136 36 256 225 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dm_signal_user_shutdown 292 external procedure is an external procedure. on unit on line 103 64 on unit on unit on line 169 64 on unit on unit on line 189 64 on unit FINISH 70 internal procedure is called by several nonquick procedures. CHECK_VERSION internal procedure shares stack frame of external procedure dm_signal_user_shutdown. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dm_signal_user_shutdown 000100 code dm_signal_user_shutdown 000101 local_dm_user_shutdown_info dm_signal_user_shutdown 000227 saved_ips_mask dm_signal_user_shutdown 000230 tm_shutdown_info_idx dm_signal_user_shutdown 000246 tm_shutdown_info_ptr dm_signal_user_shutdown THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext enable ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_misc_util_$get_shutdown_reason dm_misc_util_$is_process_using_dm get_system_free_area_ hcs_$reset_ips_mask hcs_$set_ips_mask ioa_$ioa_switch signal_ sub_err_ transaction_manager_$user_shutdown THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version iox_$user_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 47 000225 53 000233 3 33 000235 103 000237 104 000261 108 000272 114 000304 115 000307 117 000311 119 000313 123 000315 126 000327 132 000337 137 000344 147 000376 163 000431 168 000451 169 000454 170 000473 175 000510 178 000532 182 000535 186 000541 189 000566 191 000605 196 000653 198 000663 206 000742 210 000744 221 000776 223 001002 231 001003 233 001011 236 001020 238 001033 242 001046 244 001047 253 001060 258 001135 ----------------------------------------------------------- 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