1 /* ***********************************************************
  2    *                                                         *
  3    * Copyright, (C) Honeywell Information Systems Inc., 1983 *
  4    *                                                         *
  5    *********************************************************** */
  6 
  7 
  8 
  9 /* HISTORY COMMENTS:
 10   1) change(86-02-12,Pierret), approve(86-03-03,MCR7331),
 11      audit(86-04-28,Newcomb), install(86-05-06,MR12.0-1054):
 12      Changed to version 5.8.
 13   2) change(86-03-03,Pierret), approve(86-03-03,MCR7349),
 14      audit(86-04-28,Newcomb), install(86-05-06,MR12.0-1054):
 15      Changed to version 5.9.
 16                                                    END HISTORY COMMENTS */
 17 
 18 
 19 /*  DESCRIPTION:
 20 
 21           Per-System Data Management Segment (actually, per-AIM authorization).
 22 */
 23 
 24 /*  HISTORY:
 25 
 26 Written by J. Bongiovanni, 08/15/82.
 27 Modified:
 28 08/17/82 by M. Pandolf:  to add before journal and transaction manager
 29             global variables.
 30 09/14/82 by M. Pandolf:  to add data management daemon event information.
 31 08/04/82 by M. Pandolf:  to add timeout increment and default before
 32             journal size.
 33 10/18/82 by Lee A. Newcomb:  to add flag recovering_from_crash_sw.
 34 11/10/82 by Lee A. Newcomb:  to change recovering_from_crash_sw to
 35             current_dm_state (see dm_statuses.incl.pl1).
 36 11/18/82 by J. Bongiovanni:  to add lock items.
 37 12/22/82 by M. Pandolf:  to add log_lock.
 38 03/15/83 by M. Pandolf:  to add initializer_name.
 39 03/21/83 by M. Pandolf:  to add trace_stack_mode.
 40 03/23/83 by M. Pandolf:  to add initializer_shutdown_delay,
 41             default_bj_dirname, and default_bj_filename.
 42 03/28/83 by M. Pandolf:  to change default_bj_(dir file)name to
 43             bj_default_(dir file)name; and add log_proc_term.
 44 06/08/83 by L. A. Newcomb: to add command_ms_name for talking to the Daemon.
 45 11/04/83 by M. Pandolf: to clarify setting of default before journal names.
 46 03/05/84 by Lee A. Newcomb:  changed to use the include file dm_system_states
 47             (renamed from dm_statuses), and to use the new names therein.
 48 06/12/84 by Lindsey Spratt: Changed initializer_shutdown_delay to be fixed bin
 49             (71).  Removed the trace_stack_mode.
 50 08/01/84 by Lee A. Newcomb:  added shutdown delay and time values and
 51             default all the shutdown delays to five minutes.
 52 09/05/84 by Lee A. Newcomb:  added the times for "user warning" and "begin
 53             shutdown" shutdown steps, and begin_shutdown_delay; renamed
 54             initializer_shutdown_(delay time) to be user_shutdown_= for better
 55             understanding, and added the saved shutdown time and reason cells
 56             that are set by an operator or administrator.
 57 10/18/84 by Stanford S. Cox: added lock_list_meters_rel & meter_fast_locks.
 58 11/05/84 by Lindsey Spratt:  Renamed the module dm_system_data_template_ from
 59             dm_system_data_.  This makes the per-system initialization
 60             simpler, since only the system data segment in the per-bootload
 61             dir has the name dm_system_data_, and the library system data
 62             segment is always known as dm_system_data_template_.
 63 01/08/85 by Steve Herbst: Deleted $log_lock.
 64 01/25/85 by Lindsey Spratt:  Added $system_software_version, 1.0.
 65 02/15/85 by Lindsey Spratt:  Changed $system_software_version to "1.1 dev" for
 66             dev version of DM system.  Corresponding bound_dev version is
 67             "1.1".
 68 02/24/85 by Lindsey Spratt:  Re-added  $system_software_version, which was
 69             backed out in the most recent installation of this module (back to
 70             the modifications journalized by Herbst on 01/08/85).  The current
 71             value of the version is "1.3 dev".  Also, removed the unused
 72             DM_LOG_NAME constant.
 73 02/27/85 by Lindsey Spratt: Changed $system_software_version to "2.1 dev".
 74 03/19/85 by Lindsey Spratt: Changed version to "3.1 dev".
 75 03/25/85 by Lindsey Spratt: Changed version to "4.2 dev".
 76 03/26/85 by Lindsey Spratt: Changed version to "4.3 dev".
 77 03/27/85 by Lindsey Spratt: Changed version to "4.4 dev".
 78 03/28/85 by Lindsey Spratt: Changed version to "4.5 dev".
 79 03/29/85 by Lindsey Spratt: Changed version to "4.6 dev".
 80 04/01/85 by S. Cox: Changed to set on $meter_fast_locks.
 81 04/04/85 by Lee A. Newcomb:  Fixed to set the default system BJ size to 4000
 82             CI's as approved, not 192.
 83 04/12/85 by Lindsey Spratt: Changed version to "5.0".
 84 04/12/85 by Lindsey Spratt: Changed version to "5.1".  This version has the
 85             change to fm_put_.
 86 04/18/85 by Lindsey Spratt: Changed version to "5.2".  This version includes:
 87             fixes to fast_lock metering so that the meters are actually
 88             incremented, and to the fast_lock metering and status commands;
 89             pnotices for the dm_display_version and dm_set_free_area modules;
 90             fixes to transaction_manager_ user shutdown to turn off the
 91             shutdown timers; a fix to the file_manager_ to correctly
 92             report via $suffix_info that max_length, dumper_switches and
 93             safety_switch are not supported; and, a fix to dm file creation to
 94             get the correct IACLs and to ignore the "e" access in the IACLs
 95             (if any).
 96 04/19/85 by Lindsey Spratt:  Changed version to "5.3".  This version has a fix
 97             to im_basic_search to fix some problems with relative searches.
 98 05/03/85 by Lindsey Spratt:  Changed version to "5.4".  This version has fixes
 99             to the sys_pn_tbl management (in the file_manager_); fixes to
100             bjm_rollback, fixes to the handling of rollback handlers for
101             delete and create of DM files; adds dm_relation_status to the
102             tools; and, retains dm_vector_util_.
103 05/07/85 by Lindsey Spratt:  Changed version to "5.5".  This version has fixes
104             to file_manager_ to remove pages of a deleted DM file from the
105             "modified pages" list kept by the file_manager_.
106 05/15/85 by Lindsey Spratt:  Changed version to "5.6".  This version includes
107             the changes to use a dm_journal_seg_ which has ring brackets of
108             0,0,0 (it was readable (and read) in ring 2).
109 05/16/85 by Lindsey Spratt:  Changed version to "5.7".  This version includes
110             the change to tm_per_process_init_ to not init the dm_journal_seg_.
111 */
112 /* format: style2,^inddcls,linecom,ifthendo,ifthen,^indnoniterdo,dclind5,idind35 */
113 %page;
114 dm_system_data_template_:
115      proc ();
116 
117 /* START OF DECLARATIONS */
118 
119 /*  Automatic  */
120 
121 dcl  code                               fixed bin (35);
122 dcl  1 local_cds_args                   aligned like cds_args;
123 
124 dcl  1 system_data                      aligned,            /* dm_system_data_template_$... */
125        2 system_software_version        char (8) aligned,
126        2 bootload_time                  fixed bin (71),     /* Time of system bootload */
127        2 initialization_time            fixed bin (71),     /* Time this data was initialized */
128        2 initializer_event_chn          fixed bin (71),     /* channel for telling management process things */
129        2 initialized                    bit (1) aligned,    /* ON => data has been initialized */
130        2 initializer_processid          bit (36) aligned,   /* Process ID who initialized */
131        2 initializer_name               char (32) aligned,  /* Person.Project who initialized */
132        2 initializer_wakeup_increment   fixed bin,          /* time in MINUTES that daemon waits for request */
133        2 max_n_transactions             fixed bin,          /* Number of entries in various transaction tables */
134        2 bj_max_n_journals              fixed bin,          /* Number of before journals per system */
135        2 bj_max_n_processes             fixed bin,          /* Number of process to use before journals */
136        2 bj_default_journal_size        fixed bin,          /* size in control intervals of before */
137                                                             /* journal made by daemon for system */
138        2 area_rel                       bit (18) aligned,   /* Offset of area  */
139        2 fast_lock_data_rel             bit (18) aligned,   /* Offset of fast_lock_data */
140        2 lock_ips_mask                  bit (36) aligned,   /* IPS Mask to allow  QUIT, CPUT, ALRM */
141        2 tm_tdt_relp                    bit (18) aligned,
142        2 bj_txt_relp                    bit (18) aligned,
143        2 lock_list_meters_rel           bit (18) aligned,   /* offset of lock_list_meters */
144        2 meter_fast_locks               bit (1) aligned,
145        2 log_proc_terms                 bit (1) aligned,
146        2 bj_default_dirname             char (168) aligned,
147        2 bj_default_filename            char (32) aligned,
148        2 current_dm_state               char (4) aligned,   /* SHUTDOWN INFORMATION: step delays, step times, and reason.
149 The delays are between each step of shutdown and they all default
150 to five minutes.  The times are absolute times for each shutdown
151 step and are set by the caretaker Daemon when it recieves the
152 system_shutdown_scheduled_ IPS or a request from the
153 operator/administrator interface.  The saved_* shutdown values
154 are set by the latter interface; if the Daemon has to choose
155 between the shutdown times in the saved values and the defaults
156 that are applied when a Multics shutdown is scheduled, the set of
157 times with the earliest user bump time is used.  There is
158 currently no requirement that the times must be in ascending
159 order; e.g., "user shutdown" can occur before "user warning",
160 etc.
161 */
162        2 (                                                  /* delay between ... */
163        begin_shutdown_delay,                                /* user warning and begin shutdown */
164        user_shutdown_delay,                                 /* begin shutdown and user shutdown */
165        user_bump_delay,                                     /* user shutdown and bumping users */
166        daemon_logout_delay,                                 /* bumping users and force Daemon logout */
167                                                             /* when to... */
168        user_warning_time,                                   /* ...have user processes signal dm_shutdown_warning_ */
169        begin_shutdown_time,                                 /* ...stop new transactions */
170        user_shutdown_time,                                  /* ...have user processes signal dm_user_shutdown_ */
171        user_bump_time,                                      /* ...bump users */
172        daemon_logout_time,                                  /* ...force Daemon logout */
173                                                             /* operator/admin specified times */
174        saved_user_warning_time,                             /* ...have user processes signal dm_shutdown_warning_ */
175        saved_begin_shutdown_time,                           /* ...stop new transactions */
176        saved_user_shutdown_time,                            /* ...have user processes signal dm_user_shutdown_ */
177        saved_user_bump_time,                                /* ...bump users */
178        saved_daemon_logout_time                             /* ...force Daemon logout */
179        )                                fixed bin (71),
180        2 (                                                  /* why, oh why must we leave? */
181        shutdown_reason,
182        saved_shutdown_reason
183        )                                char (64) aligned,
184        2 command_ms_name                char (32);          /* name in per-AIM dir of msg seg for talking to Daemon */
185 
186 /* Constant */
187 dcl  (
188      EXCLUDE_ARRAY                      (1) char (32) init ("pad*"),
189      MYNAME                             char (24) init ("dm_system_data_template_")
190      )                                  int static options (constant);
191 
192 /*  Entry  */
193 dcl  com_err_                           entry options (variable),
194      create_data_segment_               entry (ptr, fixed bin (35));
195 
196 /*  Builtin  */
197 dcl  (addr, hbound, null, size, unspec) builtin;
198 %page;
199           unspec (system_data) = ""b;
200 
201           system_data.system_software_version = "5.9";
202           system_data.initializer_wakeup_increment = 15;
203           system_data.begin_shutdown_delay,                 /* default shutdown delays are five minutes */
204                system_data.user_shutdown_delay, system_data.user_bump_delay, system_data.daemon_logout_delay =
205                5 * 60 * (10 ** 6);
206           system_data.shutdown_reason, system_data.saved_shutdown_reason = "NO REASON FOR SHUTDOWN GIVEN";
207           system_data.bj_max_n_journals = 20;
208           system_data.bj_max_n_processes = 256;
209           system_data.bj_default_journal_size = 4000;
210           system_data.max_n_transactions = 128;
211           system_data.current_dm_state = DM_SYSTEM_STATE_UNDEFINED;
212           system_data.meter_fast_locks = "1"b;
213 
214 /*
215    NOTE:  the pathname of the journal used by processes in lieu of an
216    explicitly chosen one (this pathname being known as the "default path")
217    is set at DM bootload time by the procedure "dm_load_configuration_".
218 */
219 
220           system_data.bj_default_dirname = "";
221           system_data.bj_default_filename = "";
222 
223           unspec (local_cds_args) = ""b;
224 
225           local_cds_args.sections (1).p = addr (system_data);
226           local_cds_args.sections (1).len = size (system_data);
227           local_cds_args.sections (1).struct_name = "system_data";
228           local_cds_args.seg_name = MYNAME;
229           local_cds_args.exclude_array_ptr = addr (EXCLUDE_ARRAY);
230           local_cds_args.num_exclude_names = hbound (EXCLUDE_ARRAY, 1);
231           local_cds_args.switches.have_text = "1"b;
232 
233           call create_data_segment_ (addr (local_cds_args), code);
234           if code ^= 0 then
235                call com_err_ (code, MYNAME);
236 
237           return;
238 
239 /* end dm_system_data_template_; */
240 %page;
241 %include cds_args;
242 %page;
243 %include dm_system_states;
244 
245 
246      end dm_system_data_template_;