COMPILATION LISTING OF SEGMENT bj_flush_pnt Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0937.1 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* bj_flush_pnt flushes the Data Management System's before journal 10* pathname to UID table. This is done to guarantee a journal can be 11* opened for recovery after a Multics' system crash. 12**/ 13 14 /* HISTORY: 15*Written by Lee A. Newcomb, 04/30/83. 16*Modified: 17*12/06/83 by Lee A. Newcomb: Renamed before_journal_manager_static_ to 18* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 19*02/18/85 by Lee A. Newcomb: Fixed to check the version of the BJ PST and the 20* format and declarations; also added a DESCRIPTION section. 21**/ 22 23 /* format:style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 24 25 bj_flush_pnt: 26 proc (); 27 28 /* DECLARATIONS */ 29 30 /* Parameter */ 31 /* Automatic */ 32 dcl ( 33 code fixed bin (35) init (0), 34 first_page fixed bin, 35 last_page fixed bin, 36 n_pages fixed bin 37 ) automatic; 38 39 dcl 1 my_flush_consec aligned automatic, 40 2 version init (FLUSH_CONSEC_VERSION_1), 41 2 n_segs init (1), /* UID-pathname table is single seg. */ 42 2 seg dim (1) like flush_consec.seg; 43 44 /* Based */ 45 /* Builtin */ 46 dcl (addr, baseno, bin, divide, ptr, size) 47 builtin; 48 49 /* Condition */ 50 /* Constant */ 51 dcl ME char (12) 52 init ("bj_flush_pnt") internal 53 static options (constant); 54 55 /* Entry */ 56 dcl ( 57 bj_report_err entry (fixed bin (35), char (*)), 58 hcs_$flush_consecutive_pages entry (ptr, fixed bin (35)) 59 ) external; 60 61 /* External */ 62 dcl ( 63 bjm_data_$bj_pst_ptr ptr, 64 dm_error_$bj_bad_pst_version fixed bin (35), 65 dm_system_data_$bj_max_n_journals fixed bin 66 ) external static; 67 68 /* Static */ 69 70 /* END OF DECLARATIONS */ 71 72 /* bj_flush_pnt: repeat for reader */ 73 /* proc (); */ 74 75 bj_pst_ptr = bjm_data_$bj_pst_ptr; 76 call CHECK_VERSION_NUMERIC (bj_pst.version, BJ_PST_VERSION_1, 77 dm_error_$bj_bad_pst_version); 78 bj_pn_table_ptr = ptr (bj_pst_ptr, bj_pst.pn_table_offset); 79 80 first_page = divide (bj_pst.pn_table_offset, 1024, 17, 0); 81 82 last_page = 83 divide (bj_pst.pn_table_offset + size (bj_pn_table) - 1, 1024, 17, 0); 84 85 n_pages = last_page - first_page + 1; 86 87 my_flush_consec.seg (1).segno = bin (baseno (bj_pst_ptr)); 88 my_flush_consec.seg (1).first_page = first_page; 89 my_flush_consec.seg (1).n_pages = n_pages; 90 91 92 call hcs_$flush_consecutive_pages (addr (my_flush_consec), code); 93 if code ^= 0 then 94 call ERROR_RETURN (code); 95 96 return; 97 98 /* end bj_flush_pnt; */ 99 100 ERROR_RETURN: 101 proc (er_p_code); 102 103 dcl er_p_code fixed bin (35) parameter; 104 105 call bj_report_err (er_p_code, ME); /* Will do a non local goto */ 106 107 end ERROR_RETURN; 108 109 CHECK_VERSION_NUMERIC: 110 proc (cvn_p_given_version, cvn_p_correct_version, cvn_p_error_to_use); 111 112 /* The error code to use is passed as this is really a template proc */ 113 /* used in several modules to check structure versions. It is hoped */ 114 /* newer versions of these structures will be changed to use */ 115 /* char (8) versions. */ 116 117 dcl ( 118 cvn_p_given_version fixed bin, 119 cvn_p_correct_version fixed bin, 120 cvn_p_error_to_use fixed bin (35) 121 ) parameter; 122 123 if cvn_p_given_version ^= cvn_p_correct_version then 124 call ERROR_RETURN (cvn_p_error_to_use); 125 126 end CHECK_VERSION_NUMERIC; 127 1 1 /* BEGIN INCLUDE FILE: dm_bj_pst.incl.pl1 */ 1 2 /* 1 3*Layout of the before journal per-system table header and BJ table entries. 1 4* 1 5*Written by Andre Bensoussan 06-15-1982 1 6*Modified: 1 7*09/29/82 by Lee A. Newcomb: To use dm_system_data_ for determining 1 8* dimension of bj_pst.e and force bj_pst.mod_list_area and 1 9* bj_pst.e to even word boundaries. 1 10*04/27/82 by M. Pandolf: To add meter space by cutting away from mod_list_area. 1 11**/ 1 12 /* format: style4,indattr,idind33,^indcomtxt */ 1 13 1 14 dcl BJ_PST_VERSION_1 fixed bin internal static options (constant) init (1); 1 15 1 16 dcl bj_pst_ptr ptr; 1 17 1 18 dcl 1 bj_pst based (bj_pst_ptr) aligned, 1 19 2 version fixed bin, 1 20 2 pad1 bit (36), 1 21 2 lock, 1 22 3 pid bit (36), /* process_id holding lock */ 1 23 3 event bit (36), 1 24 2 time_of_bootload fixed bin (71), /* for ease of access */ 1 25 2 max_n_entries fixed bin, /* as determined from dm_system_data_$bj_max_n_journals */ 1 26 2 n_entries_used fixed bin, /* current # of BJs open on the system */ 1 27 2 highest_ix_used fixed bin, /* max. # of BJs that has ever been open of the system */ 1 28 2 pn_table_offset fixed bin (18) uns, /* relative offset of bj_pn_table in bj_pst seg. */ 1 29 2 check_in_table_offset fixed bin (18) uns, /* ditto for bj_check_in_table */ 1 30 2 buffer_table_offset fixed bin (18) uns, /* ditto for where our BJ buffers are located */ 1 31 2 max_n_buffers fixed bin, /* must be <= to max_n_entries */ 1 32 2 pad2 bit (36), /* force next on even word boundary */ 1 33 2 meters, /* dim (50) fixed bin (71), */ 1 34 3 n_calls_begin_txn fixed bin (71), /* meter (1) */ 1 35 3 n_calls_before_image fixed bin (71), /* meter (2) */ 1 36 3 n_calls_abort fixed bin (71), /* meter (3) */ 1 37 3 n_calls_commit fixed bin (71), /* meter (4) */ 1 38 3 n_calls_rb_mark fixed bin (71), /* meter (5) */ 1 39 3 n_calls_fm_pc_mark fixed bin (71), /* meter (6) */ 1 40 3 n_calls_fm_rbh fixed bin (71), /* meter (7) */ 1 41 3 n_calls_rollback fixed bin (71), /* meter (8) */ 1 42 3 meter dim (9:50) fixed bin (71), /* meter (9) - meter (50) */ 1 43 2 mod_list_area (100) fixed bin (35), /* for keeping track of pst mods */ 1 44 1 45 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_pst.max_n_entries)) 1 46 like bj_pste; /* per system BJ table entries */ 1 47 1 48 1 49 /* END INCLUDE FILE: dm_bj_pst.incl.pl1 */ 128 129 2 1 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 2 2 2 3 /* DESCRIPTION 2 4* 2 5* Layout of the per-system before journal table 2 6* entries. This structure is used to contain information 2 7* about a before journal active in a running DMS. It is 2 8* currently also used as the header of a before journal 2 9* (see dm_bj_header.incl.pl1). Version changes to this 2 10* structure require either automatic conversion to be set 2 11* up, or users to be told to re-create their journals. 2 12* 2 13* Currently, a bj_pste must be 64 words long; any 2 14* future changes must at least make sure a bj_pste is an 2 15* even # of words for the alignment of some of its 2 16* elements. 2 17**/ 2 18 2 19 /* HISTORY: 2 20* 2 21*Written by Andre Bensoussan, 06/15/82. 2 22*Modified: 2 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 2 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 2 25* alignments. 2 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 2 27* "n_bi_still_unsafe", and "n_bi_being_saved". 2 28*02/08/83 by M. Pandolf: to add append_state structure. 2 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 2 30*04/27/83 by M. Pandolf: to add meter structure at end. 2 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 2 32* value of 2; fixed references to page files or PF's; fixed format 2 33* of description and history sections. 2 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 2 35* expanded on the description for future generations (no 2 36* version was made). 2 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 2 38* n_txn_storage_limit_hits (again without a version change). 2 39**/ 2 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 2 41 2 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 2 43 options (constant) init (2); 2 44 2 45 dcl bj_pste_ptr ptr; 2 46 2 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 2 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 2 49 2 version fixed bin, 2 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 2 51 2 lock aligned, 2 52 3 pid bit (36), /* process ID of lock owner */ 2 53 3 event bit (36), 2 54 2 bj_uid bit (36), /* UID of BJ file */ 2 55 2 ci_size fixed bin, /* In number of bytes */ 2 56 2 max_size fixed bin, /* In number of ci's */ 2 57 2 active bit (1) aligned, /* 0 means journal not being used */ 2 58 2 time_header_updated fixed bin (71), 2 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 2 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 2 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 2 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 2 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 2 64 2 last_ci_info aligned, 2 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 2 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 2 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 2 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 2 69 /* .. completely on disk */ 2 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 2 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 2 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 2 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 2 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 2 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 2 76 2 cl aligned, /* Circular List */ 2 77 3 origin_ci fixed bin (24) uns, 2 78 3 lowest_ci fixed bin (24) uns, 2 79 3 highest_ci fixed bin (24) uns, 2 80 3 number_ci fixed bin (24) uns, 2 81 2 append_state aligned, 2 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 2 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 2 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 2 85 3 pending_last_element_id bit (36), /* last element id after append done */ 2 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 2 87 2 pad_to_even_word1 bit (36) aligned, 2 88 2 meters aligned, /* dim (10) fixed bin (71), */ 2 89 3 n_bi_written fixed bin (71), /* meter (1) */ 2 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 2 91 3 n_journal_full fixed bin (71), /* meter (3) */ 2 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 2 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 2 94 3 n_txn_started fixed bin (71), /* meter (6) */ 2 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 2 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 2 97 3 meter (9:10) fixed bin (71), 2 98 /* meter (9) - meter (10) */ 2 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 2 100 2 101 2 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 130 131 3 1 /* BEGIN INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 3 2 /* 3 3*This vector relates a BJ UID to its pathname. 3 4* 3 5*Written by Andre Bensoussan June/July 1982 3 6*Modified: 3 7*09/29/82 by Lee A. Newcomb: To make word aligned, convert to use 3 8* dm_system_data_$bj_max_n_journals, and store max_n_entries 3 9* for use with crash recovery. 3 10**/ 3 11 /* format: style4,indattr,idind33,^indcomtxt */ 3 12 3 13 dcl bj_pn_table_ptr ptr; 3 14 3 15 dcl 1 bj_pn_table based (bj_pn_table_ptr) aligned, 3 16 2 max_n_entries fixed bin, /* know how long the table is for crash recovery */ 3 17 2 bj_path_to_uid_relation dim (dm_system_data_$bj_max_n_journals refer (bj_pn_table.max_n_entries)), 3 18 3 dir char (168), 3 19 3 entry char (32), 3 20 3 bj_uid bit (36); 3 21 3 22 /* END INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 132 133 4 1 /* START OF: flush_structures.incl.pl1 October 1982 * * * * * * * * * * * * * * * * */ 4 2 4 3 dcl flush_consecp ptr; 4 4 dcl flushp ptr; 4 5 4 6 dcl 1 flush_consec aligned based (flush_consecp), /* Structure for flushing consecutive pages */ 4 7 2 version fixed bin, /* Version of this structure */ 4 8 2 n_segs fixed bin, /* Number of segments */ 4 9 2 seg (0 refer (flush_consec.n_segs)) aligned, /* One per segment */ 4 10 3 segno fixed bin (15), /* Segment number */ 4 11 3 first_page fixed bin, /* First page (zero-based) */ 4 12 3 n_pages fixed bin; /* Number of pages */ 4 13 4 14 dcl 1 flush aligned based (flushp), /* Structure for flushing arbitrary pages */ 4 15 2 version fixed bin, /* Version of this structure */ 4 16 2 n_pages fixed bin, /* Number of pages to flush */ 4 17 2 seg_page (0 refer (flush.n_pages)), /* One per page - for efficiency group by segment */ 4 18 3 seg_no fixed bin (17) unaligned, /* Segment number */ 4 19 3 page_no fixed bin (17) unaligned; /* Page number (zero-based */ 4 20 4 21 dcl (FLUSH_CONSEC_VERSION_1 init (1), 4 22 FLUSH_VERSION_1 init (1)) fixed bin internal static options (constant); 4 23 4 24 /* END OF: flush_structures.incl.pl1 * * * * * * * * * * * * * * * * */ 134 135 136 137 end bj_flush_pnt; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.0 bj_flush_pnt.pl1 >spec>on>7192.pbf-04/04/85>bj_flush_pnt.pl1 128 1 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 130 2 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 132 3 01/07/85 0857.4 dm_bj_pn_table.incl.pl1 >ldd>include>dm_bj_pn_table.incl.pl1 134 4 11/23/82 0953.8 flush_structures.incl.pl1 >ldd>include>flush_structures.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. BJ_PST_VERSION_1 000006 constant fixed bin(17,0) initial dcl 1-14 set ref 76* FLUSH_CONSEC_VERSION_1 constant fixed bin(17,0) initial dcl 4-21 ref 39 ME 000000 constant char(12) initial unaligned dcl 51 set ref 105* addr builtin function dcl 46 ref 92 92 baseno builtin function dcl 46 ref 87 bin builtin function dcl 46 ref 87 bj_pn_table based structure level 1 dcl 3-15 ref 82 bj_pn_table_ptr 000114 automatic pointer dcl 3-13 set ref 78* 82 bj_pst based structure level 1 dcl 1-18 bj_pst_ptr 000112 automatic pointer dcl 1-16 set ref 75* 76 78 78 80 82 87 bj_pste based structure level 1 dcl 2-48 bj_report_err 000010 constant entry external dcl 56 ref 105 bjm_data_$bj_pst_ptr 000014 external static pointer dcl 62 ref 75 code 000100 automatic fixed bin(35,0) initial dcl 32 set ref 32* 92* 93 93* cvn_p_correct_version parameter fixed bin(17,0) dcl 117 ref 109 123 cvn_p_error_to_use parameter fixed bin(35,0) dcl 117 set ref 109 123* cvn_p_given_version parameter fixed bin(17,0) dcl 117 ref 109 123 divide builtin function dcl 46 ref 80 82 dm_error_$bj_bad_pst_version 000016 external static fixed bin(35,0) dcl 62 set ref 76* dm_system_data_$bj_max_n_journals 000020 external static fixed bin(17,0) dcl 62 ref 82 er_p_code parameter fixed bin(35,0) dcl 103 set ref 100 105* first_page 3 000104 automatic fixed bin(17,0) array level 3 in structure "my_flush_consec" dcl 39 in procedure "bj_flush_pnt" set ref 88* first_page 000101 automatic fixed bin(17,0) dcl 32 in procedure "bj_flush_pnt" set ref 80* 85 88 flush_consec based structure level 1 dcl 4-6 hcs_$flush_consecutive_pages 000012 constant entry external dcl 56 ref 92 last_page 000102 automatic fixed bin(17,0) dcl 32 set ref 82* 85 my_flush_consec 000104 automatic structure level 1 dcl 39 set ref 92 92 n_pages 000103 automatic fixed bin(17,0) dcl 32 in procedure "bj_flush_pnt" set ref 85* 89 n_pages 4 000104 automatic fixed bin(17,0) array level 3 in structure "my_flush_consec" dcl 39 in procedure "bj_flush_pnt" set ref 89* n_segs 1 000104 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* pn_table_offset 11 based fixed bin(18,0) level 2 unsigned dcl 1-18 ref 78 80 82 ptr builtin function dcl 46 ref 78 seg 2 000104 automatic structure array level 2 in structure "my_flush_consec" dcl 39 in procedure "bj_flush_pnt" seg 2 based structure array level 2 in structure "flush_consec" dcl 4-6 in procedure "bj_flush_pnt" segno 2 000104 automatic fixed bin(15,0) array level 3 dcl 39 set ref 87* size builtin function dcl 46 ref 82 version based fixed bin(17,0) level 2 in structure "bj_pst" dcl 1-18 in procedure "bj_flush_pnt" set ref 76* version 000104 automatic fixed bin(17,0) initial level 2 in structure "my_flush_consec" dcl 39 in procedure "bj_flush_pnt" set ref 39* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_PSTE_VERSION_2 internal static fixed bin(17,0) initial dcl 2-42 FLUSH_VERSION_1 internal static fixed bin(17,0) initial dcl 4-21 bj_pste_ptr automatic pointer dcl 2-45 flush based structure level 1 dcl 4-14 flush_consecp automatic pointer dcl 4-3 flushp automatic pointer dcl 4-4 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION_NUMERIC 000130 constant entry internal dcl 109 ref 76 ERROR_RETURN 000110 constant entry internal dcl 100 ref 93 123 bj_flush_pnt 000010 constant entry external dcl 25 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 260 302 150 270 Length 542 150 22 224 107 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_flush_pnt 118 external procedure is an external procedure. ERROR_RETURN internal procedure shares stack frame of external procedure bj_flush_pnt. CHECK_VERSION_NUMERIC internal procedure shares stack frame of external procedure bj_flush_pnt. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_flush_pnt 000100 code bj_flush_pnt 000101 first_page bj_flush_pnt 000102 last_page bj_flush_pnt 000103 n_pages bj_flush_pnt 000104 my_flush_consec bj_flush_pnt 000112 bj_pst_ptr bj_flush_pnt 000114 bj_pn_table_ptr bj_flush_pnt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_report_err hcs_$flush_consecutive_pages THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_pst_ptr dm_error_$bj_bad_pst_version dm_system_data_$bj_max_n_journals LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000007 32 000015 39 000016 75 000022 76 000025 78 000037 80 000044 82 000046 85 000056 87 000061 88 000065 89 000067 92 000071 93 000103 96 000107 100 000110 105 000112 107 000127 109 000130 123 000132 126 000143 ----------------------------------------------------------- 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