COMPILATION LISTING OF SEGMENT bjm_flush_all Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0940.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This procedure is supposed to be invoked by the Data Management Daemon. 10*Its job is to flush all before journals described by a bj_pste, up to the 11*last record written in the journal. Its execution is requested when, for 12*some unknown reason, the number of data management pages held in main 13*memory becomes higher that the allowed threashold. This procedure has to 14*be executed by the Daemon because the Daemon has access to all journals. 15* 16* The loop to all bj_pste's is written in such a way that, if there is a 17*problem trying to flush a journal, instead of giving up, the program 18*will go to the next journal. 19**/ 20 21 /* HISTORY: 22*Written by A. Bensoussan, 06/07/83. 23*Modified: 24*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 25* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 26*10/23/84 by M. Sharpe: to correct format and check version of pst 27* before its first use; to use "call ERROR_RETURN (code)" 28* convention. 29*02/13/85 by Lee A. Newcomb: Fixed to use new constant BJ_PSTE_VERSION_2 30* and to have cleanup handler not work if the values it resets 31* have not been set; also minor format and dcl changes. 32*03/19/85 by Steve Herbst: Fixed to initialize bjm_data_$bj_code. 33**/ 34 35 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 36 37 bjm_flush_all: 38 proc (); 39 40 /* DECLARATIONS */ 41 42 /* Parameter */ 43 /* Automatic */ 44 dcl ( 45 bj_oid bit (36) aligned, 46 bj_uid bit (36) aligned, 47 bjm_clean_up_needed bit (1) aligned init (""b), 48 code fixed bin (35), 49 journal_idx fixed bin, 50 last_rec_id bit (36) aligned, 51 max_n_journals fixed bin 52 ) automatic; 53 54 /* Based */ 55 /* Builtin */ 56 dcl addr builtin; 57 58 /* Condition */ 59 dcl cleanup condition; 60 61 /* Constant */ 62 dcl ( 63 CHECK_FOR_BJM_RECURSION bit (1) aligned init ("1"b), 64 DONT_CHECK_FOR_BJM_RECURSION bit (1) aligned init ("0"b), 65 ME char (13) init ("bjm_flush_all") 66 ) internal static options (constant); 67 68 /* Entry */ 69 dcl ( 70 bj_cleanup_tables$handler entry (fixed bin (35)), 71 bj_close_oid entry (bit (36) aligned), 72 bj_oid_util$get_ptr entry (bit (36) aligned) returns (ptr), 73 bj_open_by_uid entry (bit (36) aligned, 74 bit (36) aligned), 75 bj_storage_flush$up_to_rec_id entry (ptr, bit (36) aligned) 76 ) external; 77 78 /* External */ 79 dcl ( 80 bjm_data_$bj_pst_ptr ptr, 81 dm_error_$bj_bad_pst_version fixed bin (35), 82 dm_error_$bj_recursive_invoc fixed bin (35), 83 dm_system_data_$bj_max_n_journals fixed bin 84 ) external static; 85 86 /* Static */ 87 88 /* END OF DECLARATIONS */ 89 90 code = 0; 91 92 SETUP_FOR_NON_STANDARD_EXIT: 93 do; 94 on cleanup call CLEANUP (); 95 96 call SET_BJM_DATA_ERROR_HANDLING_VALUES (NONLOCAL_ERROR_EXIT, ME, 97 CHECK_FOR_BJM_RECURSION); 98 99 end SETUP_FOR_NON_STANDARD_EXIT; 100 101 bj_pst_ptr = bjm_data_$bj_pst_ptr; 102 call CHECK_VERSION_NUMERIC (bj_pst.version, BJ_PST_VERSION_1, 103 dm_error_$bj_bad_pst_version); 104 105 max_n_journals = dm_system_data_$bj_max_n_journals; /* don't let one error stop us */ 106 bjm_data_$bj_exit_err = NEXT_AFTER_ERR; 107 108 FLUSH_LOOP: 109 do journal_idx = 1 to max_n_journals; 110 111 bj_pste_ptr = addr (bj_pst.e (journal_idx)); 112 if bj_pste.version = BJ_PSTE_VERSION_2 then 113 BJ_TO_FLUSH: 114 do; 115 bj_oid = "0"b; 116 bj_uid = bj_pste.bj_uid; 117 118 call bj_open_by_uid (bj_uid, bj_oid); 119 120 if bj_oid ^= "0"b then do; 121 bj_ppte_ptr = bj_oid_util$get_ptr (bj_oid); 122 last_rec_id = bj_pste.last_rec_id; 123 call bj_storage_flush$up_to_rec_id (bj_ppte_ptr, last_rec_id); 124 call bj_close_oid (bj_oid); 125 end; 126 127 end BJ_TO_FLUSH; 128 129 goto NEXT; 130 131 NEXT_AFTER_ERR: /* if we fail on a BJ, continue on */ 132 call bj_cleanup_tables$handler (0); 133 134 NEXT: 135 end FLUSH_LOOP; 136 137 call FINISH (); 138 139 MAIN_RETURN: 140 return; 141 142 /* end bjm_flush_all; */ 143 144 NONLOCAL_ERROR_EXIT: 145 call ERROR_RETURN (bjm_data_$bj_code); 146 147 FINISH: 148 proc (); 149 150 call SET_BJM_DATA_ERROR_HANDLING_VALUES (bjm_data_$bj_default_error_label, 151 "", DONT_CHECK_FOR_BJM_RECURSION); 152 153 return; 154 155 end FINISH; 156 157 ERROR_RETURN: 158 proc (er_p_code); /* we currently ignore the parameter */ 159 160 dcl er_p_code fixed bin (35) parameter; 161 162 call CLEANUP (); 163 164 goto MAIN_RETURN; 165 166 end ERROR_RETURN; 167 168 CLEANUP: 169 proc (); 170 171 if bjm_clean_up_needed then 172 call bj_cleanup_tables$handler (0); 173 174 call FINISH (); 175 176 return; 177 178 end CLEANUP; 179 180 SET_BJM_DATA_ERROR_HANDLING_VALUES: 181 proc (sbdehv_p_error_exit, sbdehv_p_operation, 182 sbdehv_p_check_for_recursive_invocation); 183 184 /* This internal procedure centralizes the setting of the BJM global */ 185 /* error values in bjm_data_. It is called near the beginning of */ 186 /* this module, and in the FINISH internal procedure. ONLY THE FIRST */ 187 /* OF THESE CALLS SHOULD ASK FOR DETECTION OF A RECURSIVE INVOCATION */ 188 /* OF THE BEFORE JOURNAL MANAGER, if the other calls did, we could */ 189 /* end up getting a recursive call ERROR_RETURN, CLEANUP, FINISH, */ 190 /* this proc, etc. */ 191 192 dcl ( 193 sbdehv_p_error_exit label variable, 194 sbdehv_p_operation char (*), 195 sbdehv_p_check_for_recursive_invocation 196 bit (1) aligned 197 ) parameter; 198 199 if sbdehv_p_check_for_recursive_invocation then 200 if bjm_data_$bj_operation ^= "" then 201 call ERROR_RETURN (dm_error_$bj_recursive_invoc); 202 203 bjm_clean_up_needed = "1"b; 204 bjm_data_$bj_exit_err = sbdehv_p_error_exit; 205 bjm_data_$bj_operation = sbdehv_p_operation; 206 bjm_data_$bj_code = 0; 207 208 return; 209 210 end SET_BJM_DATA_ERROR_HANDLING_VALUES; 211 212 CHECK_VERSION_NUMERIC: 213 proc (cvn_p_given_version, cvn_p_correct_version, cvn_p_error_to_use); 214 215 dcl ( 216 cvn_p_given_version fixed bin, 217 cvn_p_correct_version fixed bin, 218 cvn_p_error_to_use fixed bin (35) 219 ) parameter; 220 221 if cvn_p_given_version ^= cvn_p_correct_version then 222 call ERROR_RETURN (cvn_p_error_to_use); 223 224 end CHECK_VERSION_NUMERIC; 225 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 */ 226 227 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 */ 228 229 3 1 /* BEGIN INCLUDE FILE: dm_bj_ppt.incl.pl1 */ 3 2 /* 3 3*Layout of the per-process before journal table and entries. 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 two default oid cells, pad ppte's 3 8* to account for all used space, and use dm_system_data_ for 3 9* determining dimension of bj_ppt.e. 3 10**/ 3 11 /* format: style4,indattr,idind33,^indcomtxt */ 3 12 3 13 dcl BJ_PPT_VERSION_1 fixed bin int static options (constant) init (1); 3 14 dcl BJ_PPTE_VERSION_1 fixed bin int static options (constant) init (1); 3 15 3 16 dcl bj_ppt_ptr ptr; 3 17 3 18 dcl 1 bj_ppt based (bj_ppt_ptr) aligned, 3 19 2 version fixed bin, 3 20 2 max_n_entries fixed bin, /* should be = dm_system_data_$bj_max_n_journals */ 3 21 2 n_entries_used fixed bin, /* # of BJs open in this process */ 3 22 2 highest_ix_used fixed bin, /* max. # of BJs ever opened in this process */ 3 23 2 default_bj, /* for selecting a txn def. BJ by write_before_mark protocol */ 3 24 3 user_set_oid bit (36), /* explicit user setting via $set_default_bj */ 3 25 3 last_opened_oid bit (36), /* implicit if no user setting, set by open and close */ 3 26 /* if both zero, use system default BJ */ 3 27 2 process_id bit (36), /* so we don't have to keep calling for it. */ 3 28 2 process_ix fixed bin, /* index into bj_check_in_table */ 3 29 2 mod_list_area (100) fixed bin (35), /* for keeping track of ppt mods, not curr. used */ 3 30 3 31 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_ppt.max_n_entries)) 3 32 like bj_ppte; /* an entry for each BJ open in this process */ 3 33 /* always make sure bj_ppt.e is on a even word boundary */ 3 34 3 35 /* now specify the format of each per-process BJ table entry */ 3 36 3 37 dcl bj_ppte_ptr ptr; 3 38 3 39 dcl 1 bj_ppte based (bj_ppte_ptr) aligned, 3 40 2 version fixed bin, /* better be the same for all entries in a bj_ppt */ 3 41 2 bj_uid bit (36), /* UID of the BJ page file */ 3 42 2 pf_oid bit (36), /* OID of the BJ page file */ 3 43 2 n_opening fixed bin, /* how many openings this process has done for this BJ */ 3 44 2 bj_pste_ptr ptr, /* "link" to per-system BJ table entry */ 3 45 2 open_time fixed bin (71); /* used to fill in bj_ppt.default_bj.last_opened_oid */ 3 46 /* if the last opened BJ is closed */ 3 47 3 48 /* END INCLUDE FILE: bj_ppt.incl.pl1 */ 230 231 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 */ 232 233 234 235 end bjm_flush_all; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.2 bjm_flush_all.pl1 >spec>on>7192.pbf-04/04/85>bjm_flush_all.pl1 226 1 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 228 2 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 230 3 01/07/85 0857.6 dm_bj_ppt.incl.pl1 >ldd>include>dm_bj_ppt.incl.pl1 232 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_PSTE_VERSION_2 constant fixed bin(17,0) initial dcl 2-42 ref 112 BJ_PST_VERSION_1 000016 constant fixed bin(17,0) initial dcl 1-14 set ref 102* CHECK_FOR_BJM_RECURSION 000005 constant bit(1) initial dcl 62 set ref 96* DONT_CHECK_FOR_BJM_RECURSION 000014 constant bit(1) initial dcl 62 set ref 150* ME 000000 constant char(13) initial unaligned dcl 62 set ref 96* addr builtin function dcl 56 ref 111 bj_cleanup_tables$handler 000010 constant entry external dcl 69 ref 131 171 bj_close_oid 000012 constant entry external dcl 69 ref 124 bj_oid 000100 automatic bit(36) dcl 44 set ref 115* 118* 120 121* 124* bj_oid_util$get_ptr 000014 constant entry external dcl 69 ref 121 bj_open_by_uid 000016 constant entry external dcl 69 ref 118 bj_ppte based structure level 1 dcl 3-39 bj_ppte_ptr 000122 automatic pointer dcl 3-37 set ref 121* 123* bj_pst based structure level 1 dcl 1-18 bj_pst_ptr 000116 automatic pointer dcl 1-16 set ref 101* 102 111 bj_pste based structure level 1 dcl 2-48 bj_pste_ptr 000120 automatic pointer dcl 2-45 set ref 111* 112 116 122 bj_storage_flush$up_to_rec_id 000020 constant entry external dcl 69 ref 123 bj_uid 000101 automatic bit(36) dcl 44 in procedure "bjm_flush_all" set ref 116* 118* bj_uid 4 based bit(36) level 2 in structure "bj_pste" dcl 2-48 in procedure "bjm_flush_all" ref 116 bjm_clean_up_needed 000102 automatic bit(1) initial dcl 44 set ref 44* 171 203* bjm_data_$bj_code 000036 external static fixed bin(35,0) dcl 4-19 set ref 144* 206* bjm_data_$bj_default_error_label 000040 external static label variable dcl 4-21 set ref 150* bjm_data_$bj_exit_err 000034 external static label variable dcl 4-17 set ref 106* 204* bjm_data_$bj_operation 000032 external static char(32) unaligned dcl 4-15 set ref 199 205* bjm_data_$bj_pst_ptr 000022 external static pointer dcl 79 ref 101 cleanup 000110 stack reference condition dcl 59 ref 94 code 000103 automatic fixed bin(35,0) dcl 44 set ref 90* cvn_p_correct_version parameter fixed bin(17,0) dcl 215 ref 212 221 cvn_p_error_to_use parameter fixed bin(35,0) dcl 215 set ref 212 221* cvn_p_given_version parameter fixed bin(17,0) dcl 215 ref 212 221 dm_error_$bj_bad_pst_version 000024 external static fixed bin(35,0) dcl 79 set ref 102* dm_error_$bj_recursive_invoc 000026 external static fixed bin(35,0) dcl 79 set ref 199* dm_system_data_$bj_max_n_journals 000030 external static fixed bin(17,0) dcl 79 ref 105 e 326 based structure array level 2 dcl 1-18 set ref 111 er_p_code parameter fixed bin(35,0) dcl 160 ref 157 journal_idx 000104 automatic fixed bin(17,0) dcl 44 set ref 108* 111* last_rec_id 000105 automatic bit(36) dcl 44 in procedure "bjm_flush_all" set ref 122* 123* last_rec_id 15 based bit(36) level 2 in structure "bj_pste" dcl 2-48 in procedure "bjm_flush_all" ref 122 max_n_journals 000106 automatic fixed bin(17,0) dcl 44 set ref 105* 108 sbdehv_p_check_for_recursive_invocation parameter bit(1) dcl 192 ref 180 199 sbdehv_p_error_exit parameter label variable dcl 192 ref 180 204 sbdehv_p_operation parameter char unaligned dcl 192 ref 180 205 version based fixed bin(17,0) level 2 in structure "bj_pste" dcl 2-48 in procedure "bjm_flush_all" ref 112 version based fixed bin(17,0) level 2 in structure "bj_pst" dcl 1-18 in procedure "bjm_flush_all" set ref 102* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_PPTE_VERSION_1 internal static fixed bin(17,0) initial dcl 3-14 BJ_PPT_VERSION_1 internal static fixed bin(17,0) initial dcl 3-13 bj_ppt based structure level 1 dcl 3-18 bj_ppt_ptr automatic pointer dcl 3-16 NAMES DECLARED BY EXPLICIT CONTEXT. BJ_TO_FLUSH 000142 constant label dcl 112 CHECK_VERSION_NUMERIC 000417 constant entry internal dcl 212 ref 102 CLEANUP 000313 constant entry internal dcl 168 ref 94 162 ERROR_RETURN 000275 constant entry internal dcl 157 ref 144 199 221 FINISH 000245 constant entry internal dcl 147 ref 137 174 FLUSH_LOOP 000124 constant label dcl 108 MAIN_RETURN 000233 constant label dcl 139 ref 164 NEXT 000225 constant label dcl 134 ref 129 NEXT_AFTER_ERR 000215 constant label dcl 131 ref 106 NONLOCAL_ERROR_EXIT 000234 constant label dcl 144 ref 96 96 SETUP_FOR_NON_STANDARD_EXIT 000032 constant label dcl 92 SET_BJM_DATA_ERROR_HANDLING_VALUES 000341 constant entry internal dcl 180 ref 96 150 bjm_flush_all 000023 constant entry external dcl 37 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 702 744 433 712 Length 1234 433 42 254 247 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_flush_all 120 external procedure is an external procedure. on unit on line 94 64 on unit FINISH 82 internal procedure is called by several nonquick procedures. ERROR_RETURN 64 internal procedure is called by several nonquick procedures. CLEANUP 70 internal procedure is called by several nonquick procedures. SET_BJM_DATA_ERROR_HANDLING_VALUES 72 internal procedure is called by several nonquick procedures. CHECK_VERSION_NUMERIC internal procedure shares stack frame of external procedure bjm_flush_all. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bjm_flush_all 000100 bj_oid bjm_flush_all 000101 bj_uid bjm_flush_all 000102 bjm_clean_up_needed bjm_flush_all 000103 code bjm_flush_all 000104 journal_idx bjm_flush_all 000105 last_rec_id bjm_flush_all 000106 max_n_journals bjm_flush_all 000116 bj_pst_ptr bjm_flush_all 000120 bj_pste_ptr bjm_flush_all 000122 bj_ppte_ptr bjm_flush_all THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext enable ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_cleanup_tables$handler bj_close_oid bj_oid_util$get_ptr bj_open_by_uid bj_storage_flush$up_to_rec_id THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_code bjm_data_$bj_default_error_label bjm_data_$bj_exit_err bjm_data_$bj_operation bjm_data_$bj_pst_ptr dm_error_$bj_bad_pst_version dm_error_$bj_recursive_invoc dm_system_data_$bj_max_n_journals LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 37 000022 44 000030 90 000031 94 000032 96 000054 101 000077 102 000103 105 000115 106 000120 108 000124 111 000133 112 000137 115 000142 116 000143 118 000145 120 000156 121 000160 122 000171 123 000174 124 000205 129 000214 131 000215 134 000225 137 000227 139 000233 144 000234 235 000243 147 000244 150 000252 153 000273 157 000274 162 000302 164 000307 168 000312 171 000320 174 000332 176 000337 180 000340 199 000354 203 000374 204 000377 205 000407 206 000415 208 000416 212 000417 221 000421 224 000432 ----------------------------------------------------------- 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