COMPILATION LISTING OF SEGMENT bjm_rebuild_after_crash Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 1001.9 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 8 9 bjm_rebuild_after_crash: 10 proc (Txn_recovery_data_p, Code); 11 12 /* DESCRIPTION: 13* This program overwrites the current DMS bootload bj_txt with data 14* derived from the transactive recovery data passed. Its opposite entry, 15* bjm_clean_txn_tables, is in this program and totally clears the bj_txt. 16* These are meant to be called by 17* transaction_manager_$recover_after_crash after it has acquired a list 18* of the transactions to rollback or finish (when multi-phase commit is 19* implemented), and when it is finished trying to recover them (in case 20* some could not be finished). 21**/ 22 /* HISTORY: 23* 24*Written by Lee A. Newcomb, 12/17/82. 25*Modified: 26*03/01/83 by L. A. Newcomb: to not destroy bj_txt.max_n_entries value. 27*03/07/83 by L. A. Newcomb: clear txt entries correctly (nulling tid). 28*04/08/83 by L. A. Newcomb: the PST entry for the journal being rebuilt now 29* has its n_txn value set for consistency checks in bj_storage* to 30* work properly. 31*12/05/83 by L. A. Newcomb: renamed before_journal_manager_static_ to 32* bjm_data_ and moved some cells in dm_data_ to bjm_data_. 33**/ 34 35 /* DECLARATIONS */ 36 37 dcl ( /* parameters */ 38 Txn_recovery_data_p ptr, /* INPUT: loc. of txn data needed by recovery */ 39 Code fixed bin (35) /* OUTPUT: normal error code, recovery fails if ^= 0 */ 40 ) parameter; 41 42 dcl ( /* automatic */ 43 entry_called char (32) aligned, 44 idx fixed bin /* do loop counter for clearing txn tables */ 45 ) automatic; 46 47 dcl /* PL/I things */ 48 unspec builtin, 49 cleanup condition; 50 51 dcl /* non-error external statics */ 52 dm_data_$bj_txt_ptr ptr /* loc. of curr. bootload's bj_txt */ 53 ext static; 54 55 dcl ( /* error codes */ 56 dm_error_$bj_recursive_invoc, 57 error_table_$unimplemented_version 58 ) fixed bin (35) ext static; 59 60 dcl /* external entries called */ 61 bj_cleanup_tables$handler entry (fixed bin (35)), 62 bj_pst_search entry (bit (36) aligned) returns (ptr); 63 64 /* initialize output parameter */ 65 66 Code = 0; 67 68 /* check we are passed a version we understand. We assume all bj_txt */ 69 /* entries have the same version until the txt gets a version itself. */ 70 /* Must make sure we have some entries, BTW. */ 71 72 if Txn_recovery_data_p -> bj_txt.version ^= BJ_TXT_VERSION_1 then do; 73 Code = error_table_$unimplemented_version; 74 return; 75 end; 76 if Txn_recovery_data_p -> bj_txt.n_entries_used = 0 then 77 return; /* nothing to do */ 78 79 /* Use standard BJM entry sequence, just to be sure. Some modification has */ 80 /* been made to make use of two entries easier */ 81 82 entry_called = "bjm_rebuild_after_crash"; 83 on cleanup 84 call clean_up ("1"b); 85 call common_entry_sequence (entry_called, Code); 86 if Code ^= 0 then 87 return; 88 89 90 /* Now actually do the rebuilding of the bj_txt. Since we currently use */ 91 /* the txt data structure, just do a copy of the useful entries. */ 92 bj_txt_ptr = dm_data_$bj_txt_ptr; 93 bj_txt.n_entries_used = Txn_recovery_data_p -> bj_txt.n_entries_used; 94 95 do idx = 1 to bj_txt.n_entries_used; 96 (nosubrg): 97 bj_txt.entry (idx) = Txn_recovery_data_p -> bj_txt.entry (idx); 98 end; 99 100 /* now set the # of txns active in this journal in the PST entry */ 101 bj_pst_search (bj_txt.entry (1).bj_uid) -> bj_pste.n_txn = bj_txt.n_entries_used; 102 103 /* Done, go through standard BJM exit sequence. */ 104 105 call clean_up (""b); 106 return; 107 108 109 /* end bjm_rebuild_after_crash entry */ 110 111 bjm_clear_txn_tables: 112 entry (Code); 113 114 /* Just zero out the entire bj_txt */ 115 /* first initialize output parameter */ 116 117 Code = 0; 118 119 120 /* do standard BJM entry sequence */ 121 122 entry_called = "bjm_clear_txn_tables"; 123 on cleanup 124 call clean_up ("1"b); 125 call common_entry_sequence (entry_called, Code); 126 if Code ^= 0 then 127 return; 128 129 130 /* Now clear the tables. It turns out the clean_up internal proc. does */ 131 /* this for us anyway. */ 132 133 call clean_up (""b); 134 return; 135 136 137 /* end bjm_clean_txn_tables entry */ 138 139 /* INTERNAL PROCEDURES */ 140 141 common_entry_sequence: 142 proc (Entry_called, Int_code); 143 144 /* simple proc. to do the things we're supposed to do in a BJM entry */ 145 146 if bjm_data_$bj_operation = "" then 147 bjm_data_$bj_operation = Entry_called; 148 else Int_code = dm_error_$bj_recursive_invoc; 149 150 return; 151 152 dcl ( /* common_entry_sequence parameters */ 153 Entry_called char (*) aligned, 154 Int_code fixed bin (35) 155 ) parameter; 156 157 end common_entry_sequence; 158 159 clean_up: 160 proc (Cleanup_condition); 161 162 /* clear the txt if necessary and do standard BJM exit sequence */ 163 164 if Cleanup_condition | entry_called = "bjm_clear_txn_tables" then do; 165 dm_data_$bj_txt_ptr -> bj_txt.entry.tid = ""b; 166 dm_data_$bj_txt_ptr -> bj_txt.n_entries_used = 0; 167 end; 168 169 170 /* Standard exit sequence */ 171 172 if bjm_data_$bj_operation = entry_called then do; 173 174 call bj_cleanup_tables$handler (Code); 175 bjm_data_$bj_exit_err = 176 bjm_data_$bj_default_error_label; 177 bjm_data_$bj_operation = ""; 178 end; 179 180 return; 181 182 183 dcl Cleanup_condition bit (1) aligned parameter; 184 185 end clean_up; 186 187 /* INCLUDE FILES start next page */ 188 1 1 /* BEGIN INCLUDE FILE: dm_bj_txt.incl.pl1 */ 1 2 /* 1 3*dm_bj_txt - before journal per-system transaction table. 1 4* 1 5*Designed by A. Bensoussan 1 6*Written by M. Pandolf 06/02/82 1 7*Modified: 1 8*10/01/82 by Lee A. Newcomb: To use dm_system_data_ for dimension attributes 1 9* and specify alignment on level one. 1 10*08feb83 by M. Pandolf: To restructure the TXT and TXTE. 1 11*30mar83 by M. Pandolf: To add last_completed_operation and ok_to_write. 1 12**/ 1 13 /* format: style4,indattr,idind33,^indcomtxt */ 1 14 1 15 dcl BJ_TXT_VERSION_1 fixed bin int static options (constant) init (1); 1 16 1 17 dcl bj_txt_ptr ptr; /* pointer to transaction table */ 1 18 dcl bj_txte_ptr ptr; /* pointer to transaction table element */ 1 19 1 20 dcl 1 bj_txt aligned based (bj_txt_ptr), /* transaction table */ 1 21 2 version fixed bin, /* should be BJ_TXT_VERSION_1 */ 1 22 2 max_n_entries fixed bin, 1 23 2 n_entries_used fixed bin, /* assumed contiguous */ 1 24 2 pad_header_to_32_words bit (36) dim (29), /* to mod32 align bj_txt.entry */ 1 25 2 entry dim (dm_system_data_$max_n_transactions refer (bj_txt.max_n_entries)) 1 26 like bj_txte; 1 27 1 28 dcl 1 bj_txte based (bj_txte_ptr) aligned, /* single entry, must be mod32 word aligned */ 1 29 2 tid bit (36), /* transaction id if this or last txn */ 1 30 2 bj_uid bit (36), /* UID of before journal chosen at begin mark */ 1 31 2 entry_state aligned, 1 32 3 last_completed_operation char (4), /* to prevent multiple abort and commit */ 1 33 3 ok_to_write bit (1), /* basically validates using this entry */ 1 34 2 owner_info aligned, /* info about creation of txte */ 1 35 3 process_id bit (36), /* of process that wrote begin mark */ 1 36 2 operator_info aligned, /* of process that is currently using this txte */ 1 37 3 process_id bit (36), /* of process that shall write subsequent marks */ 1 38 3 ppte_ptr ptr, /* pointer to PPTE for this transaction */ 1 39 3 bj_oid bit (36), /* before journal opening ID for operator */ 1 40 2 records_info aligned, /* grouped to be saved and restored as one unit */ 1 41 3 curr_checkpoint_rec_id bit (36), /* ident of checkpoint record if doing a rollback, */ 1 42 /* else, this value must be zero. */ 1 43 3 first_bj_rec_id bit (36), /* ident of first mark for this transaction */ 1 44 3 last_bj_rec_id bit (36), /* ident of current mark for this transaction */ 1 45 3 n_rec_written fixed bin (35), /* count of marks written for this transaction */ 1 46 3 n_bytes_written fixed bin (35), /* count of total bytes written to journal */ 1 47 3 last_fm_postcommit_handler_rec_id 1 48 bit (36), /* ident of last special handler in list */ 1 49 2 append_state aligned, /* the first two members define the state of this */ 1 50 3 current_operation char (4), /* transaction and its interaction with bj_storage: */ 1 51 3 pending_bj_rec_id bit (36), /* operation rec_id state */ 1 52 /* *null* XXX quiesed */ 1 53 /* ^null "0"b write pending */ 1 54 /* ^null ^"0"b write completed, needs flushing */ 1 55 /* */ 1 56 3 pending_n_rec_written fixed bin (35), /* copy to n_rec_written before flush */ 1 57 3 pending_n_bytes_written fixed bin (35), /* copy to n_bytes_written before flush */ 1 58 2 pad_entry_to_32_words bit (36) dim (13); /* make any part of table 32 words long */ 1 59 1 60 /* END INCLUDE FILE: dm_bj_txt_ptr */ 189 190 2 1 /* BEGIN INCLUDE FILE: dm_bj_pst.incl.pl1 */ 2 2 /* 2 3*Layout of the before journal per-system table header and BJ table entries. 2 4* 2 5*Written by Andre Bensoussan 06-15-1982 2 6*Modified: 2 7*09/29/82 by Lee A. Newcomb: To use dm_system_data_ for determining 2 8* dimension of bj_pst.e and force bj_pst.mod_list_area and 2 9* bj_pst.e to even word boundaries. 2 10*04/27/82 by M. Pandolf: To add meter space by cutting away from mod_list_area. 2 11**/ 2 12 /* format: style4,indattr,idind33,^indcomtxt */ 2 13 2 14 dcl BJ_PST_VERSION_1 fixed bin internal static options (constant) init (1); 2 15 2 16 dcl bj_pst_ptr ptr; 2 17 2 18 dcl 1 bj_pst based (bj_pst_ptr) aligned, 2 19 2 version fixed bin, 2 20 2 pad1 bit (36), 2 21 2 lock, 2 22 3 pid bit (36), /* process_id holding lock */ 2 23 3 event bit (36), 2 24 2 time_of_bootload fixed bin (71), /* for ease of access */ 2 25 2 max_n_entries fixed bin, /* as determined from dm_system_data_$bj_max_n_journals */ 2 26 2 n_entries_used fixed bin, /* current # of BJs open on the system */ 2 27 2 highest_ix_used fixed bin, /* max. # of BJs that has ever been open of the system */ 2 28 2 pn_table_offset fixed bin (18) uns, /* relative offset of bj_pn_table in bj_pst seg. */ 2 29 2 check_in_table_offset fixed bin (18) uns, /* ditto for bj_check_in_table */ 2 30 2 buffer_table_offset fixed bin (18) uns, /* ditto for where our BJ buffers are located */ 2 31 2 max_n_buffers fixed bin, /* must be <= to max_n_entries */ 2 32 2 pad2 bit (36), /* force next on even word boundary */ 2 33 2 meters, /* dim (50) fixed bin (71), */ 2 34 3 n_calls_begin_txn fixed bin (71), /* meter (1) */ 2 35 3 n_calls_before_image fixed bin (71), /* meter (2) */ 2 36 3 n_calls_abort fixed bin (71), /* meter (3) */ 2 37 3 n_calls_commit fixed bin (71), /* meter (4) */ 2 38 3 n_calls_rb_mark fixed bin (71), /* meter (5) */ 2 39 3 n_calls_fm_pc_mark fixed bin (71), /* meter (6) */ 2 40 3 n_calls_fm_rbh fixed bin (71), /* meter (7) */ 2 41 3 n_calls_rollback fixed bin (71), /* meter (8) */ 2 42 3 meter dim (9:50) fixed bin (71), /* meter (9) - meter (50) */ 2 43 2 mod_list_area (100) fixed bin (35), /* for keeping track of pst mods */ 2 44 2 45 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_pst.max_n_entries)) 2 46 like bj_pste; /* per system BJ table entries */ 2 47 2 48 2 49 /* END INCLUDE FILE: dm_bj_pst.incl.pl1 */ 191 192 3 1 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 3 2 3 3 /* DESCRIPTION 3 4* 3 5* Layout of the per-system before journal table 3 6* entries. This structure is used to contain information 3 7* about a before journal active in a running DMS. It is 3 8* currently also used as the header of a before journal 3 9* (see dm_bj_header.incl.pl1). Version changes to this 3 10* structure require either automatic conversion to be set 3 11* up, or users to be told to re-create their journals. 3 12* 3 13* Currently, a bj_pste must be 64 words long; any 3 14* future changes must at least make sure a bj_pste is an 3 15* even # of words for the alignment of some of its 3 16* elements. 3 17**/ 3 18 3 19 /* HISTORY: 3 20* 3 21*Written by Andre Bensoussan, 06/15/82. 3 22*Modified: 3 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 3 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 3 25* alignments. 3 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 3 27* "n_bi_still_unsafe", and "n_bi_being_saved". 3 28*02/08/83 by M. Pandolf: to add append_state structure. 3 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 3 30*04/27/83 by M. Pandolf: to add meter structure at end. 3 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 3 32* value of 2; fixed references to page files or PF's; fixed format 3 33* of description and history sections. 3 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 3 35* expanded on the description for future generations (no 3 36* version was made). 3 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 3 38* n_txn_storage_limit_hits (again without a version change). 3 39**/ 3 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 3 41 3 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 3 43 options (constant) init (2); 3 44 3 45 dcl bj_pste_ptr ptr; 3 46 3 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 3 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 3 49 2 version fixed bin, 3 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 3 51 2 lock aligned, 3 52 3 pid bit (36), /* process ID of lock owner */ 3 53 3 event bit (36), 3 54 2 bj_uid bit (36), /* UID of BJ file */ 3 55 2 ci_size fixed bin, /* In number of bytes */ 3 56 2 max_size fixed bin, /* In number of ci's */ 3 57 2 active bit (1) aligned, /* 0 means journal not being used */ 3 58 2 time_header_updated fixed bin (71), 3 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 3 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 3 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 3 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 3 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 3 64 2 last_ci_info aligned, 3 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 3 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 3 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 3 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 3 69 /* .. completely on disk */ 3 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 3 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 3 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 3 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 3 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 3 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 3 76 2 cl aligned, /* Circular List */ 3 77 3 origin_ci fixed bin (24) uns, 3 78 3 lowest_ci fixed bin (24) uns, 3 79 3 highest_ci fixed bin (24) uns, 3 80 3 number_ci fixed bin (24) uns, 3 81 2 append_state aligned, 3 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 3 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 3 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 3 85 3 pending_last_element_id bit (36), /* last element id after append done */ 3 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 3 87 2 pad_to_even_word1 bit (36) aligned, 3 88 2 meters aligned, /* dim (10) fixed bin (71), */ 3 89 3 n_bi_written fixed bin (71), /* meter (1) */ 3 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 3 91 3 n_journal_full fixed bin (71), /* meter (3) */ 3 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 3 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 3 94 3 n_txn_started fixed bin (71), /* meter (6) */ 3 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 3 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 3 97 3 meter (9:10) fixed bin (71), 3 98 /* meter (9) - meter (10) */ 3 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 3 100 3 101 3 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 193 194 4 1 /* BEGIN INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 4 2 4 3 /* Originally found in before journal primitives written by */ 4 4 /* A. Bensoussan. Gathered into an include file for ease of use. */ 4 5 /* See the bjm_data_.alm source for details of use. */ 4 6 4 7 /* HISTORY: 4 8*Written by Mike Pandolf, 07/14/82. 4 9*Modified: 4 10*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 4 11* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 4 12**/ 4 13 4 14 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 4 15 dcl bjm_data_$bj_operation char (32) external static; 4 16 4 17 dcl bjm_data_$bj_exit_err label variable external; 4 18 4 19 dcl bjm_data_$bj_code fixed bin (35) external; 4 20 4 21 dcl bjm_data_$bj_default_error_label label external static; 4 22 4 23 4 24 /* END INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 195 196 197 198 end bjm_rebuild_after_crash; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0915.8 bjm_rebuild_after_crash.pl1 >spec>on>7192.pbf-04/04/85>bjm_rebuild_after_crash.pl1 189 1 01/07/85 0858.0 dm_bj_txt.incl.pl1 >ldd>include>dm_bj_txt.incl.pl1 191 2 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 193 3 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 195 4 01/07/85 0857.3 dm_bj_global_error_info.incl.pl1 >ldd>include>dm_bj_global_error_info.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_TXT_VERSION_1 constant fixed bin(17,0) initial dcl 1-15 ref 72 Cleanup_condition parameter bit(1) dcl 183 ref 159 164 Code parameter fixed bin(35,0) dcl 37 set ref 9 66* 73* 85* 86 111 117* 125* 126 174* Entry_called parameter char dcl 152 ref 141 146 Int_code parameter fixed bin(35,0) dcl 152 set ref 141 148* Txn_recovery_data_p parameter pointer dcl 37 ref 9 72 76 93 96 bj_cleanup_tables$handler 000016 constant entry external dcl 60 ref 174 bj_pst_search 000020 constant entry external dcl 60 ref 101 bj_pste based structure level 1 dcl 3-48 bj_txt based structure level 1 dcl 1-20 bj_txt_ptr 000120 automatic pointer dcl 1-17 set ref 92* 93 95 96 101 101 bj_txte based structure level 1 dcl 1-28 bj_uid 41 based bit(36) array level 3 dcl 1-20 set ref 101* bjm_data_$bj_default_error_label 000026 external static label variable dcl 4-21 ref 175 bjm_data_$bj_exit_err 000024 external static label variable dcl 4-17 set ref 175* bjm_data_$bj_operation 000022 external static char(32) unaligned dcl 4-15 set ref 146 146* 172 177* cleanup 000112 stack reference condition dcl 47 ref 83 123 dm_data_$bj_txt_ptr 000010 external static pointer dcl 51 ref 92 165 166 dm_error_$bj_recursive_invoc 000012 external static fixed bin(35,0) dcl 55 ref 148 entry 40 based structure array level 2 dcl 1-20 set ref 96* 96 entry_called 000100 automatic char(32) dcl 42 set ref 82* 85* 122* 125* 164 172 error_table_$unimplemented_version 000014 external static fixed bin(35,0) dcl 55 ref 73 idx 000110 automatic fixed bin(17,0) dcl 42 set ref 95* 96 96* max_n_entries 1 based fixed bin(17,0) level 2 dcl 1-20 ref 165 n_entries_used 2 based fixed bin(17,0) level 2 dcl 1-20 set ref 76 93* 93 95 101 166* n_txn 17 based fixed bin(17,0) level 2 dcl 3-48 set ref 101* tid 40 based bit(36) array level 3 dcl 1-20 set ref 165* version based fixed bin(17,0) level 2 dcl 1-20 ref 72 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_PSTE_VERSION_2 internal static fixed bin(17,0) initial dcl 3-42 BJ_PST_VERSION_1 internal static fixed bin(17,0) initial dcl 2-14 bj_pst based structure level 1 dcl 2-18 bj_pst_ptr automatic pointer dcl 2-16 bj_pste_ptr automatic pointer dcl 3-45 bj_txte_ptr automatic pointer dcl 1-18 bjm_data_$bj_code external static fixed bin(35,0) dcl 4-19 unspec builtin function dcl 47 NAMES DECLARED BY EXPLICIT CONTEXT. bjm_clear_txn_tables 000207 constant entry external dcl 111 bjm_rebuild_after_crash 000027 constant entry external dcl 9 clean_up 000332 constant entry internal dcl 159 ref 83 105 123 133 common_entry_sequence 000300 constant entry internal dcl 141 ref 85 125 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 612 642 415 622 Length 1126 415 30 250 175 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_rebuild_after_crash 108 external procedure is an external procedure. on unit on line 83 72 on unit on unit on line 123 72 on unit common_entry_sequence internal procedure shares stack frame of external procedure bjm_rebuild_after_crash. clean_up 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bjm_rebuild_after_crash 000100 entry_called bjm_rebuild_after_crash 000110 idx bjm_rebuild_after_crash 000120 bj_txt_ptr bjm_rebuild_after_crash THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out call_int_this call_int_other return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_cleanup_tables$handler bj_pst_search THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_default_error_label bjm_data_$bj_exit_err bjm_data_$bj_operation dm_data_$bj_txt_ptr dm_error_$bj_recursive_invoc error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000023 66 000037 72 000040 73 000044 74 000046 76 000047 82 000052 83 000055 85 000103 86 000117 92 000121 93 000125 95 000133 96 000141 98 000153 101 000155 105 000173 106 000203 111 000204 117 000217 122 000220 123 000223 125 000251 126 000265 133 000267 134 000277 141 000300 146 000311 148 000325 150 000330 159 000331 164 000337 165 000350 166 000364 172 000365 174 000373 175 000401 177 000410 180 000414 ----------------------------------------------------------- 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