COMPILATION LISTING OF SEGMENT dm_dmn_system_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 0830.8 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This module is used by the caretaker Daemon of a Data Management 10* System (DMS) to do the various steps of DMS shutdown in the Daemon's 11* login ring. There are currently four entries: $schedule, $begin, 12* $bump_users, and $unset_shutdown_timers. A fifth entry for logging out 13* the Daemon is logically a part of DMS shutdown as we will set the DMS 14* state to normal shutdown if the DMS is not in use; it is not here because 15* of its more general nature. 16* 17* $schedule: The Daemon has received the system_shutdown_scheduled_ 18* IPS or a shutdown request over one of its ipc_ channels. In the 19* system_shutdown_scheduled_ IPS case, it calculates the times the shutdown 20* steps would occur, puts these times in dm_system_data_, and sets the 21* reason for shutdown to be "Multics shutting down @ {time}". If the 22* operator or administrative interfaces send the shutdown request, the 23* times and reason are taken from the saved_shutdown* values in 24* dm_system_data_. 25* 26* If shutdown has begun (see next entry), the new scheduling is 27* ignored and a log entry is made. A set of utility programs is used to 28* mediate between administratively set values and default system values; 29* this prevents the accidental setting of a shutdown past a Multics 30* shutdown. Administratively set times earlier than times generated from 31* the Multics down time are NEVER ignored. If a DMS shutdown has already 32* been scheduled, but not begun, then the timers the daemon set up to do 33* the remaining steps are cancelled and new ones set up. 34* 35* Three alarm call timers are set up: (1) when to begin shutdown, (2) 36* when to bump users who did not execute DM user shutdown, and (3) when to 37* force logout the Daemon even if shutdown has not totally completed. 38* After the above is done, we start sending the dm_shutdown_scheduled_ IPS 39* to all current users of the DMS. 40* 41* $begin_shutdown: this entry sets the DMS state to "shutdown begun" 42* and prevents new transactions from starting. When this step completes, 43* no new user of the DMS will complete per-process initialization. 44* 45* $bump_users: this entry will bump all users still active in the 46* DMS. 47* 48* After $bump_users has run, we will wait for the last timer to go 49* off, adjusting the dead processes that roll in. If after adjusting a 50* daemon process, no users of the DMS (except the caretaker Daemon) exist, 51* the sytem state is set to normal shutdown and the Daemon logs out without 52* waiting for the logout timer. 53* 54* $unset_shutdown_timers: this entry gets rid of all timers that may 55* have been set. 56**/ 57 58 /* HISTORY: 59* 60*Written by Lindsey L. Spratt, 04/06/84. 61*Modified: 62*07/26/84 by Lee A. Newcomb: renamed from dm_shutdown_ to 63* dm_dmn_system_shutdown_ to highlight this program's use by a DMS' 64* caretaker Daemon and not users (for the user interface, see 65* transaction_manager_$user_shutdown). Also changed all entries 66* except $bump_users to do the work they are supposed to. Removed 67* the $normal_shutdown entry as it is taken care of by 68* dmsd_overseer_$daemon_logout. 69*09/20/84 by Lee A. Newcomb: Changed to use the new shutdown_info processing 70* methodology, set appropriate timers if a shutdown was really 71* scheduled (not cancelled), and use the new entry 72* transaction_manager_$ips_wakeup_all. 73*10/28/84 by Lee A. Newcomb: renamed $begin to $begin_shutdown to match TV 74* call. 75*12/05/84 by R. Michael Tague: changed dmsd_overseer_$daemon_logout to 76* dmsd_util_$logout. 77*12/06/84 by R. Michael Tague: changed dmsd_util_$* to dm_daemon_util_$*, 78* added $unset_shutdown_timers, and transaction_manager_$bump_all. 79*12/10/84 by Lindsey Spratt: Changed to catch the timer_manager_err condition 80* when resetting the alarm calls (in $unset_shutdown_timers). This 81* condition is raised if the timer was never set. 82*12/11/84 by Lee A. Newcomb: Fixed to send the dm_shutdown_scheduled_ IPS, 83* not dm_shutdown_warning_. 84*03/20/85 by Steve Herbst: Changed to log all the schedule times. 85*03/28/85 by Lindsey Spratt: Fixed to use dm_misc_util_ and dm_daemon_util_ 86* to get the shutdown times instead of referencing dm_system_data_ 87* directly. 88*04/11/85 by Lee A. Newcomb: To log fact no shutdown was scheduled if shutdown 89* times where not set instead of converting a zero time and 90* reporting it. 91* Added the reason for shutdown to the logged information and added 92* new-lines to improve readability. 93**/ 94 95 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 96 97 dm_dmn_system_shutdown_$schedule: 98 proc (); 99 100 /* START OF DECLARATIONS */ 101 /* Parameter */ 102 /* Automatic */ 103 dcl ( 104 begin_shutdown_time_str char (32) init (""), 105 daemon_logout_time_str char (32) init (""), 106 1 local_shutdown_info aligned like shutdown_info, 107 next_reset_label label variable, 108 saved_ips_mask bit (36) aligned init ("0"b), 109 shutdown_reason char (64) init (""), 110 system_state char (4) aligned init (""), 111 user_bump_time_str char (32) init (""), 112 user_shutdown_time_str char (32) init (""), 113 user_warning_time_str char (32) init ("") 114 ) automatic; 115 116 /* Based */ 117 /* Builtin */ 118 dcl (addr, null, unspec) builtin; 119 120 /* Condition */ 121 dcl (cleanup, timer_manager_err) condition; 122 123 /* Constant */ 124 /* Entry */ 125 dcl ( 126 date_time_ entry (fixed bin (71), char (*)), 127 dm_daemon_util_$begin_shutdown entry (), 128 dm_daemon_util_$bump_users entry (), 129 dm_daemon_util_$get_daemon_logout_time 130 entry () returns (fixed bin (71)), 131 dm_daemon_util_$get_user_bump_time entry () returns (fixed bin (71)), 132 dm_daemon_util_$set_shutdown_info entry (ptr), 133 dm_daemon_util_$set_system_state entry (char (4) aligned), 134 dm_daemon_util_$unset_shutdown_timers 135 entry (), 136 dm_misc_util_$get_begin_shutdown_time 137 entry () returns (fixed bin (71)), 138 dm_misc_util_$get_shutdown_reason entry () returns (char (64)), 139 dm_misc_util_$get_shutdown_warning_time 140 entry () returns (fixed bin (71)), 141 dm_misc_util_$get_system_state entry returns (char (4) aligned), 142 dm_misc_util_$get_user_shutdown_time 143 entry () returns (fixed bin (71)), 144 dm_daemon_util_$log entry () options (variable), 145 dm_daemon_util_$logout entry (), 146 hcs_$reset_ips_mask entry (bit (36) aligned, 147 bit (36) aligned), 148 hcs_$set_ips_mask entry (bit (36) aligned, 149 bit (36) aligned), 150 timer_manager_$alarm_call entry (fixed bin (71), bit (2), entry), 151 timer_manager_$reset_alarm_call entry (entry), 152 transaction_manager_$begins_off entry (), 153 transaction_manager_$bump_all entry (), 154 transaction_manager_$dm_system_in_use 155 entry returns (bit (1) aligned), 156 transaction_manager_$ips_wakeup_all 157 entry (char (*), bit (1) aligned) 158 ); 159 160 /* External */ 161 162 /* END OF DECLARATIONS */ 163 164 /* dm_dmn_system_shutdown_$schedule: */ 165 /* proc (); */ 166 167 /* We have received either the system_shutdown_scheduled_ IPS or a */ 168 /* "shutdown" IPC message from the operator or an administrator. */ 169 170 on cleanup call FINISH (); 171 call hcs_$set_ips_mask ("0"b, saved_ips_mask); 172 173 /* Must make sure shutdown has not started. Any currently set timers */ 174 /* for shutdown are ignored as we have masked all IPS', including the */ 175 /* alrm IPS. We don't want to have a shutdown being scheduled and */ 176 /* interrupted part way through; otherwise some of the following */ 177 /* might not get done, or done inconsistently. */ 178 179 system_state = dm_misc_util_$get_system_state (); 180 if system_state = DM_SYSTEM_STATE_NORMAL_SHUTDOWN then 181 ALREADY_SHUTDOWN: 182 do; 183 call dm_daemon_util_$log (INFORM_SV, 184 "DMS is completely shutdown; ignored attempt to shut it down again.") 185 ; 186 call RETURN (); 187 end ALREADY_SHUTDOWN; 188 else if system_state = DM_SYSTEM_STATE_SHUTDOWN_BEGUN 189 | system_state = DM_SYSTEM_STATE_SHUTDOWN_BUMP_USERS then 190 SHUTDOWN_IN_PROGRESS: 191 do; 192 call dm_daemon_util_$log (INFORM_SV, 193 "DMS has started shutdown (state ^a), attempt to reschedule shutdown ignored.", 194 system_state); 195 call RETURN (); 196 end SHUTDOWN_IN_PROGRESS; 197 else if system_state ^= DM_SYSTEM_STATE_RUNNING then 198 CANT_SHUTDOWN_NON_RUNNING_SYSTEM: 199 do; 200 call dm_daemon_util_$log (INFORM_SV, 201 "DMS is not running (state ^a), attempt to schedule shutdown ignored.", 202 system_state); 203 call RETURN (); 204 end CANT_SHUTDOWN_NON_RUNNING_SYSTEM; 205 else 206 SCHEDULE_NEW_SHUTDOWN: 207 do; 208 209 /* We must get the most up-to-date shutdown info in dm_system_data_, */ 210 /* either by using the administratively set values or the implicit */ 211 /* values calculated from the Multics down time. */ 212 213 unspec (local_shutdown_info) = ""b; 214 local_shutdown_info.version = SHUTDOWN_INFO_VERSION_1;/* call will use sub_err_ if error found */ 215 call dm_daemon_util_$set_shutdown_info (addr (local_shutdown_info)); 216 217 call dm_daemon_util_$unset_shutdown_timers (); 218 219 if ^local_shutdown_info.no_time_specified then 220 SET_NEW_ALARM_TIMERS: 221 do; 222 223 /* there is a scheduled shutdown the Daemon should do something about */ 224 /* at various times. */ 225 226 call timer_manager_$alarm_call (local_shutdown_info 227 .begin_shutdown_time, "00"b /* abs. usec. */, 228 dm_daemon_util_$begin_shutdown); 229 call timer_manager_$alarm_call (local_shutdown_info.user_bump_time, 230 "00"b /* abs. usec. */, dm_daemon_util_$bump_users); 231 call timer_manager_$alarm_call (local_shutdown_info 232 .daemon_logout_time, "00"b /* abs. usec. */, 233 dm_daemon_util_$logout); 234 235 LOG_SHUTDOWN_INFO: 236 do; 237 call date_time_ (dm_misc_util_$get_shutdown_warning_time (), 238 user_warning_time_str); 239 call date_time_ (dm_misc_util_$get_begin_shutdown_time (), 240 begin_shutdown_time_str); 241 call date_time_ (dm_misc_util_$get_user_shutdown_time (), 242 user_shutdown_time_str); 243 call date_time_ (dm_daemon_util_$get_user_bump_time (), 244 user_bump_time_str); 245 call date_time_ (dm_daemon_util_$get_daemon_logout_time (), 246 daemon_logout_time_str); 247 shutdown_reason = dm_misc_util_$get_shutdown_reason (); 248 249 call dm_daemon_util_$log (INFORM_SV, 250 "DMS shutdown scheduled:^/Reason: ^a^/User warning at ^a,^/begin shutdown at ^a,^/user shutdown at ^a,^/users bumped at ^a,^/Daemon logout at ^a.", 251 shutdown_reason, user_warning_time_str, 252 begin_shutdown_time_str, user_shutdown_time_str, 253 user_bump_time_str, daemon_logout_time_str); 254 end LOG_SHUTDOWN_INFO; 255 256 end SET_NEW_ALARM_TIMERS; 257 else 258 LOG_NO_SHUTDOWN_SCHEDULED: 259 call dm_daemon_util_$log (INFORM_SV, 260 "DMS shutdown not scheduled due to no scheduled Multics shutdown or administrative action." 261 ); 262 263 /* Now we send the dm_shutdown_scheduled_ IPS to all current users of */ 264 /* the DMS we are taking care of (unless one of our timers goes off). */ 265 /* We do not optimize the case of the shutdown times not being */ 266 /* changed (see dm_set_shutdown_info.pl1 for more commentary). */ 267 268 SEND_DSS_IPS: 269 do; 270 call transaction_manager_$ips_wakeup_all ("dm_shutdown_scheduled_", 271 ("0"b) /* don't care if DMS in use */); 272 end SEND_DSS_IPS; 273 274 /* continue on and wait for next timer */ 275 276 end SCHEDULE_NEW_SHUTDOWN; 277 278 call RETURN (); 279 280 /* end dm_dmn_system_shutdown_$scheduled; */ 281 282 dm_dmn_system_shutdown_$begin_shutdown: 283 entry (); 284 285 /* The begin shutdown timer has gone off. Prevent new transactions */ 286 /* and users and update system state. */ 287 288 on cleanup call FINISH (); 289 call hcs_$set_ips_mask ("0"b, saved_ips_mask); 290 291 call dm_daemon_util_$set_system_state (DM_SYSTEM_STATE_SHUTDOWN_BEGUN); 292 call transaction_manager_$begins_off (); 293 294 call RETURN (); 295 296 /* end dm_dmn_system_shutdown_$begin_shutdown; */ 297 298 dm_dmn_system_shutdown_$bump_users: 299 entry (); 300 301 call dm_daemon_util_$set_system_state (DM_SYSTEM_STATE_SHUTDOWN_BUMP_USERS); 302 303 /* If the DMS is not being used, the mark the state as finished and */ 304 /* logout the DM daemon; the logout call will not return. */ 305 306 if ^transaction_manager_$dm_system_in_use () then 307 call dm_daemon_util_$logout (); /* goodbye */ 308 309 call transaction_manager_$bump_all (); 310 311 /* Now wait for logout timer. At this point, all we should have to */ 312 /* do is cleanup dead processes/transactions. */ 313 314 call RETURN (); 315 316 /* end dm_dmn_system_shutdown_$bump_users */ 317 318 dm_dmn_system_shutdown_$unset_shutdown_timers: 319 entry (); 320 321 on timer_manager_err goto next_reset_label; 322 323 next_reset_label = BUMP_USERS_RESET; 324 call timer_manager_$reset_alarm_call (dm_daemon_util_$begin_shutdown); 325 BUMP_USERS_RESET: 326 next_reset_label = LOGOUT_RESET; 327 call timer_manager_$reset_alarm_call (dm_daemon_util_$bump_users); 328 LOGOUT_RESET: 329 next_reset_label = DONE_RESETTING; 330 call timer_manager_$reset_alarm_call (dm_daemon_util_$logout); 331 DONE_RESETTING: 332 call RETURN (); /* end dm_dmn_system_shutdown_$unset_shutdown_timers */ 333 334 MAIN_RETURN: 335 return; 336 337 FINISH: /* doubles as cleanup handler */ 338 proc (); 339 340 /* reset the IPS mask if it is set. */ 341 if saved_ips_mask ^= "0"b then 342 call hcs_$reset_ips_mask (saved_ips_mask, saved_ips_mask); 343 344 end FINISH; 345 346 RETURN: 347 proc (); 348 349 call FINISH (); 350 goto MAIN_RETURN; 351 352 end RETURN; 353 1 1 /* ***** BEGIN INCLUDE FILE dm_shutdown_spec.incl.pl1 ***** */ 1 2 1 3 /* DESCRIPTION: 1 4* 1 5* Contains the shutdown_spec structure and the shutdown_info 1 6* structure. The shutdown_spec structure a reason for a DM 1 7* shutdown, a set of times and a set of delays. Only times and 1 8* delays which explicitly specified are set, the others are equal to 1 9* 0. 1 10* 1 11* The shutdown_spec is processed with the result being a 1 12* shutdown_info structure. It contains a reason and a set of times. 1 13* The times are either those times specified in the shutdown_spec or 1 14* times calculated from those times using delays. The delays are 1 15* those specified in the shutdown_spec, or, if not specified, 1 16* default delays. Default delays are kept in dm_system_data. 1 17**/ 1 18 1 19 /* HISTORY: 1 20*Written by Matthew Pierret, 09/06/84. 1 21*Modified: 1 22**/ 1 23 1 24 /* format: style2,ind3 */ 1 25 dcl 1 shutdown_spec aligned based (shutdown_spec_ptr), 1 26 2 version char (8) aligned, 1 27 2 reason char (64), 1 28 2 times, 1 29 3 user_warning_time 1 30 fixed bin (71), 1 31 3 begin_shutdown_time 1 32 fixed bin (71), 1 33 3 user_shutdown_time 1 34 fixed bin (71), 1 35 3 user_bump_time fixed bin (71), 1 36 3 daemon_logout_time 1 37 fixed bin (71), 1 38 2 delays, 1 39 3 begin_shutdown_delay 1 40 fixed bin (71), 1 41 3 user_shutdown_delay 1 42 fixed bin (71), 1 43 3 user_bump_delay fixed bin (71), 1 44 3 daemon_logout_delay 1 45 fixed bin (71); 1 46 1 47 dcl shutdown_spec_ptr ptr; 1 48 dcl SHUTDOWN_SPEC_VERSION_1 1 49 init ("ShutSp 1") char (8) aligned internal static options (constant); 1 50 1 51 dcl 1 shutdown_info aligned based (shutdown_info_ptr), 1 52 2 version char (8) aligned, 1 53 2 reason char (64), 1 54 2 times like shutdown_spec.times, 1 55 2 output_flags aligned, 1 56 3 no_time_specified 1 57 bit (1) unal, 1 58 3 times_have_changed 1 59 bit (1) unal, 1 60 3 mbz bit (34) unal; 1 61 1 62 dcl shutdown_info_ptr ptr init (null ()); 1 63 dcl SHUTDOWN_INFO_VERSION_1 1 64 init ("ShutIn 1") char (8) aligned internal static options (constant); 1 65 1 66 /* ******* END INCLUDE FILE dm_shutdown_spec.incl.pl1 ***** */ 354 355 2 1 /* BEGIN INCLUDE FILE - dm_system_states.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* This include file gives all defined values that 2 6* dm_system_data_$current_dm_state may have. 2 7**/ 2 8 2 9 /* HISTORY: 2 10*Written by Lee A. Newcomb, CISL, 11/04/82 2 11*Modified: 2 12*03/02/84 by Lee A. Newcomb: added DM_SYSTEM_STATE_SHUTDOWN_WARNING and 2 13* DM_SYSTEM_STATE_USER_SHUTDOWN; also renamed from dm_statuses to 2 14* dm_system_states.incl.pl1. 2 15*04/06/84 by Lindsey Spratt: Added DM_SYSTEM_STATE_SYSTEM_SHUTDOWN. 2 16*09/05/84 by Lee A. Newcomb: renamed DM_SYSTEM_STATE_SHUTDOWN_WARNING do 2 17* ...SHUTDOWN_BEGUN and ...SYSTEM_SHUTDOWN to 2 18* ...SHUTDOWN_BUMP_USERS; deleted ...USER_SHUTDOWN. 2 19**/ 2 20 /* format: style2,^inddcls,linecom,ifthendo,ifthen,^indnoniterdo,dclind5,idind35 */ 2 21 2 22 dcl ( /* valid statuses of data management */ 2 23 /* ordered to expected sequence of use */ 2 24 DM_SYSTEM_STATE_UNDEFINED init ("undf"), /* found in a template dm_system_data_ */ 2 25 DM_SYSTEM_STATE_INITIALIZING init ("init"), 2 26 DM_SYSTEM_STATE_RECOVERING init ("rcov"), 2 27 DM_SYSTEM_STATE_RUNNING init ("run "), 2 28 DM_SYSTEM_STATE_SHUTDOWN_BEGUN init ("sbgn"), 2 29 DM_SYSTEM_STATE_SHUTDOWN_BUMP_USERS 2 30 init ("sbmp"), 2 31 DM_SYSTEM_STATE_NORMAL_SHUTDOWN init ("shut") 2 32 ) char (4) aligned int static options (constant); 2 33 2 34 /* END INCLUDE FILE - dm_system_states.incl.pl1 */ 356 357 3 1 /* BEGIN INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 3 2 3 3 /* format: ^indcom */ 3 4 3 5 /* DESCRIPTION: 3 6* These are the severity codes used by the dms daemon when calling its logger. 3 7* The severity is ranked thusly: 3 8* 3 9* severity log write situation 3 10* -------- --- ----- --------- 3 11* 0 no yes standard output, query, etc. 3 12* 1 yes yes fatal error, terminate dms daemon. 3 13* 2 yes yes nonfatal error. 3 14* 3 yes yes informative message. 3 15* 4 yes no log information only. 3 16**/ 3 17 3 18 /* HISTORY: 3 19* 3 20*Written by M. Pandolf, 10/06/82. 3 21*Modified: 3 22*12/10/84 by R. Michael Tague: Rename and reformat description/history. 3 23*01/13/85 by Lee A. Newcomb: Renamed to dm_log_sv_codes from 3 24* dm_daemon_sv_codes as the severity codes for the DM log are not 3 25* restrained to the DM Daemon's use. 3 26*01/24/85 by Lee A. Newcomb: Fixed to say dm_log_sv_codes.incl.pl1 in the 3 27* BEGIN and END INCLUDE comments, instead of dm_daemon_sv_codes.==. 3 28**/ 3 29 3 30 /* format: style5 */ 3 31 3 32 dcl (PRINT_SV, QUERY_SV) fixed bin internal static 3 33 options (constant) init (0); 3 34 dcl (CRASH_SV, FATAL_SV) fixed bin internal static 3 35 options (constant) init (1); 3 36 dcl ERROR_SV fixed bin internal static 3 37 options (constant) init (2); 3 38 dcl INFORM_SV fixed bin internal static 3 39 options (constant) init (3); 3 40 dcl LOG_SV fixed bin internal static 3 41 options (constant) init (4); 3 42 3 43 /* END INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 358 359 360 361 end dm_dmn_system_shutdown_$schedule; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/85 0802.8 dm_dmn_system_shutdown_.pl1 >spec>on>41-21>dm_dmn_system_shutdown_.pl1 354 1 01/07/85 0859.8 dm_shutdown_spec.incl.pl1 >ldd>include>dm_shutdown_spec.incl.pl1 356 2 01/07/85 0900.0 dm_system_states.incl.pl1 >ldd>include>dm_system_states.incl.pl1 358 3 03/06/85 1031.1 dm_log_sv_codes.incl.pl1 >ldd>include>dm_log_sv_codes.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. DM_SYSTEM_STATE_NORMAL_SHUTDOWN 000001 constant char(4) initial dcl 2-22 ref 180 DM_SYSTEM_STATE_RUNNING 000004 constant char(4) initial dcl 2-22 ref 197 DM_SYSTEM_STATE_SHUTDOWN_BEGUN 000003 constant char(4) initial dcl 2-22 set ref 188 291* DM_SYSTEM_STATE_SHUTDOWN_BUMP_USERS 000002 constant char(4) initial dcl 2-22 set ref 188 301* INFORM_SV 000000 constant fixed bin(17,0) initial dcl 3-38 set ref 183* 192* 200* 249* 257* SHUTDOWN_INFO_VERSION_1 000006 constant char(8) initial dcl 1-63 ref 214 addr builtin function dcl 118 ref 215 215 begin_shutdown_time 24 000120 automatic fixed bin(71,0) level 3 dcl 103 set ref 226* begin_shutdown_time_str 000100 automatic char(32) initial unaligned dcl 103 set ref 103* 239* 249* cleanup 000234 stack reference condition dcl 121 ref 170 288 daemon_logout_time 32 000120 automatic fixed bin(71,0) level 3 dcl 103 set ref 231* daemon_logout_time_str 000110 automatic char(32) initial unaligned dcl 103 set ref 103* 245* 249* date_time_ 000010 constant entry external dcl 125 ref 237 239 241 243 245 dm_daemon_util_$begin_shutdown 000012 constant entry external dcl 125 ref 226 226 324 324 dm_daemon_util_$bump_users 000014 constant entry external dcl 125 ref 229 229 327 327 dm_daemon_util_$get_daemon_logout_time 000016 constant entry external dcl 125 ref 245 245 dm_daemon_util_$get_user_bump_time 000020 constant entry external dcl 125 ref 243 243 dm_daemon_util_$log 000042 constant entry external dcl 125 ref 183 192 200 249 257 dm_daemon_util_$logout 000044 constant entry external dcl 125 ref 231 231 306 330 330 dm_daemon_util_$set_shutdown_info 000022 constant entry external dcl 125 ref 215 dm_daemon_util_$set_system_state 000024 constant entry external dcl 125 ref 291 301 dm_daemon_util_$unset_shutdown_timers 000026 constant entry external dcl 125 ref 217 dm_misc_util_$get_begin_shutdown_time 000030 constant entry external dcl 125 ref 239 239 dm_misc_util_$get_shutdown_reason 000032 constant entry external dcl 125 ref 247 dm_misc_util_$get_shutdown_warning_time 000034 constant entry external dcl 125 ref 237 237 dm_misc_util_$get_system_state 000036 constant entry external dcl 125 ref 179 dm_misc_util_$get_user_shutdown_time 000040 constant entry external dcl 125 ref 241 241 hcs_$reset_ips_mask 000046 constant entry external dcl 125 ref 341 hcs_$set_ips_mask 000050 constant entry external dcl 125 ref 171 289 local_shutdown_info 000120 automatic structure level 1 dcl 103 set ref 213* 215 215 next_reset_label 000156 automatic label variable dcl 103 set ref 321 323* 325* 328* no_time_specified 34 000120 automatic bit(1) level 3 packed unaligned dcl 103 set ref 219 null builtin function dcl 118 ref 1-62 output_flags 34 000120 automatic structure level 2 dcl 103 saved_ips_mask 000162 automatic bit(36) initial dcl 103 set ref 103* 171* 289* 341 341* 341* shutdown_info based structure level 1 dcl 1-51 shutdown_info_ptr 000250 automatic pointer initial dcl 1-62 set ref 1-62* shutdown_reason 000163 automatic char(64) initial unaligned dcl 103 set ref 103* 247* 249* shutdown_spec based structure level 1 dcl 1-25 system_state 000203 automatic char(4) initial dcl 103 set ref 103* 179* 180 188 188 192* 197 200* timer_manager_$alarm_call 000052 constant entry external dcl 125 ref 226 229 231 timer_manager_$reset_alarm_call 000054 constant entry external dcl 125 ref 324 327 330 timer_manager_err 000242 stack reference condition dcl 121 ref 321 times 22 based structure level 2 in structure "shutdown_spec" dcl 1-25 in procedure "dm_dmn_system_shutdown_$schedule" times 22 000120 automatic structure level 2 in structure "local_shutdown_info" dcl 103 in procedure "dm_dmn_system_shutdown_$schedule" transaction_manager_$begins_off 000056 constant entry external dcl 125 ref 292 transaction_manager_$bump_all 000060 constant entry external dcl 125 ref 309 transaction_manager_$dm_system_in_use 000062 constant entry external dcl 125 ref 306 transaction_manager_$ips_wakeup_all 000064 constant entry external dcl 125 ref 270 unspec builtin function dcl 118 set ref 213* user_bump_time 30 000120 automatic fixed bin(71,0) level 3 dcl 103 set ref 229* user_bump_time_str 000204 automatic char(32) initial unaligned dcl 103 set ref 103* 243* 249* user_shutdown_time_str 000214 automatic char(32) initial unaligned dcl 103 set ref 103* 241* 249* user_warning_time_str 000224 automatic char(32) initial unaligned dcl 103 set ref 103* 237* 249* version 000120 automatic char(8) level 2 dcl 103 set ref 214* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CRASH_SV internal static fixed bin(17,0) initial dcl 3-34 DM_SYSTEM_STATE_INITIALIZING internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_RECOVERING internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_UNDEFINED internal static char(4) initial dcl 2-22 ERROR_SV internal static fixed bin(17,0) initial dcl 3-36 FATAL_SV internal static fixed bin(17,0) initial dcl 3-34 LOG_SV internal static fixed bin(17,0) initial dcl 3-40 PRINT_SV internal static fixed bin(17,0) initial dcl 3-32 QUERY_SV internal static fixed bin(17,0) initial dcl 3-32 SHUTDOWN_SPEC_VERSION_1 internal static char(8) initial dcl 1-48 shutdown_spec_ptr automatic pointer dcl 1-47 NAMES DECLARED BY EXPLICIT CONTEXT. ALREADY_SHUTDOWN 000335 constant label dcl 180 BUMP_USERS_RESET 001230 constant label dcl 325 ref 323 CANT_SHUTDOWN_NON_RUNNING_SYSTEM 000413 constant label dcl 197 DONE_RESETTING 001264 constant label dcl 331 ref 328 FINISH 001267 constant entry internal dcl 337 ref 170 288 349 LOGOUT_RESET 001246 constant label dcl 328 ref 325 LOG_NO_SHUTDOWN_SCHEDULED 000772 constant label dcl 257 LOG_SHUTDOWN_INFO 000552 constant label dcl 235 MAIN_RETURN 001265 constant label dcl 334 ref 350 RETURN 001307 constant entry internal dcl 346 ref 186 195 203 278 294 314 331 SCHEDULE_NEW_SHUTDOWN 000441 constant label dcl 205 SEND_DSS_IPS 001012 constant label dcl 268 SET_NEW_ALARM_TIMERS 000467 constant label dcl 219 SHUTDOWN_IN_PROGRESS 000363 constant label dcl 188 dm_dmn_system_shutdown_$begin_shutdown 001037 constant entry external dcl 282 dm_dmn_system_shutdown_$bump_users 001121 constant entry external dcl 298 dm_dmn_system_shutdown_$schedule 000260 constant entry external dcl 97 dm_dmn_system_shutdown_$unset_shutdown_timers 001165 constant entry external dcl 318 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1776 2064 1320 2006 Length 2400 1320 66 277 455 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dm_dmn_system_shutdown_$schedule 304 external procedure is an external procedure. on unit on line 170 64 on unit on unit on line 288 64 on unit on unit on line 321 64 on unit FINISH 70 internal procedure is called by several nonquick procedures. RETURN internal procedure shares stack frame of external procedure dm_dmn_system_shutdown_$sched STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dm_dmn_system_shutdown_$schedule 000100 begin_shutdown_time_str dm_dmn_system_shutdown_$schedule 000110 daemon_logout_time_str dm_dmn_system_shutdown_$schedule 000120 local_shutdown_info dm_dmn_system_shutdown_$schedule 000156 next_reset_label dm_dmn_system_shutdown_$schedule 000162 saved_ips_mask dm_dmn_system_shutdown_$schedule 000163 shutdown_reason dm_dmn_system_shutdown_$schedule 000203 system_state dm_dmn_system_shutdown_$schedule 000204 user_bump_time_str dm_dmn_system_shutdown_$schedule 000214 user_shutdown_time_str dm_dmn_system_shutdown_$schedule 000224 user_warning_time_str dm_dmn_system_shutdown_$schedule 000250 shutdown_info_ptr dm_dmn_system_shutdown_$schedule THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return tra_label_var enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. date_time_ dm_daemon_util_$begin_shutdown dm_daemon_util_$bump_users dm_daemon_util_$get_daemon_logout_time dm_daemon_util_$get_user_bump_time dm_daemon_util_$log dm_daemon_util_$logout dm_daemon_util_$set_shutdown_info dm_daemon_util_$set_system_state dm_daemon_util_$unset_shutdown_timers dm_misc_util_$get_begin_shutdown_time dm_misc_util_$get_shutdown_reason dm_misc_util_$get_shutdown_warning_time dm_misc_util_$get_system_state dm_misc_util_$get_user_shutdown_time hcs_$reset_ips_mask hcs_$set_ips_mask timer_manager_$alarm_call timer_manager_$reset_alarm_call transaction_manager_$begins_off transaction_manager_$bump_all transaction_manager_$dm_system_in_use transaction_manager_$ips_wakeup_all NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 103 000226 1 62 000253 97 000257 170 000266 171 000310 179 000323 180 000332 183 000335 186 000355 187 000356 188 000357 192 000363 195 000407 196 000410 197 000411 200 000413 203 000437 204 000440 213 000441 214 000444 215 000446 217 000457 219 000464 226 000467 229 000510 231 000531 237 000552 239 000576 241 000622 243 000646 245 000672 247 000716 249 000725 256 000771 257 000772 270 001012 278 001034 282 001035 288 001045 289 001067 291 001102 292 001111 294 001116 298 001117 301 001127 306 001136 309 001155 314 001162 318 001163 321 001173 323 001212 324 001215 325 001230 327 001233 328 001246 330 001251 331 001264 334 001265 337 001266 341 001274 344 001306 346 001307 349 001310 350 001314 ----------------------------------------------------------- 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