COMPILATION LISTING OF SEGMENT dm_initializer_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/05/85 0848.6 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This implements dm_daemon_util_$initialize_system. 10* 11* Per-System Initializer for Data Management (actually, per-AIM 12* authorization). This program is called through a privileged gate once 13* per bootload for each AIM authorization for which Data Management is 14* enabled. It does the following (but the work is done elsewhere): 15* 16* 1. Initializes a per-system directory for this bootload. 17* 18* 2. Calls various initialization programs. If any return an error, 19* it gives up. 20* 21* 3. Enables Data Management. 22**/ 23 24 /* HISTORY: 25* 26*Written by J. Bongiovanni, 08/01/82. 27*Modified: 28*08/17/82 by M. Pandolf: to add transaction manager initialization. 29*09/16/82 by M. Pandolf: to add p_init_str_ptr to parameter list and to 30* initialize dm_system_data_$initializer_event_chn. 31*11/11/82 by L. A. Newcomb: to add call to dm_per_system_$recovery. 32*05/17/83 by L. A. Newcomb: Fixed up calls to the various initializing 33* programs to match the modifications to them for the per-AIM 34* control files. Adoption of an orphaned, but running DMS is now 35* handled. p_code was removed from dm_initializer entry sequence. 36*07/25/83 by M. Pandolf: eliminated terminate_segno entrypoint. 37*10/19/83 by Lindsey L. Spratt: Fixed to always do a dm_common_init_ (to force 38* per-process initialization), per-process initialization wasn't 39* being done in the case where a running DM system was being taken 40* over. 41*03/05/84 by Lee A. Newcomb: to use the include file dm_system_states 42* (renamed from dm_statuses), and the renamed values therein. 43*09/29/84 by Lee A. Newcomb: added call to schedule DMS shutdown after 44* enabling the DMS and fixed error msg for part 1 BJM init to 45* include "part 1" in it, and addressed audit comments. 46*11/26/84 by Matthew Pierret: Changed to call 47* transaction_manager_$per_process_init instead of 48* the obsolete dm_common_init_. 49*12/04/84 by Lee A. Newcomb: Removed obsolete parameter from call to 50* dm_per_system_$enable; added use of (ERROR MAIN)_RETURN mechanism; 51* and some minor restructuring. 52*12/05/84 by Stanford S. Cox: Added 'dm' prefix to init_from_hardcore_. 53*12/11/84 by Lee A. Newcomb: Changed to send system_shutdown_scheduled_ IPS to 54* Daemon instead of trying to setup DM shutdown here because we 55* should schedule in the login ring, not the DM ring. 56*12/13/84 by R. Michael Tague: Changed name of dm_system_init_str.incl.pl1 to 57* dm_system_init_info.incl.pl1. 58*01/13/85 by Lee A. Newcomb: Fixed to not send the system_shutdown_scheduled_ 59* IPS to the executing process; there is a window when caller has 60* not changed the static handler and the dmsd_overseer_ module is 61* responsible for setting up shutdown. 62**/ 63 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo */ 64 /* format: ^inddcls,dclind5,idind35,linecom */ 65 66 dm_initializer_: 67 proc (p_init_info_ptr); 68 69 /* START OF DECLARATIONS */ 70 71 /* Parameter */ 72 dcl p_init_info_ptr ptr /* to initialization structure */ 73 parameter; 74 75 /* Automatic */ 76 dcl ( 77 code fixed bin (35), 78 saved_level fixed bin 79 ) automatic; 80 81 /* Based */ 82 /* Builtin */ 83 dcl (addr, null) builtin; 84 85 /* Condition */ 86 dcl cleanup condition; 87 88 /* Constants */ 89 dcl ( 90 IOA_GENERAL_RS_NO_NEW_LINE bit (1) aligned init ("0"b), 91 IOA_GENERAL_RS_DONT_PAD bit (1) aligned init ("1"b), 92 myname char (15) init ("dm_initializer_") 93 ) int static options (constant); 94 95 /* Entry */ 96 dcl ( 97 before_journal_manager_$per_system_init_1 98 entry (fixed bin (35)), 99 before_journal_manager_$per_system_init_2 100 entry (fixed bin (35)), 101 cu_$arg_list_ptr entry (ptr), 102 cu_$level_get entry (fixed bin), 103 cu_$level_set entry (fixed bin), 104 dm_init_from_hardcore_ entry (fixed bin (35)), 105 dm_per_system_$cleanup entry (), 106 dm_per_system_$enable entry (), 107 dm_per_system_$init entry (fixed bin (71)) 108 returns (char (4) aligned), 109 dm_recovery_ entry (), 110 file_manager_$per_system_init entry (fixed bin (35)), 111 get_process_id_ entry () returns (bit (36)), 112 get_ring_ entry () returns (fixed bin (3)), 113 ioa_$general_rs entry (ptr, fixed bin, fixed bin, 114 char (*), fixed bin (21), 115 bit (1) aligned, bit (1) aligned), 116 lock_manager_$init_per_system entry (fixed bin (35)), 117 sub_err_ entry () options (variable), 118 transaction_manager_$per_process_init 119 entry (), 120 transaction_manager_$per_system_init 121 entry (fixed bin (35)) 122 ) external; 123 124 /* External */ 125 dcl error_table_$unimplemented_version fixed bin (35) external static; 126 127 /* First, validate the input initialization structure. */ 128 129 dm_system_init_info_ptr = p_init_info_ptr; 130 if dm_system_init_info.version ^= DM_SYSTEM_INIT_INFO_VERSION_1 then 131 call ERROR_RETURN (error_table_$unimplemented_version, 132 "^/System initialization structure has version ^a, not ^a.", 133 dm_system_init_info.version, DM_SYSTEM_INIT_INFO_VERSION_1); 134 135 call cu_$level_get (saved_level); /* first the cleanup handler */ 136 on cleanup 137 begin; /* must be able to work */ 138 /* In keeping with the spirit of this program, the work */ 139 /* is done elsewhere. */ 140 call dm_per_system_$cleanup (); 141 call cu_$level_set (saved_level); 142 end; 143 call cu_$level_set (get_ring_ ()); 144 145 /* Call dm_per_system_$init to create a temporary per-bootload directory. */ 146 /* If the state returned indicates DMS is running, we have taken over an */ 147 /* existing DMS from a dead caretaker Daemon. In ALL other cases, we */ 148 /* must call the SETUP_DATA_MANAGEMENT internal procedure to create the */ 149 /* base from which to boot a new DMS. Note the use of the running state is */ 150 /* to indicate the DMS is active, the actual states may be running, or one */ 151 /* of the shutdown states besides normal shutdown. */ 152 153 if dm_per_system_$init (dm_system_init_info.event_channel) 154 ^= DM_SYSTEM_STATE_RUNNING then 155 call SETUP_DATA_MANAGEMENT (); 156 call transaction_manager_$per_process_init (); /* do per-process init */ 157 158 call cu_$level_set (saved_level); 159 160 MAIN_RETURN: 161 return; 162 163 SETUP_DATA_MANAGEMENT: 164 proc (); 165 166 /* Call various subsystem initialization programs which */ 167 /* do not assume an operable Data Management system. */ 168 169 call dm_init_from_hardcore_ (code); 170 if code ^= 0 then 171 call ERROR_RETURN (code, "^/Call to dm_init_from_hardcore_ failed."); 172 173 call lock_manager_$init_per_system (code); 174 if code ^= 0 then 175 call ERROR_RETURN (code, 176 "^/Unable to do lock manager per-system initialization."); 177 178 call transaction_manager_$per_system_init (code); 179 if code ^= 0 then 180 call ERROR_RETURN (code, 181 "^/Unable to do transaction manager per-system initialization."); 182 183 call file_manager_$per_system_init (code); 184 if code ^= 0 then 185 call ERROR_RETURN (code, 186 "^/Unable to do file manager per-system initialization."); 187 188 call before_journal_manager_$per_system_init_1 (code); 189 if code ^= 0 then 190 call ERROR_RETURN (code, 191 "^/Unable to do part 1 before journal manager per-system initialization." 192 ); 193 194 /* Now call in the recovery procedure. This call is made unconditionally; */ 195 /* the recovery programs take into account all the various per-AIM control */ 196 /* file indicators like if recovery is to be done, non-fatal error handling, */ 197 /* holding old bootload directories for later inspection, etc. The sub_err_ */ 198 /* procedure is used for reporting fatal recovery errors. */ 199 200 call dm_recovery_ (); 201 202 /* Call initialization routines which depend on an operable Data */ 203 /* Management system. */ 204 205 call before_journal_manager_$per_system_init_2 (code); 206 if code ^= 0 then 207 call ERROR_RETURN (code, 208 "^/Unable to do part 2 before journal manager per-system initialization." 209 ); 210 211 /* Enable Data Management */ 212 213 call dm_per_system_$enable (); 214 215 216 return; 217 218 end SETUP_DATA_MANAGEMENT; 219 220 ERROR_RETURN: 221 proc options (variable); 222 223 dcl ( 224 er_arg_list_ptr ptr, 225 er_code fixed bin (35), 226 er_message char (1024), 227 er_message_length fixed bin (21) 228 ) automatic; 229 230 dcl ( 231 er_fixed_bin_35_value fixed bin (35), 232 er_message_overlay char (er_message_length) 233 ) based; 234 235 call cu_$arg_list_ptr (er_arg_list_ptr); 236 er_code = er_arg_list_ptr -> arg_list.arg_ptrs (1) -> er_fixed_bin_35_value; 237 238 call ioa_$general_rs (er_arg_list_ptr, 2, 3, er_message, er_message_length, 239 IOA_GENERAL_RS_DONT_PAD, IOA_GENERAL_RS_NO_NEW_LINE); 240 call sub_err_ (er_code, myname, ACTION_CANT_RESTART, null (), 0, 241 addr (er_message) -> er_message_overlay); 242 243 end ERROR_RETURN; 244 1 1 /* BEGIN INCLUDE FILE dm_system_init_info.incl.pl1 */ 1 2 1 3 /* HISTORY 1 4* 1 5*Written by M. Pandolf, 09/16/82. 1 6*Modified: 1 7*05/17/83 by L. A. Newcomb to make version char (8). 1 8*12/13/84 by R. Michael Tague: Changed name from dm_system_init_info.incl.pl1. 1 9**/ 1 10 1 11 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 1 12 1 13 dcl dm_system_init_info_ptr ptr; 1 14 1 15 dcl 1 dm_system_init_info aligned based (dm_system_init_info_ptr), 1 16 2 version char (8), 1 17 2 event_channel fixed bin (71); 1 18 1 19 dcl DM_SYSTEM_INIT_INFO_VERSION_1 char (8) aligned init ("dmintst1") 1 20 internal static options (constant); 1 21 1 22 /* END INCLUDE FILE dm_system_init_info.incl.pl1 */ 245 246 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 */ 247 248 3 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 3 2* 3 3* James R. Davis 10 May 79 */ 3 4 3 5 dcl 1 arg_list aligned based, 3 6 2 header, 3 7 3 arg_count fixed bin (17) unsigned unal, 3 8 3 pad1 bit (1) unal, 3 9 3 call_type fixed bin (18) unsigned unal, 3 10 3 desc_count fixed bin (17) unsigned unal, 3 11 3 pad2 bit (19) unal, 3 12 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 3 13 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 3 14 3 15 3 16 3 17 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 3 18 2 header, 3 19 3 arg_count fixed bin (17) unsigned unal, 3 20 3 pad1 bit (1) unal, 3 21 3 call_type fixed bin (18) unsigned unal, 3 22 3 desc_count fixed bin (17) unsigned unal, 3 23 3 pad2 bit (19) unal, 3 24 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 3 25 2 envptr ptr, 3 26 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 3 27 3 28 3 29 dcl ( 3 30 Quick_call_type init (0), 3 31 Interseg_call_type init (4), 3 32 Envptr_supplied_call_type 3 33 init (8) 3 34 ) fixed bin (18) unsigned unal int static options (constant); 3 35 3 36 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 3 37* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 3 38* an argument list of the proper size in the user's stack 3 39* 3 40**/ 3 41 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 249 250 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 */ 251 252 253 254 end dm_initializer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/05/85 0755.9 dm_initializer_.pl1 >spec>on>7138.pbf>dm_initializer_.pl1 245 1 01/07/85 0901.9 dm_system_init_info.incl.pl1 >ldd>include>dm_system_init_info.incl.pl1 247 2 01/07/85 0900.0 dm_system_states.incl.pl1 >ldd>include>dm_system_states.incl.pl1 249 3 10/23/81 1948.6 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 251 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 000010 constant bit(36) initial dcl 4-7 set ref 240* DM_SYSTEM_INIT_INFO_VERSION_1 000002 constant char(8) initial dcl 1-19 set ref 130 130* DM_SYSTEM_STATE_RUNNING 000000 constant char(4) initial dcl 2-22 ref 153 IOA_GENERAL_RS_DONT_PAD 000010 constant bit(1) initial dcl 89 set ref 238* IOA_GENERAL_RS_NO_NEW_LINE 000025 constant bit(1) initial dcl 89 set ref 238* addr builtin function dcl 83 ref 240 arg_list based structure level 1 dcl 3-5 arg_ptrs 2 based pointer array level 2 dcl 3-5 ref 236 before_journal_manager_$per_system_init_1 000010 constant entry external dcl 96 ref 188 before_journal_manager_$per_system_init_2 000012 constant entry external dcl 96 ref 205 cleanup 000102 stack reference condition dcl 86 ref 136 code 000100 automatic fixed bin(35,0) dcl 76 set ref 169* 170 170* 173* 174 174* 178* 179 179* 183* 184 184* 188* 189 189* 205* 206 206* cu_$arg_list_ptr 000014 constant entry external dcl 96 ref 235 cu_$level_get 000016 constant entry external dcl 96 ref 135 cu_$level_set 000020 constant entry external dcl 96 ref 141 143 158 dm_init_from_hardcore_ 000022 constant entry external dcl 96 ref 169 dm_per_system_$cleanup 000024 constant entry external dcl 96 ref 140 dm_per_system_$enable 000026 constant entry external dcl 96 ref 213 dm_per_system_$init 000030 constant entry external dcl 96 ref 153 dm_recovery_ 000032 constant entry external dcl 96 ref 200 dm_system_init_info based structure level 1 dcl 1-15 dm_system_init_info_ptr 000110 automatic pointer dcl 1-13 set ref 129* 130 130 153 er_arg_list_ptr 000100 automatic pointer dcl 223 set ref 235* 236 238* er_code 000102 automatic fixed bin(35,0) dcl 223 set ref 236* 240* er_fixed_bin_35_value based fixed bin(35,0) dcl 230 ref 236 er_message 000103 automatic char(1024) unaligned dcl 223 set ref 238* 240 er_message_length 000503 automatic fixed bin(21,0) dcl 223 set ref 238* 240 240 er_message_overlay based char unaligned dcl 230 set ref 240* error_table_$unimplemented_version 000052 external static fixed bin(35,0) dcl 125 set ref 130* event_channel 2 based fixed bin(71,0) level 2 dcl 1-15 set ref 153* file_manager_$per_system_init 000034 constant entry external dcl 96 ref 183 get_ring_ 000036 constant entry external dcl 96 ref 143 143 ioa_$general_rs 000040 constant entry external dcl 96 ref 238 lock_manager_$init_per_system 000042 constant entry external dcl 96 ref 173 myname 000004 constant char(15) initial unaligned dcl 89 set ref 240* null builtin function dcl 83 ref 240 240 p_init_info_ptr parameter pointer dcl 72 ref 66 129 saved_level 000101 automatic fixed bin(17,0) dcl 76 set ref 135* 141* 158* sub_err_ 000044 constant entry external dcl 96 ref 240 transaction_manager_$per_process_init 000046 constant entry external dcl 96 ref 156 transaction_manager_$per_system_init 000050 constant entry external dcl 96 ref 178 version based char(8) level 2 dcl 1-15 set ref 130 130* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_DEFAULT_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 DM_SYSTEM_STATE_INITIALIZING internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_NORMAL_SHUTDOWN internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_RECOVERING internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_SHUTDOWN_BEGUN internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_SHUTDOWN_BUMP_USERS internal static char(4) initial dcl 2-22 DM_SYSTEM_STATE_UNDEFINED internal static char(4) initial dcl 2-22 Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 3-29 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 3-29 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 3-29 arg_list_with_envptr based structure level 1 dcl 3-17 get_process_id_ 000000 constant entry external dcl 96 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000631 constant entry internal dcl 220 ref 130 170 174 179 184 189 206 MAIN_RETURN 000373 constant label dcl 160 SETUP_DATA_MANAGEMENT 000374 constant entry internal dcl 163 ref 153 dm_initializer_ 000216 constant entry external dcl 66 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1246 1322 756 1256 Length 1612 756 54 254 267 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dm_initializer_ 192 external procedure is an external procedure. on unit on line 136 68 on unit SETUP_DATA_MANAGEMENT internal procedure shares stack frame of external procedure dm_initializer_. ERROR_RETURN 362 internal procedure is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ERROR_RETURN 000100 er_arg_list_ptr ERROR_RETURN 000102 er_code ERROR_RETURN 000103 er_message ERROR_RETURN 000503 er_message_length ERROR_RETURN dm_initializer_ 000100 code dm_initializer_ 000101 saved_level dm_initializer_ 000110 dm_system_init_info_ptr dm_initializer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this_desc return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. before_journal_manager_$per_system_init_1 before_journal_manager_$per_system_init_2 cu_$arg_list_ptr cu_$level_get cu_$level_set dm_init_from_hardcore_ dm_per_system_$cleanup dm_per_system_$enable dm_per_system_$init dm_recovery_ file_manager_$per_system_init get_ring_ ioa_$general_rs lock_manager_$init_per_system sub_err_ transaction_manager_$per_process_init transaction_manager_$per_system_init THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 66 000213 129 000223 130 000227 135 000261 136 000270 140 000304 141 000310 142 000320 143 000321 153 000341 156 000357 158 000364 160 000373 163 000374 169 000375 170 000404 173 000425 174 000434 178 000455 179 000464 183 000505 184 000514 188 000535 189 000544 200 000565 205 000572 206 000601 213 000622 216 000627 220 000630 235 000636 236 000644 238 000647 240 000712 243 000755 ----------------------------------------------------------- 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