COMPILATION LISTING OF SEGMENT bj_pste_delete Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/17/85 1456.6 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* bj_pste_delete handles all removal of a before journal from the 10* BJ_PST. This is only done when no user on the system is using the 11* journal to be removed. It is assumed the BJ_PST is locked to this 12* process. 13**/ 14 15 /* HISTORY: 16*Written by A. Bensoussan, 03/23/83. 17*Modified: 18*04/06/83 by A. Bensoussan: added the entry point $after_recovery. 19*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 20* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 21*12/05/84 by M. Sharpe: to correct format and dcls; to use ERROR_RETURN; 22* to set/reset validation level around calls to file_manager_. 23*02/14/85 by Lee A. Newcomb: Added a description to that section; changed 24* ERROR_RETURN to be an int proc and added CHECK_VERSION_NUMERIC 25* proc; deleted the unused $adjust entry as there was no difference 26* with the main entry; FIXED to check several structure versions not 27* previously tested; minor format fixes. 28*02/28/85 by Lee A. Newcomb: Initialized myname to an indicator of invalidity. 29* Fixed to set dm_error_$bj_bad_pste_idx, not *_index. 30*03/05/85 by Steve Herbst: Replaced dm_log_ with dm_misc_util_$log. 31*04/05/85 by Lee A. Newcomb: Fixed to not call dm_pste_register$check_out_dead 32* during recovery. 33*05/10/85 by R. Michael Tague: Changed bj_uid check by reference to 34* dm_journal_seg to a call to dm_hcs_$validate_bj_uid instead. 35**/ 36 37 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 38 39 bj_pste_delete: 40 proc (p_bj_pste_ptr); 41 42 /* DECLARATIONS */ 43 44 /* Parameter */ 45 dcl p_bj_pste_ptr ptr parameter; 46 47 /* Automatic */ 48 dcl ( 49 dir_name char (168), 50 entry_name char (32), 51 file_not_found bit (1) init ("1"b), 52 bj_ix fixed bin init (0), 53 bj_uid bit (36) aligned init (""b), 54 code fixed bin (35) init (0), 55 my_access_class bit (72) aligned init (""b), 56 myname char (32) 57 init (BJ_PSTE_DELETE_MYNAME_NOT_SET), 58 pf_oid bit (36) aligned init (""b), 59 close_after_recovery bit (1) init (""b), 60 n_processes fixed bin init (-1), 61 n_txns fixed bin init (-1), 62 saved_level fixed bin init (-1), 63 current_ring fixed bin (3) init (-1), 64 1 my_header like bj_header 65 ) automatic; 66 67 /* Based */ 68 /* Builtin */ 69 dcl (addr, hbound, lbound, ptr, size, unspec) 70 builtin; 71 72 /* Condtion */ 73 dcl cleanup condition; 74 75 /* Constant */ 76 dcl ( 77 BJ_PSTE_DELETE char (32) init ("bj_pste_delete"), 78 BJ_PSTE_DELETE_AFTER_RECOVERY char (32) 79 init ("bj_pste_delete$after_recovery"), 80 BJ_PSTE_DELETE_MYNAME_NOT_SET char (32) 81 init ("bj_pste_delete myname not set") 82 ) internal static options (constant); 83 84 /* Entry */ 85 dcl ( 86 bj_ci_zero$get_bj_uid entry (bit (36) aligned) 87 returns (bit (36) aligned), 88 bj_ci_zero$put_header entry (bit (36) aligned, ptr, 89 fixed bin), 90 bj_flush_pnt entry (), 91 bj_pste_register$check_out_dead entry (ptr, bit (36) aligned), 92 cu_$level_get entry (fixed bin), 93 cu_$level_set entry (fixed bin), 94 dm_hcs_$free_journal entry (fixed bin, fixed bin (35)), 95 dm_hcs_$validate_bj_uid entry (bit (36) aligned, fixed bin) 96 returns (bit (1) aligned), 97 dm_misc_util_$log entry options (variable), 98 file_manager_$close entry (bit (36) aligned, 99 fixed bin (35)), 100 file_manager_$flush_consecutive_ci entry (bit (36) aligned, 101 fixed bin (24) uns, fixed bin (24) uns, 102 fixed bin (35)), 103 file_manager_$open entry (char (*), char (*), 104 bit (36) aligned, fixed bin (35)), 105 get_authorization_ entry returns (bit (72) aligned), 106 get_ring_ entry () returns (fixed bin (3)) 107 ) external; 108 109 /* External */ 110 dcl ( 111 bjm_data_$bj_pst_ptr ptr, 112 dm_data_$bj_txt_ptr ptr, 113 ( 114 dm_error_$bj_bad_pst_version, 115 dm_error_$bj_bad_pste_idx, 116 dm_error_$bj_bad_pste_ptr, 117 dm_error_$bj_bad_pste_version, 118 dm_error_$bj_bad_txt_version, 119 dm_error_$bj_logic_err, 120 dm_error_$bj_uids_dont_agree 121 ) fixed bin (35) 122 ) external static; 123 124 /* Static */ 125 126 /* END OF DECLARATIONS */ 127 128 /* bj_pste_delete: repeat for reader */ 129 /* proc (p_bj_pste_ptr); */ 130 131 myname = BJ_PSTE_DELETE; 132 close_after_recovery = "0"b; 133 goto COMMON; 134 135 136 bj_pste_delete$after_recovery: 137 entry (p_bj_pste_ptr); 138 139 myname = BJ_PSTE_DELETE_AFTER_RECOVERY; 140 close_after_recovery = "1"b; 141 goto COMMON; 142 143 144 COMMON: 145 bj_pste_ptr = p_bj_pste_ptr; 146 call CHECK_VERSION_NUMERIC (bj_pste.version, BJ_PSTE_VERSION_2, 147 dm_error_$bj_bad_pste_version); 148 bj_pst_ptr = bjm_data_$bj_pst_ptr; 149 call CHECK_VERSION_NUMERIC (bj_pst.version, BJ_PST_VERSION_1, 150 dm_error_$bj_bad_pst_version); 151 bj_txt_ptr = dm_data_$bj_txt_ptr; 152 call CHECK_VERSION_NUMERIC (bj_txt.version, BJ_TXT_VERSION_1, 153 dm_error_$bj_bad_txt_version); 154 bj_pn_table_ptr = ptr (bj_pst_ptr, bj_pst.pn_table_offset); 155 /* no version */ 156 157 bj_ix = bj_pste.bj_ix; 158 my_access_class = get_authorization_ (); 159 160 current_ring = get_ring_ (); 161 call cu_$level_get (saved_level); 162 on cleanup call cu_$level_set (saved_level); 163 164 165 if bj_ix < 1 | bj_ix > bj_pst.max_n_entries then 166 call ERROR_RETURN (dm_error_$bj_bad_pste_idx); 167 168 if bj_pste_ptr ^= addr (bj_pst.e (bj_ix)) then 169 call ERROR_RETURN (dm_error_$bj_bad_pste_ptr); 170 171 if ^dm_hcs_$validate_bj_uid (bj_pste.bj_uid, bj_ix) then 172 call ERROR_RETURN (dm_error_$bj_uids_dont_agree); 173 174 175 if ^close_after_recovery then /* normal operation */ 176 call bj_pste_register$check_out_dead (bj_pste_ptr, (36)"0"b); 177 178 n_processes = bj_pste.n_processes; 179 n_txns = N_TXNS (); 180 181 pf_oid = OPEN_FILE (file_not_found); 182 183 if pf_oid = "0"b & file_not_found & n_processes = 0 & n_txns = 0 then do; 184 call FREE_PSTE (); 185 call FREE_HCSE (); 186 call dm_misc_util_$log (LOG_SV, 0, myname, 187 "Journal ^a>^a was not found.", dir_name, entry_name); 188 end; 189 190 if pf_oid = "0"b & file_not_found = "0"b then 191 call dm_misc_util_$log (LOG_SV, 0, myname, 192 "Journal ^a>^a could not be opened by fm.", dir_name, entry_name); 193 194 if pf_oid ^= "0"b & n_processes = 0 & n_txns = 0 then do; 195 call UPDATE_HEADER ("0"b); 196 call FREE_PSTE (); 197 call FREE_HCSE (); 198 end; 199 200 if pf_oid ^= "0"b & n_processes = 0 & n_txns > 0 & close_after_recovery 201 then do; 202 call UPDATE_HEADER ("1"b); 203 call FREE_PSTE (); 204 call FREE_HCSE (); 205 end; 206 207 if pf_oid ^= "0"b then do; 208 call cu_$level_set ((current_ring)); 209 call file_manager_$close (pf_oid, code); 210 call cu_$level_set (saved_level); 211 if code ^= 0 then 212 call dm_misc_util_$log (LOG_SV, code, myname, 213 " code returned by fm_$close"); 214 end; 215 216 /* end bj_pste_delete; */ 217 218 MAIN_RETURN: 219 return; 220 221 ERROR_RETURN: 222 proc (er_p_code); 223 224 dcl er_p_code fixed bin (35) parameter; 225 226 call dm_misc_util_$log (LOG_SV, er_p_code, myname); 227 228 goto MAIN_RETURN; 229 230 end ERROR_RETURN; 231 232 CHECK_VERSION_NUMERIC: 233 proc (cvn_p_given_version, cvn_p_correct_version, cvn_p_error_to_use); 234 235 /* The error code to use is passed since we use this to check several */ 236 /* structures with numeric versions. It is hoped newer versions of */ 237 /* these structures will be changed to use char (8) versions. */ 238 239 dcl ( 240 cvn_p_given_version fixed bin, 241 cvn_p_correct_version fixed bin, 242 cvn_p_error_to_use fixed bin (35) 243 ) parameter; 244 245 if cvn_p_given_version ^= cvn_p_correct_version then 246 call ERROR_RETURN (cvn_p_error_to_use); 247 248 end CHECK_VERSION_NUMERIC; 249 250 UPDATE_HEADER: 251 proc (active_sw); 252 253 dcl active_sw bit (1); 254 dcl code fixed bin (35); 255 256 my_header = bj_pste; 257 my_header.active = active_sw; 258 259 call bj_ci_zero$put_header (pf_oid, addr (my_header), size (my_header)); 260 call cu_$level_set ((current_ring)); 261 call file_manager_$flush_consecutive_ci (pf_oid, 0, 1, code); 262 call cu_$level_set (saved_level); 263 if code ^= 0 then 264 call dm_misc_util_$log (LOG_SV, code, myname, "UPDATE_HEADER"); 265 266 return; 267 end UPDATE_HEADER; 268 269 270 271 FREE_PSTE: 272 proc (); 273 274 dcl highest_idx fixed bin; 275 276 bj_pste.version = 0; 277 278 bj_pst.n_entries_used = bj_pst.n_entries_used - 1; 279 280 if bj_pst.highest_ix_used = bj_ix then 281 do highest_idx = bj_ix by -1 to 1 282 while (bj_pst.e (highest_idx).version = 0); 283 bj_pst.highest_ix_used = highest_idx - 1; 284 end; 285 286 287 bj_pn_table (bj_ix).bj_uid = "0"b; 288 bj_pn_table (bj_ix).entry = ""; 289 bj_pn_table (bj_ix).dir = ""; 290 291 unspec (bj_pste) = "0"b; 292 bj_pste.bj_ix = bj_ix; 293 bj_pste.append_state.current_operation = ""; 294 295 call bj_flush_pnt (); 296 297 return; 298 end FREE_PSTE; 299 300 301 302 303 304 FREE_HCSE: 305 proc (); 306 307 dcl code fixed bin (35); 308 309 call dm_hcs_$free_journal ((bj_ix), code); /* bj_ix passed by value because bug in dm_hcs_ */ 310 if code ^= 0 then 311 call dm_misc_util_$log (LOG_SV, code, myname, "FREE_HCSE"); 312 313 return; 314 end FREE_HCSE; 315 316 OPEN_FILE: 317 proc (deleted_sw) returns (bit (36) aligned); 318 319 dcl deleted_sw bit (1); 320 321 dcl file_oid bit (36) aligned; 322 dcl ec fixed bin (35); 323 324 dcl error_table_$noentry fixed bin (35) ext; 325 dcl error_table_$no_dir fixed bin (35) ext; 326 327 328 329 deleted_sw = "0"b; 330 ec = 0; 331 332 dir_name = bj_pn_table (bj_ix).dir; 333 entry_name = bj_pn_table (bj_ix).entry; 334 bj_uid = bj_pn_table (bj_ix).bj_uid; 335 336 337 call cu_$level_set ((current_ring)); 338 call file_manager_$open (dir_name, entry_name, file_oid, ec); 339 call cu_$level_set (saved_level); 340 341 if file_oid = "0"b then 342 if ec = error_table_$noentry | ec = error_table_$no_dir 343 /* no_dir and noaccess have same value */ 344 then 345 deleted_sw = "1"b; 346 else ; 347 348 else if bj_uid ^= bj_ci_zero$get_bj_uid (file_oid) then do; 349 call cu_$level_set ((current_ring)); 350 call file_manager_$close (file_oid, ec); 351 call cu_$level_set (saved_level); 352 deleted_sw = "1"b; 353 file_oid = (36)"0"b; 354 end; 355 356 else ; 357 358 return (file_oid); 359 360 end OPEN_FILE; 361 362 N_TXNS: 363 proc returns (fixed bin); 364 365 dcl bj_uid bit (36) aligned; 366 dcl n_trans fixed bin; 367 dcl entry_idx fixed bin; 368 369 370 371 bj_uid = bj_pste.bj_uid; 372 n_trans = 0; 373 374 375 do entry_idx = lbound (bj_txt.entry, 1) to hbound (bj_txt.entry, 1); 376 377 bj_txte_ptr = addr (bj_txt.entry (entry_idx)); 378 379 if bj_txte.tid ^= "0"b then 380 if bj_txte.bj_uid = bj_uid then 381 if bj_txte.last_completed_operation ^= COMMITTED then 382 if bj_txte.last_completed_operation ^= ABORTED then 383 n_trans = n_trans + 1; 384 385 end; 386 387 388 return (n_trans); 389 390 391 end N_TXNS; 392 393 394 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 */ 395 396 397 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 */ 398 399 400 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 */ 401 402 403 4 1 /* BEGIN INCLUDE FILE: dm_bj_header.incl.pl1 */ 4 2 /* 4 3*Currently a BJ header (CI0 of the BJ PF) is just like a bj_pst entry for the journal. 4 4* 4 5*Written by Andre Bensoussan June/July 1982 4 6*Modified: 4 7*09/29/82 by Lee A. Newcomb: To make force alignment appropriately. 4 8**/ 4 9 /* format: style4,indattr,idind33,^indcomtxt */ 4 10 4 11 dcl BJ_UPDATE_FREQUENCY fixed bin internal static init (10); 4 12 4 13 dcl bj_header_ptr ptr; 4 14 4 15 dcl 1 bj_header based (bj_header_ptr) aligned like bj_pste; 4 16 4 17 /* END INCLUDE FILE: dm_bj_header.incl.pl1 */ 404 405 406 5 1 /* BEGIN INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 5 2 5 3 /* format: ^indcom */ 5 4 5 5 /* DESCRIPTION: 5 6* These are the severity codes used by the dms daemon when calling its logger. 5 7* The severity is ranked thusly: 5 8* 5 9* severity log write situation 5 10* -------- --- ----- --------- 5 11* 0 no yes standard output, query, etc. 5 12* 1 yes yes fatal error, terminate dms daemon. 5 13* 2 yes yes nonfatal error. 5 14* 3 yes yes informative message. 5 15* 4 yes no log information only. 5 16**/ 5 17 5 18 /* HISTORY: 5 19* 5 20*Written by M. Pandolf, 10/06/82. 5 21*Modified: 5 22*12/10/84 by R. Michael Tague: Rename and reformat description/history. 5 23*01/13/85 by Lee A. Newcomb: Renamed to dm_log_sv_codes from 5 24* dm_daemon_sv_codes as the severity codes for the DM log are not 5 25* restrained to the DM Daemon's use. 5 26*01/24/85 by Lee A. Newcomb: Fixed to say dm_log_sv_codes.incl.pl1 in the 5 27* BEGIN and END INCLUDE comments, instead of dm_daemon_sv_codes.==. 5 28**/ 5 29 5 30 /* format: style5 */ 5 31 5 32 dcl (PRINT_SV, QUERY_SV) fixed bin internal static 5 33 options (constant) init (0); 5 34 dcl (CRASH_SV, FATAL_SV) fixed bin internal static 5 35 options (constant) init (1); 5 36 dcl ERROR_SV fixed bin internal static 5 37 options (constant) init (2); 5 38 dcl INFORM_SV fixed bin internal static 5 39 options (constant) init (3); 5 40 dcl LOG_SV fixed bin internal static 5 41 options (constant) init (4); 5 42 5 43 /* END INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 407 408 409 6 1 /* BEGIN INCLUDE FILE: dm_bj_txt.incl.pl1 */ 6 2 /* 6 3*dm_bj_txt - before journal per-system transaction table. 6 4* 6 5*Designed by A. Bensoussan 6 6*Written by M. Pandolf 06/02/82 6 7*Modified: 6 8*10/01/82 by Lee A. Newcomb: To use dm_system_data_ for dimension attributes 6 9* and specify alignment on level one. 6 10*08feb83 by M. Pandolf: To restructure the TXT and TXTE. 6 11*30mar83 by M. Pandolf: To add last_completed_operation and ok_to_write. 6 12**/ 6 13 /* format: style4,indattr,idind33,^indcomtxt */ 6 14 6 15 dcl BJ_TXT_VERSION_1 fixed bin int static options (constant) init (1); 6 16 6 17 dcl bj_txt_ptr ptr; /* pointer to transaction table */ 6 18 dcl bj_txte_ptr ptr; /* pointer to transaction table element */ 6 19 6 20 dcl 1 bj_txt aligned based (bj_txt_ptr), /* transaction table */ 6 21 2 version fixed bin, /* should be BJ_TXT_VERSION_1 */ 6 22 2 max_n_entries fixed bin, 6 23 2 n_entries_used fixed bin, /* assumed contiguous */ 6 24 2 pad_header_to_32_words bit (36) dim (29), /* to mod32 align bj_txt.entry */ 6 25 2 entry dim (dm_system_data_$max_n_transactions refer (bj_txt.max_n_entries)) 6 26 like bj_txte; 6 27 6 28 dcl 1 bj_txte based (bj_txte_ptr) aligned, /* single entry, must be mod32 word aligned */ 6 29 2 tid bit (36), /* transaction id if this or last txn */ 6 30 2 bj_uid bit (36), /* UID of before journal chosen at begin mark */ 6 31 2 entry_state aligned, 6 32 3 last_completed_operation char (4), /* to prevent multiple abort and commit */ 6 33 3 ok_to_write bit (1), /* basically validates using this entry */ 6 34 2 owner_info aligned, /* info about creation of txte */ 6 35 3 process_id bit (36), /* of process that wrote begin mark */ 6 36 2 operator_info aligned, /* of process that is currently using this txte */ 6 37 3 process_id bit (36), /* of process that shall write subsequent marks */ 6 38 3 ppte_ptr ptr, /* pointer to PPTE for this transaction */ 6 39 3 bj_oid bit (36), /* before journal opening ID for operator */ 6 40 2 records_info aligned, /* grouped to be saved and restored as one unit */ 6 41 3 curr_checkpoint_rec_id bit (36), /* ident of checkpoint record if doing a rollback, */ 6 42 /* else, this value must be zero. */ 6 43 3 first_bj_rec_id bit (36), /* ident of first mark for this transaction */ 6 44 3 last_bj_rec_id bit (36), /* ident of current mark for this transaction */ 6 45 3 n_rec_written fixed bin (35), /* count of marks written for this transaction */ 6 46 3 n_bytes_written fixed bin (35), /* count of total bytes written to journal */ 6 47 3 last_fm_postcommit_handler_rec_id 6 48 bit (36), /* ident of last special handler in list */ 6 49 2 append_state aligned, /* the first two members define the state of this */ 6 50 3 current_operation char (4), /* transaction and its interaction with bj_storage: */ 6 51 3 pending_bj_rec_id bit (36), /* operation rec_id state */ 6 52 /* *null* XXX quiesed */ 6 53 /* ^null "0"b write pending */ 6 54 /* ^null ^"0"b write completed, needs flushing */ 6 55 /* */ 6 56 3 pending_n_rec_written fixed bin (35), /* copy to n_rec_written before flush */ 6 57 3 pending_n_bytes_written fixed bin (35), /* copy to n_bytes_written before flush */ 6 58 2 pad_entry_to_32_words bit (36) dim (13); /* make any part of table 32 words long */ 6 59 6 60 /* END INCLUDE FILE: dm_bj_txt_ptr */ 410 411 412 7 1 /* format: style4,indattr,idind33,^indcomtxt */ 7 2 7 3 /* BEGIN INCLUDE FILE: dm_bj_records.incl.pl1 */ 7 4 /* 7 5*Before journal records - images and marks 7 6* 7 7*Designed by Andre Bensoussan 02/03/82 7 8*Written by Mike Pandolf 07/07/82 7 9*Modified: 7 10*10/01/82 by Lee A. Newcomb: To add n_txn to all records so rollback after 7 11* crash knows how many transactions were active at crash time. 7 12*15feb83 by M. Pandolf: To add fm_handler_rec for both rollback and postcommit 7 13* handler used exclusively by file_manager_, add BEGIN_COMMIT mark, 7 14* and add PREFORM_BEGIN mark (for housekeeping, never written). 7 15*05apr83 by M. Pandolf to add BEGIN_MARK for bj_txte.last_completed_operation 7 16**/ 7 17 7 18 7 19 dcl bj_rec_hdr_ptr ptr; /* pointer to various bj records */ 7 20 7 21 dcl 1 bj_rec_hdr aligned based (bj_rec_hdr_ptr), 7 22 2 type char (4), /* see types below */ 7 23 2 tid bit (36), /* transaction id for this record */ 7 24 2 process_id bit (36), /* of process initiating this transaction */ 7 25 2 prev_rec_id bit (36), /* of record in this transaction */ 7 26 2 prev_rec_byte_size fixed bin (24), /* of record in this transaction */ 7 27 2 tx_rec_no fixed bin (35), /* number of this record in transaction list */ 7 28 2 n_txn fixed bin; /* number of active txn's in the BJ containing this txn */ 7 29 /* with at least one record written in the BJ. This is */ 7 30 /* used for rollback after crash */ 7 31 /* N.B. commits and abort marks do not count themselves */ 7 32 7 33 /* before journal records for the various record types */ 7 34 7 35 dcl 1 bj_committed_rec aligned like bj_rec_hdr based (bj_rec_hdr_ptr); 7 36 7 37 dcl 1 bj_begin_commit_rec aligned like bj_rec_hdr based (bj_rec_hdr_ptr); 7 38 7 39 dcl 1 bj_aborted_rec aligned like bj_rec_hdr based (bj_rec_hdr_ptr); 7 40 7 41 dcl 1 bj_rolled_back_rec aligned based (bj_rec_hdr_ptr), 7 42 2 header like bj_rec_hdr, 7 43 2 checkpoint_no fixed bin (35), 7 44 2 last_rolled_back_rec_id bit (36); 7 45 7 46 dcl 1 bj_rollback_handler_rec aligned based (bj_rec_hdr_ptr), 7 47 2 header like bj_rec_hdr, 7 48 2 name_len fixed bin (24), 7 49 2 info_len fixed bin (24), 7 50 2 proc_name char (bj_rollback_name_len refer (bj_rollback_handler_rec.name_len)), 7 51 2 info_bits bit (bj_rollback_info_len refer (bj_rollback_handler_rec.info_len)); 7 52 7 53 /* dm_bj_records.incl.pl1 CONTINUED NEXT PAGE */ 7 54 7 55 /* dm_bj_records.incl.pl1 CONTINUATION FROM PREVIOUS PAGE */ 7 56 7 57 dcl 1 bj_before_image aligned based (bj_rec_hdr_ptr), 7 58 2 header like bj_rec_hdr, 7 59 2 fm_uid bit (36), 7 60 2 fm_oid bit (36), 7 61 2 ci_no fixed bin (35), 7 62 2 n_parts fixed bin (17), 7 63 2 image_len fixed bin (24), 7 64 2 part dim (bj_before_image_n_parts refer (bj_before_image.n_parts)), 7 65 3 byte_offset fixed bin (24), 7 66 3 byte_length fixed bin (24), 7 67 2 image char (bj_before_image_len refer (bj_before_image.image_len)); 7 68 7 69 dcl 1 bj_fm_handler_rec aligned based (bj_rec_hdr_ptr), 7 70 2 header like bj_rec_hdr, 7 71 2 fm_uid bit (36), 7 72 2 fm_oid bit (36), 7 73 2 prev_fm_handler_rec_id bit (36), 7 74 2 info_len fixed bin, 7 75 2 info_bytes char (bj_fm_handler_info_len refer (bj_fm_handler_rec.info_len)); 7 76 7 77 /* extent definers */ 7 78 7 79 dcl bj_rollback_name_len fixed bin (24); 7 80 dcl bj_rollback_info_len fixed bin (24); 7 81 dcl bj_before_image_n_parts fixed bin; 7 82 dcl bj_before_image_len fixed bin (24); 7 83 dcl bj_fm_handler_info_len fixed bin (24); 7 84 7 85 /* record type identifiers */ 7 86 7 87 dcl 1 BJ_RECORD_TYPE int static options (constant) aligned, 7 88 ( 2 BEGIN_COMMIT init ("bcom"), 7 89 2 PERFORM_COMMIT init ("pcom"), 7 90 2 COMMITTED init ("comm"), 7 91 2 ABORTED init ("abor"), 7 92 2 ROLLED_BACK init ("roll"), 7 93 2 HANDLER init ("hand"), 7 94 2 FM_ROLLBACK_HANDLER init ("fmrb"), 7 95 2 FM_POSTCOMMIT_HANDLER init ("fmpc"), 7 96 2 BEGIN_MARK init ("begi"), 7 97 2 BEFORE_IMAGE init ("befo")) char (4); 7 98 7 99 /* END INCLUDE FILE: dm_bj_records.incl.pl1 */ 413 414 415 416 end bj_pste_delete; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/17/85 1328.6 bj_pste_delete.pl1 >spec>online>pbf-05/17/85>bj_pste_delete.pl1 395 1 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 398 2 04/05/85 0924.4 dm_bj_pste.incl.pl1 >ldd>include>dm_bj_pste.incl.pl1 401 3 01/07/85 0857.4 dm_bj_pn_table.incl.pl1 >ldd>include>dm_bj_pn_table.incl.pl1 404 4 01/07/85 0857.4 dm_bj_header.incl.pl1 >ldd>include>dm_bj_header.incl.pl1 407 5 03/06/85 1031.1 dm_log_sv_codes.incl.pl1 >ldd>include>dm_log_sv_codes.incl.pl1 410 6 01/07/85 0858.0 dm_bj_txt.incl.pl1 >ldd>include>dm_bj_txt.incl.pl1 413 7 01/07/85 0857.7 dm_bj_records.incl.pl1 >ldd>include>dm_bj_records.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. ABORTED 3 000000 constant char(4) initial level 2 dcl 7-87 ref 379 BJ_PSTE_DELETE 000033 constant char(32) initial unaligned dcl 76 ref 131 BJ_PSTE_DELETE_AFTER_RECOVERY 000023 constant char(32) initial unaligned dcl 76 ref 139 BJ_PSTE_DELETE_MYNAME_NOT_SET 000013 constant char(32) initial unaligned dcl 76 ref 48 BJ_PSTE_VERSION_2 000063 constant fixed bin(17,0) initial dcl 2-42 set ref 146* BJ_PST_VERSION_1 000064 constant fixed bin(17,0) initial dcl 1-14 set ref 149* BJ_RECORD_TYPE 000000 constant structure level 1 dcl 7-87 BJ_TXT_VERSION_1 000064 constant fixed bin(17,0) initial dcl 6-15 set ref 152* COMMITTED 2 000000 constant char(4) initial level 2 dcl 7-87 ref 379 LOG_SV 000012 constant fixed bin(17,0) initial dcl 5-40 set ref 186* 190* 211* 226* 263* 310* active 7 000206 automatic bit(1) level 2 dcl 48 set ref 257* active_sw parameter bit(1) unaligned dcl 253 ref 250 257 addr builtin function dcl 69 ref 168 259 259 377 append_state 40 based structure level 2 dcl 2-48 bj_ci_zero$get_bj_uid 000010 constant entry external dcl 85 ref 348 bj_ci_zero$put_header 000012 constant entry external dcl 85 ref 259 bj_flush_pnt 000014 constant entry external dcl 85 ref 295 bj_header based structure level 1 dcl 4-15 bj_ix 1 based fixed bin(17,0) level 2 in structure "bj_pste" dcl 2-48 in procedure "bj_pste_delete" set ref 157 292* bj_ix 000163 automatic fixed bin(17,0) initial dcl 48 in procedure "bj_pste_delete" set ref 48* 157* 165 165 168 171* 280 280 287 288 289 292 309 332 333 334 bj_path_to_uid_relation 1 based structure array level 2 dcl 3-15 bj_pn_table based structure level 1 dcl 3-15 bj_pn_table_ptr 000320 automatic pointer dcl 3-13 set ref 154* 287 288 289 332 333 334 bj_pst based structure level 1 dcl 1-18 bj_pst_ptr 000314 automatic pointer dcl 1-16 set ref 148* 149 154 154 165 168 278 278 280 280 283 bj_pste based structure level 1 dcl 2-48 set ref 256 291* bj_pste_ptr 000316 automatic pointer dcl 2-45 set ref 144* 146 157 168 171 175* 178 256 276 291 292 293 371 bj_pste_register$check_out_dead 000016 constant entry external dcl 85 ref 175 bj_rec_hdr based structure level 1 dcl 7-21 bj_txt based structure level 1 dcl 6-20 bj_txt_ptr 000322 automatic pointer dcl 6-17 set ref 151* 152 375 375 377 bj_txte based structure level 1 dcl 6-28 bj_txte_ptr 000324 automatic pointer dcl 6-18 set ref 377* 379 379 379 379 bj_uid 4 based bit(36) level 2 in structure "bj_pste" dcl 2-48 in procedure "bj_pste_delete" set ref 171* 371 bj_uid 1 based bit(36) level 2 in structure "bj_txte" dcl 6-28 in procedure "bj_pste_delete" ref 379 bj_uid 63 based bit(36) array level 3 in structure "bj_pn_table" dcl 3-15 in procedure "bj_pste_delete" set ref 287* 334 bj_uid 000164 automatic bit(36) initial dcl 48 in procedure "bj_pste_delete" set ref 48* 334* 348 bj_uid 000410 automatic bit(36) dcl 365 in procedure "N_TXNS" set ref 371* 379 bjm_data_$bj_pst_ptr 000044 external static pointer dcl 110 ref 148 cleanup 000306 stack reference condition dcl 73 ref 162 close_after_recovery 000201 automatic bit(1) initial unaligned dcl 48 set ref 48* 132* 140* 175 200 code 000350 automatic fixed bin(35,0) dcl 254 in procedure "UPDATE_HEADER" set ref 261* 263 263* code 000165 automatic fixed bin(35,0) initial dcl 48 in procedure "bj_pste_delete" set ref 48* 209* 211 211* code 000370 automatic fixed bin(35,0) dcl 307 in procedure "FREE_HCSE" set ref 309* 310 310* cu_$level_get 000020 constant entry external dcl 85 ref 161 cu_$level_set 000022 constant entry external dcl 85 ref 162 208 210 260 262 337 339 349 351 current_operation 40 based char(4) level 3 dcl 2-48 set ref 293* current_ring 000205 automatic fixed bin(3,0) initial dcl 48 set ref 48* 160* 208 260 337 349 cvn_p_correct_version parameter fixed bin(17,0) dcl 239 ref 232 245 cvn_p_error_to_use parameter fixed bin(35,0) dcl 239 set ref 232 245* cvn_p_given_version parameter fixed bin(17,0) dcl 239 ref 232 245 deleted_sw parameter bit(1) unaligned dcl 319 set ref 316 329* 341* 352* dir 1 based char(168) array level 3 dcl 3-15 set ref 289* 332 dir_name 000100 automatic char(168) unaligned dcl 48 set ref 186* 190* 332* 338* dm_data_$bj_txt_ptr 000046 external static pointer dcl 110 ref 151 dm_error_$bj_bad_pst_version 000050 external static fixed bin(35,0) dcl 110 set ref 149* dm_error_$bj_bad_pste_idx 000052 external static fixed bin(35,0) dcl 110 set ref 165* dm_error_$bj_bad_pste_ptr 000054 external static fixed bin(35,0) dcl 110 set ref 168* dm_error_$bj_bad_pste_version 000056 external static fixed bin(35,0) dcl 110 set ref 146* dm_error_$bj_bad_txt_version 000060 external static fixed bin(35,0) dcl 110 set ref 152* dm_error_$bj_uids_dont_agree 000062 external static fixed bin(35,0) dcl 110 set ref 171* dm_hcs_$free_journal 000024 constant entry external dcl 85 ref 309 dm_hcs_$validate_bj_uid 000026 constant entry external dcl 85 ref 171 dm_misc_util_$log 000030 constant entry external dcl 85 ref 186 190 211 226 263 310 e 326 based structure array level 2 dcl 1-18 set ref 168 ec 000401 automatic fixed bin(35,0) dcl 322 set ref 330* 338* 341 341 350* entry 53 based char(32) array level 3 in structure "bj_pn_table" dcl 3-15 in procedure "bj_pste_delete" set ref 288* 333 entry 40 based structure array level 2 in structure "bj_txt" dcl 6-20 in procedure "bj_pste_delete" set ref 375 375 377 entry_idx 000412 automatic fixed bin(17,0) dcl 367 set ref 375* 377* entry_name 000152 automatic char(32) unaligned dcl 48 set ref 186* 190* 333* 338* entry_state 2 based structure level 2 dcl 6-28 er_p_code parameter fixed bin(35,0) dcl 224 set ref 221 226* error_table_$no_dir 000066 external static fixed bin(35,0) dcl 325 ref 341 error_table_$noentry 000064 external static fixed bin(35,0) dcl 324 ref 341 file_manager_$close 000032 constant entry external dcl 85 ref 209 350 file_manager_$flush_consecutive_ci 000034 constant entry external dcl 85 ref 261 file_manager_$open 000036 constant entry external dcl 85 ref 338 file_not_found 000162 automatic bit(1) initial unaligned dcl 48 set ref 48* 181* 183 190 file_oid 000400 automatic bit(36) dcl 321 set ref 338* 341 348* 350* 353* 358 get_authorization_ 000040 constant entry external dcl 85 ref 158 get_ring_ 000042 constant entry external dcl 85 ref 160 hbound builtin function dcl 69 ref 375 highest_idx 000360 automatic fixed bin(17,0) dcl 274 set ref 280* 280* 283* highest_ix_used 10 based fixed bin(17,0) level 2 dcl 1-18 set ref 280 283* last_completed_operation 2 based char(4) level 3 dcl 6-28 ref 379 379 lbound builtin function dcl 69 ref 375 max_n_entries 1 based fixed bin(17,0) level 2 in structure "bj_txt" dcl 6-20 in procedure "bj_pste_delete" ref 375 max_n_entries 6 based fixed bin(17,0) level 2 in structure "bj_pst" dcl 1-18 in procedure "bj_pste_delete" ref 165 my_access_class 000166 automatic bit(72) initial dcl 48 set ref 48* 158* my_header 000206 automatic structure level 1 unaligned dcl 48 set ref 256* 259 259 259 259 myname 000170 automatic char(32) initial unaligned dcl 48 set ref 48* 131* 139* 186* 190* 211* 226* 263* 310* n_entries_used 7 based fixed bin(17,0) level 2 dcl 1-18 set ref 278* 278 n_processes 000202 automatic fixed bin(17,0) initial dcl 48 in procedure "bj_pste_delete" set ref 48* 178* 183 194 200 n_processes 16 based fixed bin(17,0) level 2 in structure "bj_pste" dcl 2-48 in procedure "bj_pste_delete" set ref 178 n_trans 000411 automatic fixed bin(17,0) dcl 366 set ref 372* 379* 379 388 n_txns 000203 automatic fixed bin(17,0) initial dcl 48 set ref 48* 179* 183 194 200 p_bj_pste_ptr parameter pointer dcl 45 ref 39 136 144 pf_oid 000200 automatic bit(36) initial dcl 48 set ref 48* 181* 183 190 194 200 207 209* 259* 261* pn_table_offset 11 based fixed bin(18,0) level 2 unsigned dcl 1-18 ref 154 ptr builtin function dcl 69 ref 154 saved_level 000204 automatic fixed bin(17,0) initial dcl 48 set ref 48* 161* 162* 210* 262* 339* 351* size builtin function dcl 69 ref 259 259 tid based bit(36) level 2 dcl 6-28 ref 379 unspec builtin function dcl 69 set ref 291* version based fixed bin(17,0) level 2 in structure "bj_pste" dcl 2-48 in procedure "bj_pste_delete" set ref 146* 276* version 326 based fixed bin(17,0) array level 3 in structure "bj_pst" dcl 1-18 in procedure "bj_pste_delete" set ref 280 version based fixed bin(17,0) level 2 in structure "bj_txt" dcl 6-20 in procedure "bj_pste_delete" set ref 152* version based fixed bin(17,0) level 2 in structure "bj_pst" dcl 1-18 in procedure "bj_pste_delete" set ref 149* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_UPDATE_FREQUENCY internal static fixed bin(17,0) initial dcl 4-11 CRASH_SV internal static fixed bin(17,0) initial dcl 5-34 ERROR_SV internal static fixed bin(17,0) initial dcl 5-36 FATAL_SV internal static fixed bin(17,0) initial dcl 5-34 INFORM_SV internal static fixed bin(17,0) initial dcl 5-38 PRINT_SV internal static fixed bin(17,0) initial dcl 5-32 QUERY_SV internal static fixed bin(17,0) initial dcl 5-32 bj_aborted_rec based structure level 1 dcl 7-39 bj_before_image based structure level 1 dcl 7-57 bj_before_image_len automatic fixed bin(24,0) dcl 7-82 bj_before_image_n_parts automatic fixed bin(17,0) dcl 7-81 bj_begin_commit_rec based structure level 1 dcl 7-37 bj_committed_rec based structure level 1 dcl 7-35 bj_fm_handler_info_len automatic fixed bin(24,0) dcl 7-83 bj_fm_handler_rec based structure level 1 dcl 7-69 bj_header_ptr automatic pointer dcl 4-13 bj_rec_hdr_ptr automatic pointer dcl 7-19 bj_rollback_handler_rec based structure level 1 dcl 7-46 bj_rollback_info_len automatic fixed bin(24,0) dcl 7-80 bj_rollback_name_len automatic fixed bin(24,0) dcl 7-79 bj_rolled_back_rec based structure level 1 dcl 7-41 dm_error_$bj_logic_err external static fixed bin(35,0) dcl 110 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION_NUMERIC 000742 constant entry internal dcl 232 ref 146 149 152 COMMON 000212 constant label dcl 144 ref 133 141 ERROR_RETURN 000715 constant entry internal dcl 221 ref 165 168 171 245 FREE_HCSE 001342 constant entry internal dcl 304 ref 185 197 204 FREE_PSTE 001257 constant entry internal dcl 271 ref 184 196 203 MAIN_RETURN 000714 constant label dcl 218 ref 228 N_TXNS 001601 constant entry internal dcl 362 ref 179 OPEN_FILE 001412 constant entry internal dcl 316 ref 181 UPDATE_HEADER 000756 constant entry internal dcl 250 ref 195 202 bj_pste_delete 000161 constant entry external dcl 39 bj_pste_delete$after_recovery 000176 constant entry external dcl 136 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2234 2324 1662 2244 Length 2702 1662 70 342 352 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_pste_delete 418 external procedure is an external procedure. on unit on line 162 68 on unit ERROR_RETURN internal procedure shares stack frame of external procedure bj_pste_delete. CHECK_VERSION_NUMERIC internal procedure shares stack frame of external procedure bj_pste_delete. UPDATE_HEADER internal procedure shares stack frame of external procedure bj_pste_delete. FREE_PSTE internal procedure shares stack frame of external procedure bj_pste_delete. FREE_HCSE internal procedure shares stack frame of external procedure bj_pste_delete. OPEN_FILE internal procedure shares stack frame of external procedure bj_pste_delete. N_TXNS internal procedure shares stack frame of external procedure bj_pste_delete. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_pste_delete 000100 dir_name bj_pste_delete 000152 entry_name bj_pste_delete 000162 file_not_found bj_pste_delete 000163 bj_ix bj_pste_delete 000164 bj_uid bj_pste_delete 000165 code bj_pste_delete 000166 my_access_class bj_pste_delete 000170 myname bj_pste_delete 000200 pf_oid bj_pste_delete 000201 close_after_recovery bj_pste_delete 000202 n_processes bj_pste_delete 000203 n_txns bj_pste_delete 000204 saved_level bj_pste_delete 000205 current_ring bj_pste_delete 000206 my_header bj_pste_delete 000314 bj_pst_ptr bj_pste_delete 000316 bj_pste_ptr bj_pste_delete 000320 bj_pn_table_ptr bj_pste_delete 000322 bj_txt_ptr bj_pste_delete 000324 bj_txte_ptr bj_pste_delete 000350 code UPDATE_HEADER 000360 highest_idx FREE_PSTE 000370 code FREE_HCSE 000400 file_oid OPEN_FILE 000401 ec OPEN_FILE 000410 bj_uid N_TXNS 000411 n_trans N_TXNS 000412 entry_idx N_TXNS THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_ci_zero$get_bj_uid bj_ci_zero$put_header bj_flush_pnt bj_pste_register$check_out_dead cu_$level_get cu_$level_set dm_hcs_$free_journal dm_hcs_$validate_bj_uid dm_misc_util_$log file_manager_$close file_manager_$flush_consecutive_ci file_manager_$open get_authorization_ get_ring_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_pst_ptr dm_data_$bj_txt_ptr dm_error_$bj_bad_pst_version dm_error_$bj_bad_pste_idx dm_error_$bj_bad_pste_ptr dm_error_$bj_bad_pste_version dm_error_$bj_bad_txt_version dm_error_$bj_uids_dont_agree error_table_$no_dir error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 48 000132 39 000156 131 000167 132 000172 133 000173 136 000174 139 000204 140 000207 141 000211 144 000212 146 000216 148 000231 149 000235 151 000247 152 000253 154 000265 157 000272 158 000275 160 000304 161 000313 162 000322 165 000346 168 000363 171 000403 175 000431 178 000446 179 000451 181 000453 183 000455 184 000466 185 000467 186 000470 190 000530 194 000575 195 000603 196 000607 197 000610 200 000611 202 000621 203 000625 204 000626 207 000627 208 000631 209 000642 210 000653 211 000662 218 000714 221 000715 226 000717 228 000741 232 000742 245 000744 248 000755 250 000756 256 000760 257 001134 259 001142 260 001161 261 001172 262 001212 263 001221 266 001256 271 001257 276 001260 278 001261 280 001264 283 001301 284 001304 287 001307 288 001312 289 001317 291 001324 292 001330 293 001332 295 001334 297 001341 304 001342 309 001343 310 001356 313 001411 316 001412 329 001414 330 001420 332 001421 333 001430 334 001435 337 001437 338 001450 339 001475 341 001504 346 001521 348 001522 349 001536 350 001547 351 001560 352 001567 353 001574 358 001575 362 001601 371 001603 372 001606 375 001607 377 001617 379 001623 385 001636 388 001640 ----------------------------------------------------------- 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