COMPILATION LISTING OF SEGMENT bj_max_txn_storage_limit Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0942.6 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* bj_max_txn_storage_limit.pl1 10* 11* returns the maximum number of bytes available to users in a 12* before journal. 13* 14* The input parameter must locate a BJ header (bj_pste) with 15* a valid version, and the ci_size and max_size components set. 16* The following list gives the list of overhead storage in a BJ 17* control interval not included it in the maximum limit. Please 18* note the maximum is accurate only if one BJ record per CI (i.e., 19* one slot) is used; in the common case of >1 slots per CI in use, 20* the maximum will exceed the actual available storage by a small 21* amount, but other mechanisms prevent the overwriting of valid BJ 22* records and the inaccuracy is relatively small. 23* 24* OVERHEAD STORAGE: 25* - CI zero (used only for BJ header) 26* - DM file CI headers and trailers (see dm_ci_header.incl.pl1) 27* - per-CI BJ specific headers (see dm_bj_ci.incl.pl1) 28* - the first slot of each CI. 29**/ 30 31 /* HISTORY: 32* 33*Written by Lee A. Newcomb, 03/13/85. 34*Modified: 35**/ 36 37 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 38 39 bj_max_txn_storage_limit: 40 proc (p_bj_header_ptr) returns (fixed bin (35)); 41 42 /* START OF DECLARATIONS */ 43 /* Parameter */ 44 dcl p_bj_header_ptr ptr /* loc. of BJ header.*/ 45 parameter; 46 47 /* Automatic */ 48 dcl ( 49 total_available_CIs fixed bin (24) init (0), 50 total_bytes fixed bin (35) init (0), 51 total_bytes_not_available fixed bin (35) init (0), 52 total_words_not_available fixed bin (32) init (0), 53 words_not_available_per_CI fixed bin (18) init (0) 54 ) automatic; 55 56 /* Based */ 57 dcl 1 bj_ci_slot aligned like bj_ci.slot; 58 /* for size calculation */ 59 60 /* Builtin */ 61 dcl (multiply, null, size) builtin; 62 63 /* Constant */ 64 dcl ( 65 BYTES_PER_WORD fixed bin init (4), 66 MYNAME init ("bj_max_txn_storage_limit") 67 char (24) 68 ) internal static options (constant); 69 70 /* Entry */ 71 dcl bj_report_err entry (fixed bin (35), char (*)) 72 external; 73 74 /* External */ 75 dcl dm_error_$bj_bad_header fixed bin (35) external static; 76 77 /* END OF DECLARATIONS */ 78 79 COPY_PARAMETER: 80 bj_header_ptr = p_bj_header_ptr; 81 82 /* bj_header's are currently equivalent to bj_pste's */ 83 call CHECK_VERSION_NUMERIC (bj_header.version, BJ_PSTE_VERSION_2, 84 dm_error_$bj_bad_header); 85 86 total_available_CIs = bj_header.max_size - 1; /* -1 ==> do not include CI 0 */ 87 88 total_bytes = multiply (total_available_CIs, bj_header.ci_size, 89 /* times CI size in bytes */ 90 35, 0); 91 92 words_not_available_per_CI = size (ci_header) /* DM file CI headers */ 93 + size (ci_trailer) /* and DM file CI trailers */ 94 + size (header2) /* and BJ specific CI header */ 95 + size (bj_ci_slot) /* and 1st BJ slot */; 96 97 total_words_not_available = 98 multiply (total_available_CIs, words_not_available_per_CI, 32, 0); 99 100 total_bytes_not_available = 101 multiply (total_words_not_available, BYTES_PER_WORD, 35, 0); 102 103 /* return max storage limit */ 104 105 return (total_bytes - total_bytes_not_available); 106 107 /* end bj_max_txn_storage_limit; */ 108 109 ERROR_RETURN: 110 proc (er_p_code); 111 dcl er_p_code fixed bin (35); 112 113 call bj_report_err (er_p_code, MYNAME); 114 115 end ERROR_RETURN; 116 117 CHECK_VERSION_NUMERIC: 118 proc (cvn_p_given_version, cvn_p_correct_version, cvn_p_error_to_use); 119 120 /* The error code to use is passed as this is really a template proc */ 121 /* used in several modules to check structure versions. It is hoped */ 122 /* newer versions of these structures will be changed to use */ 123 /* char (8) versions. */ 124 125 dcl ( 126 cvn_p_given_version fixed bin, 127 cvn_p_correct_version fixed bin, 128 cvn_p_error_to_use fixed bin (35) 129 ) parameter; 130 131 if cvn_p_given_version ^= cvn_p_correct_version then 132 call ERROR_RETURN (cvn_p_error_to_use); 133 134 end CHECK_VERSION_NUMERIC; 135 1 1 /* BEGIN INCLUDE FILE: dm_bj_header.incl.pl1 */ 1 2 /* 1 3*Currently a BJ header (CI0 of the BJ PF) is just like a bj_pst entry for the journal. 1 4* 1 5*Written by Andre Bensoussan June/July 1982 1 6*Modified: 1 7*09/29/82 by Lee A. Newcomb: To make force alignment appropriately. 1 8**/ 1 9 /* format: style4,indattr,idind33,^indcomtxt */ 1 10 1 11 dcl BJ_UPDATE_FREQUENCY fixed bin internal static init (10); 1 12 1 13 dcl bj_header_ptr ptr; 1 14 1 15 dcl 1 bj_header based (bj_header_ptr) aligned like bj_pste; 1 16 1 17 /* END INCLUDE FILE: dm_bj_header.incl.pl1 */ 136 137 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 */ 138 139 3 1 /* BEGIN INCLUDE FILE: dm_bj_ci.incl.pl1 */ 3 2 /* 3 3*Layout of a BJ control interval excluding the actual data records. 3 4* 3 5*Written by Andre Bensoussan 07/02/1982 3 6*Modified: 3 7*08/15/82 by Andre Bensoussan: For implementing the flush function; 3 8* header2.reserved_1 has been renamed first_rec_id. 3 9*01nov82 by M. Pandolf to eliminate reserved_2 (after first_rec_id) 3 10* and to add n_bi, and more reserved space. 3 11**/ 3 12 3 13 /* format: style4,indattr,idind33,^indcomtxt */ 3 14 3 15 dcl bj_ci_ptr ptr; 3 16 3 17 dcl 1 bj_ci based (bj_ci_ptr) aligned, /* Structure of any CI in BJ except CI zero */ 3 18 2 header1 like ci_header, /* Standard PF CI header */ 3 19 2 header2, /* Header specific to BJ CI */ 3 20 3 layout_type bit (36), 3 21 3 first_rec_id bit (36), /* Relevant only if first_is_contn = 1 */ 3 22 3 23 3 n_slots fixed bin (17) unal, /* n_slots, first, last in same word ... */ 3 24 3 first_is_contn bit (1) unal, /* ..so that they can be changed all ... */ 3 25 3 last_is_contd bit (1) unal, /* ..at the same time in one instruction */ 3 26 3 pad bit (16) unal, 3 27 3 28 3 n_bi fixed bin (35), /* number of BI's in buffer*/ 3 29 3 reserved bit (36) dim (4), 3 30 3 31 2 slot dim (1:1000), 3 32 3 offset fixed bin (18) uns unal, /* In number of bytes */ 3 33 3 length fixed bin (18) uns unal; /* In number of bytes */ 3 34 3 35 dcl 1 header2 like bj_ci.header2 aligned; /* Used for size calculation */ 3 36 3 37 /* END INCLUDE FILE: dm_bj_ci.incl.pl1 */ 3 38 3 39 3 40 3 41 3 42 3 43 3 44 3 45 3 46 3 47 140 141 4 1 /* BEGIN INCLUDE FILE: dm_ci_header.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* 4 5* This include file contains various structures which make up the 4 6* header and trailer of a control interval. 4 7* 4 8* **** NOTE: The include file dm_ci.incl.pl1 is heavily dependent **** 4 9* **** on this include file. When changing this include file, **** 4 10* **** check dm_ci.incl.pl1 to see if it is affected. **** 4 11**/ 4 12 4 13 /* HISTORY: 4 14*Written by Jeffrey D. Ives, 03/02/82. 4 15* (Design by Andre Bensoussan and Jeffrey D. Ives) 4 16*Modified: 4 17*11/02/84 by Matthew Pierret: Re-organized so that dm_ci.incl.pl1 and 4 18* dm_ci_header.incl.pl1 do not duplicate structures or constants. 4 19**/ 4 20 4 21 /* format: style2,ind3 */ 4 22 4 23 /* ci_header is the first four words of a control interval. Its contents 4 24* are used to verify that a control interval is in an expected format, 4 25* to identify the control interval and the file to which the control 4 26* interval belongs, and to maintain information for the synchronization 4 27* of disk I/O between DM file control intervals and associated before 4 28* journal control intervals. The first two words are the time stamp for 4 29* synchronization; the latter two identify the control interval. */ 4 30 4 31 dcl ci_header_ptr ptr; 4 32 dcl 1 ci_header aligned based (ci_header_ptr), 4 33 2 stamp like ci_stamp, 4 34 2 id like ci_id; 4 35 4 36 /* ci_trailer is the last two words of a control interval and must match 4 37* the first two words (ci_header.stamp). */ 4 38 4 39 dcl ci_trailer_ptr ptr; 4 40 dcl 1 ci_trailer like ci_header.stamp aligned based (ci_trailer_ptr); 4 41 4 42 4 43 /* ci_stamp is a two-word date/time modified stamp, consisting of: 4 44* version: a 9-bit version string for the structure 4 45* bj_idx: before journal index for I/O synchronization 4 46* time_modified: Multics clock time of last modification */ 4 47 4 48 dcl 1 ci_stamp aligned based, 4 49 3 version bit (9) unal, 4 50 3 bj_idx fixed bin (9) uns unal, 4 51 3 time_modified fixed bin (53) unal; 4 52 4 53 dcl CI_HEADER_STAMP_VERSION_1 4 54 bit (9) aligned static options (constant) init ("641"b3); 4 55 4 56 /* ci_id is a two-word identification of the control interval, which 4 57* rarely changes and consists of: 4 58* uid: DM file unique identifier 4 59* size_code: the control interval size in bytes, in an encoded 4 60* form (see ci_size_code below). 4 61* num: the control interval number. 0 is the number of the first 4 62* control interval of a file. */ 4 63 4 64 dcl 1 ci_id aligned based, 4 65 3 uid bit (36), 4 66 3 size_code bit (9) unal, 4 67 3 num fixed bin (27) uns unal; 4 68 4 69 /* ci_size_code is the structure which defines the content of ci_id.size_code. 4 70* The size in bytes of a control interval is equal to 4 71* (2 ** ci_size_code.exponent * (64 + 8 * ci_size_code.addon)). */ 4 72 4 73 dcl 1 ci_size_code aligned based, 4 74 2 exponent fixed bin (6) uns unal, 4 75 2 addon fixed bin (3) uns unal; 4 76 4 77 /* ci_header_chunks is a structure which can be used to update the 4 78* ci_stamp or ci_id in one memory cycle. */ 4 79 4 80 dcl 1 ci_header_chunks aligned based (ci_header_ptr), 4 81 2 stamp fixed bin (71), 4 82 2 id fixed bin (71); 4 83 4 84 /* ci_trailer_chunk is a structure which can e used to update the 4 85* ci_trailer in one memory cycle. */ 4 86 4 87 dcl 1 ci_trailer_chunk aligned based, 4 88 2 stamp fixed bin (71); 4 89 4 90 4 91 /* END INCLUDE FILE: dm_ci_header.incl.pl1 */ 142 143 144 145 end bj_max_txn_storage_limit; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.3 bj_max_txn_storage_limit.pl1 >spec>on>7192.pbf-04/04/85>bj_max_txn_storage_limit.pl1 136 1 01/07/85 0857.4 dm_bj_header.incl.pl1 >ldd>include>dm_bj_header.incl.pl1 138 2 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 140 3 01/07/85 0857.3 dm_bj_ci.incl.pl1 >ldd>include>dm_bj_ci.incl.pl1 142 4 01/07/85 0900.5 dm_ci_header.incl.pl1 >ldd>include>dm_ci_header.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_PSTE_VERSION_2 000011 constant fixed bin(17,0) initial dcl 2-42 set ref 83* BYTES_PER_WORD constant fixed bin(17,0) initial dcl 64 ref 100 MYNAME 000000 constant char(24) initial unaligned dcl 64 set ref 113* bj_ci based structure level 1 dcl 3-17 bj_ci_slot automatic structure level 1 dcl 57 ref 92 bj_header based structure level 1 dcl 1-15 bj_header_ptr 000106 automatic pointer dcl 1-13 set ref 79* 83 86 88 bj_pste based structure level 1 dcl 2-48 bj_report_err 000010 constant entry external dcl 71 ref 113 ci_header based structure level 1 dcl 4-32 ref 92 ci_header_ptr automatic pointer dcl 4-31 ref 92 ci_id based structure level 1 dcl 4-64 ci_size 5 based fixed bin(17,0) level 2 dcl 1-15 ref 88 ci_stamp based structure level 1 dcl 4-48 ci_trailer based structure level 1 dcl 4-40 ref 92 ci_trailer_ptr automatic pointer dcl 4-39 ref 92 cvn_p_correct_version parameter fixed bin(17,0) dcl 125 ref 117 131 cvn_p_error_to_use parameter fixed bin(35,0) dcl 125 set ref 117 131* cvn_p_given_version parameter fixed bin(17,0) dcl 125 ref 117 131 dm_error_$bj_bad_header 000012 external static fixed bin(35,0) dcl 75 set ref 83* er_p_code parameter fixed bin(35,0) dcl 111 set ref 109 113* header2 4 based structure level 2 in structure "bj_ci" dcl 3-17 in procedure "bj_max_txn_storage_limit" header2 automatic structure level 1 dcl 3-35 in procedure "bj_max_txn_storage_limit" ref 92 max_size 6 based fixed bin(17,0) level 2 dcl 1-15 ref 86 multiply builtin function dcl 61 ref 88 97 100 p_bj_header_ptr parameter pointer dcl 44 ref 39 79 size builtin function dcl 61 ref 92 92 92 92 slot 14 based structure array level 2 dcl 3-17 stamp based structure level 2 in structure "ci_header" dcl 4-32 in procedure "bj_max_txn_storage_limit" stamp based structure level 3 in structure "bj_ci" dcl 3-17 in procedure "bj_max_txn_storage_limit" total_available_CIs 000100 automatic fixed bin(24,0) initial dcl 48 set ref 48* 86* 88 97 total_bytes 000101 automatic fixed bin(35,0) initial dcl 48 set ref 48* 88* 105 total_bytes_not_available 000102 automatic fixed bin(35,0) initial dcl 48 set ref 48* 100* 105 total_words_not_available 000103 automatic fixed bin(32,0) initial dcl 48 set ref 48* 97* 100 version based fixed bin(17,0) level 2 dcl 1-15 set ref 83* words_not_available_per_CI 000104 automatic fixed bin(18,0) initial dcl 48 set ref 48* 92* 97 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_UPDATE_FREQUENCY internal static fixed bin(17,0) initial dcl 1-11 CI_HEADER_STAMP_VERSION_1 internal static bit(9) initial dcl 4-53 bj_ci_ptr automatic pointer dcl 3-15 bj_pste_ptr automatic pointer dcl 2-45 ci_header_chunks based structure level 1 dcl 4-80 ci_size_code based structure level 1 dcl 4-73 ci_trailer_chunk based structure level 1 dcl 4-87 null builtin function dcl 61 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION_NUMERIC 000113 constant entry internal dcl 117 ref 83 COPY_PARAMETER 000031 constant label dcl 79 ERROR_RETURN 000073 constant entry internal dcl 109 ref 131 bj_max_txn_storage_limit 000017 constant entry external dcl 39 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 200 214 127 210 Length 456 127 14 225 51 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_max_txn_storage_limit 110 external procedure is an external procedure. ERROR_RETURN internal procedure shares stack frame of external procedure bj_max_txn_storage_limit. CHECK_VERSION_NUMERIC internal procedure shares stack frame of external procedure bj_max_txn_storage_limit. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_max_txn_storage_limit 000100 total_available_CIs bj_max_txn_storage_limit 000101 total_bytes bj_max_txn_storage_limit 000102 total_bytes_not_available bj_max_txn_storage_limit 000103 total_words_not_available bj_max_txn_storage_limit 000104 words_not_available_per_CI bj_max_txn_storage_limit 000106 bj_header_ptr bj_max_txn_storage_limit THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_report_err THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$bj_bad_header LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 39 000013 48 000024 79 000031 83 000035 86 000047 88 000053 92 000055 97 000057 100 000061 105 000063 109 000073 113 000075 115 000112 117 000113 131 000115 134 000126 ----------------------------------------------------------- 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