COMPILATION LISTING OF SEGMENT bjm_delete Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0939.9 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION 8* 9* The before journal manager delete before journal primitive. 10* 11* This procedure will delete a specified before journal if the file is 12* not being used at the time of the call. To insure this, the before 13* journal per system table is locked by this process, preventing any 14* other process from referencing the PST. With the PST locked, a check 15* is made to see how many processes actually reference the before 16* journal; if none, it is deleted via a call to file_manager. 17**/ 18 19 /* HISTORY: 20*Written by M. Pandolf, 11/02/82. 21*Modified: 22*12/21/82 by M. Pandolf: to add more sophistication to the algorithm. 23*11/02/83 by M. Pandolf: to only allow entrynames ending in ".bj". 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/18/84 by M. Sharpe: to clean up dcls and format; to set validation 27* level down before calling file_manager_$? and up after 28* returning; to use "call ERROR_RETURN (code)" convention 29*11/29/84 by Maggie Sharpe: to correct the call to cu_$level_get. 30*03/19/85 by Steve Herbst: Fixed to initialize bjm_data_$bj_code. 31**/ 32 33 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 34 35 bjm_delete: 36 procedure (p_dir, p_entry, p_code); 37 38 39 /* DECLARATIONS */ 40 41 /* Parameters */ 42 43 dcl p_dir char (*) parameter; /* dir of the before journal */ 44 dcl p_entry char (*) parameter; /* entry name of the before journal */ 45 dcl p_code fixed bin (35) parameter; /* standard system status code */ 46 47 /* Automatic */ 48 49 dcl bj_dir char (168); /* local copy of parameter */ 50 dcl bj_entry char (32); /* local copy of parameter */ 51 dcl code fixed bin (35); /* system status code */ 52 dcl fm_oid bit (36) aligned; /* opening ID of data management file */ 53 dcl saved_level fixed bin; 54 dcl current_ring fixed bin(3); 55 dcl bj_uid bit (36) aligned; /* before journal specific ID of a before journal */ 56 dcl bj_ppte_ptr pointer; /* pointer to PPT entry for before journal, if open */ 57 58 /* Builtin */ 59 60 dcl null builtin; 61 62 /* Condition */ 63 64 dcl cleanup condition; 65 66 /* Constant */ 67 68 dcl ME char (32) internal static options (constant) 69 init ("bjm_delete"); 70 71 /* Entry */ 72 73 dcl get_ring_ entry returns (fixed bin (3)); 74 dcl cu_$level_get entry (fixed bin); 75 dcl cu_$level_set entry (fixed bin); 76 dcl file_manager_$open entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 77 dcl bj_ci_zero$get_bj_uid entry (bit (36) aligned) returns (bit (36)); 78 dcl bj_pst_lock entry (); 79 dcl bj_pst_lock$unlock entry (); 80 dcl bj_pst_search entry (bit (36) aligned) returns (ptr); 81 dcl bj_ppt_search entry (bit (36) aligned) returns (ptr); 82 dcl bj_close_oid entry (bit (36) aligned); 83 dcl bj_oid_util$get_oid entry (ptr) returns (bit (36) aligned); 84 dcl file_manager_$delete_close entry (bit (36) aligned, fixed bin (35)); 85 dcl bj_cleanup_tables$handler entry (fixed bin (35)); 86 87 /* External Static */ 88 89 dcl dm_error_$bj_recursive_invoc fixed bin (35) ext static; 90 dcl dm_error_$bj_journal_in_use fixed bin (35) ext static; 91 dcl dm_error_$bj_invalid_name fixed bin (35) ext static; 92 dcl bjm_data_$bj_pst_ptr pointer external static; 93 94 95 96 /* initialize parameters */ 97 98 bj_dir = p_dir; 99 bj_entry = p_entry; 100 p_code = 0; 101 call cu_$level_get (saved_level); 102 current_ring = get_ring_ (); 103 104 /* validate the entry name */ 105 106 if ^is_valid_bj_name (bj_entry) 107 then do; 108 p_code = dm_error_$bj_invalid_name; 109 goto MAIN_RETURN; 110 end; 111 112 on cleanup call CLEANUP; 113 114 if bjm_data_$bj_operation = "" 115 then bjm_data_$bj_operation = ME; 116 else do; 117 p_code = dm_error_$bj_recursive_invoc; 118 goto MAIN_RETURN; 119 end; 120 121 122 /* prepare for unexpected error */ 123 124 bjm_data_$bj_exit_err = nonlocal_error_exit; 125 bjm_data_$bj_code = 0; 126 127 /* get the bj_uid from the journal */ 128 129 call cu_$level_set ((current_ring)); 130 131 call file_manager_$open (bj_dir, bj_entry, fm_oid, code); 132 133 if fm_oid = (36)"0"b 134 then call ERROR_RETURN (code); 135 136 call cu_$level_set (saved_level); 137 138 bj_uid = bj_ci_zero$get_bj_uid (fm_oid); 139 140 /* 141* lock the PST to begin the following operation: 142* 143* if JOURNAL_UNUSED 144* then call DELETE_JOURNAL 145* else if JOURNAL_HAS_1_USER 146* then if I_AM_ONLY_USER 147* then call CLOSE_AND_DELETE_JOURNAL 148* else call JOURNAL_IN_USE_ERROR 149* else call JOURNAL_IN_USE_ERROR 150* 151* because the PST will be locked, the used status of the journal in question 152* will not change while the comparisons are being made. 153**/ 154 155 call bj_pst_lock (); 156 157 bj_pste_ptr = bj_pst_search (bj_uid); 158 bj_ppte_ptr = bj_ppt_search (bj_uid); 159 160 if bj_pste_ptr = null () 161 then call DELETE (); 162 else if N_USERS () = 1 163 then if bj_ppte_ptr ^= null () 164 then do; 165 call bj_close_oid (bj_oid_util$get_oid (bj_ppte_ptr)); 166 call DELETE (); 167 end; 168 else call ERROR_RETURN (dm_error_$bj_journal_in_use); 169 else call ERROR_RETURN (dm_error_$bj_journal_in_use); 170 171 /* free up the PST for further use */ 172 173 call bj_pst_lock$unlock (); 174 175 /* begin exit sequence */ 176 177 bjm_data_$bj_operation = ""; 178 bjm_data_$bj_exit_err = bjm_data_$bj_default_error_label; 179 180 MAIN_RETURN: 181 call cu_$level_set (saved_level); 182 return; 183 184 nonlocal_error_exit: 185 call ERROR_RETURN (bjm_data_$bj_code); 186 187 188 /* Internal Procedures */ 189 190 ERROR_RETURN: 191 proc (error_code); 192 193 dcl error_code fixed bin (35); 194 195 196 call CLEANUP; 197 p_code = error_code; 198 goto MAIN_RETURN; 199 200 end ERROR_RETURN; 201 202 203 204 is_valid_bj_name: 205 proc (bj_name) 206 reducible 207 returns (bit (1) aligned); 208 209 dcl bj_name char (*) parameter; 210 dcl (length, substr, reverse, rtrim) builtin; 211 212 return ( 213 (length (rtrim (bj_name)) < 33) & 214 (substr (reverse (rtrim (bj_name)), 1, 3) = "jb.")); 215 216 end is_valid_bj_name; 217 218 219 CLEANUP: 220 procedure (); 221 222 dcl cleanup_code fixed bin (35); 223 224 call bj_cleanup_tables$handler (cleanup_code); 225 226 bjm_data_$bj_operation = ""; 227 bjm_data_$bj_exit_err = bjm_data_$bj_default_error_label; 228 229 call cu_$level_set (saved_level); 230 return; 231 232 end CLEANUP; 233 234 DELETE: 235 procedure (); 236 237 dcl delete_code fixed bin (35); 238 239 call cu_$level_set ((current_ring)); 240 241 call file_manager_$delete_close (fm_oid, delete_code); 242 if delete_code ^= 0 243 then call ERROR_RETURN (delete_code); 244 245 call cu_$level_set (saved_level); 246 247 return; 248 249 end DELETE; 250 251 252 253 N_USERS: 254 procedure () returns (fixed bin); 255 256 dcl n_processes fixed bin; 257 dcl bj_index fixed bin; 258 dcl proc_index fixed bin; 259 260 bj_index = bj_pste.bj_ix; 261 bj_check_in_table_ptr = ptr (bjm_data_$bj_pst_ptr, bjm_data_$bj_pst_ptr -> bj_pst.check_in_table_offset); 262 n_processes = 0; 263 264 do proc_index = 1 to bj_check_in_table.max_n_processes; 265 if bj_check_in_table.cross_proc_bj (proc_index, bj_index) ^= "0"b 266 then n_processes = n_processes + 1; 267 end; 268 269 return (n_processes); 270 271 end N_USERS; 272 273 274 1 1 /* BEGIN INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 1 2 1 3 /* Originally found in before journal primitives written by */ 1 4 /* A. Bensoussan. Gathered into an include file for ease of use. */ 1 5 /* See the bjm_data_.alm source for details of use. */ 1 6 1 7 /* HISTORY: 1 8*Written by Mike Pandolf, 07/14/82. 1 9*Modified: 1 10*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 1 11* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 1 12**/ 1 13 1 14 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 1 15 dcl bjm_data_$bj_operation char (32) external static; 1 16 1 17 dcl bjm_data_$bj_exit_err label variable external; 1 18 1 19 dcl bjm_data_$bj_code fixed bin (35) external; 1 20 1 21 dcl bjm_data_$bj_default_error_label label external static; 1 22 1 23 1 24 /* END INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 275 276 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 */ 277 278 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 */ 279 280 4 1 /* BEGIN INCLUDE FILE: dm_bj_check_in_table.incl.pl1 */ 4 2 /* 4 3*Table for fast checking of who's got what BJ open 4 4* 4 5*Written by Andre Bensoussan June/July 1982 4 6*Modified: 4 7*08/30/82 by Lee A. Newcomb: To use dm_system_data_ for max length of 4 8* vector and array bounds. 4 9**/ 4 10 /* format: style4,indattr,idind33,^indcomtxt */ 4 11 4 12 dcl bj_check_in_table_ptr ptr; 4 13 4 14 dcl 1 bj_check_in_table based (bj_check_in_table_ptr) aligned, 4 15 2 max_n_processes fixed bin, 4 16 2 max_n_journals fixed bin, 4 17 2 process_id dim (dm_system_data_$bj_max_n_processes refer 4 18 (bj_check_in_table.max_n_processes)) bit (36), 4 19 2 cross_proc_bj dim (dm_system_data_$bj_max_n_processes refer 4 20 (bj_check_in_table.max_n_processes), 4 21 dm_system_data_$bj_max_n_journals refer (bj_check_in_table.max_n_journals)) 4 22 bit (1) unaligned; 4 23 4 24 /* END INCLUDE FILE: dm_bj_check_in_table.incl.pl1 */ 281 282 283 284 end bjm_delete; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.1 bjm_delete.pl1 >spec>on>7192.pbf-04/04/85>bjm_delete.pl1 275 1 01/07/85 0857.3 dm_bj_global_error_info.incl.pl1 >ldd>include>dm_bj_global_error_info.incl.pl1 277 2 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 279 3 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 281 4 01/07/85 0857.3 dm_bj_check_in_table.incl.pl1 >ldd>include>dm_bj_check_in_table.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. ME 000000 constant char(32) initial unaligned dcl 68 ref 114 bj_check_in_table based structure level 1 dcl 4-14 bj_check_in_table_ptr 000202 automatic pointer dcl 4-12 set ref 261* 264 265 bj_ci_zero$get_bj_uid 000020 constant entry external dcl 77 ref 138 bj_cleanup_tables$handler 000040 constant entry external dcl 85 ref 224 bj_close_oid 000032 constant entry external dcl 82 ref 165 bj_dir 000100 automatic char(168) unaligned dcl 49 set ref 98* 131* bj_entry 000152 automatic char(32) unaligned dcl 50 set ref 99* 106* 131* bj_index 000237 automatic fixed bin(17,0) dcl 257 set ref 260* 265 bj_ix 1 based fixed bin(17,0) level 2 dcl 3-48 ref 260 bj_name parameter char unaligned dcl 209 ref 204 212 212 bj_oid_util$get_oid 000034 constant entry external dcl 83 ref 165 165 bj_ppt_search 000030 constant entry external dcl 81 ref 158 bj_ppte_ptr 000170 automatic pointer dcl 56 set ref 158* 162 165* 165* bj_pst based structure level 1 dcl 2-18 bj_pst_lock 000022 constant entry external dcl 78 ref 155 bj_pst_lock$unlock 000024 constant entry external dcl 79 ref 173 bj_pst_search 000026 constant entry external dcl 80 ref 157 bj_pste based structure level 1 dcl 3-48 bj_pste_ptr 000200 automatic pointer dcl 3-45 set ref 157* 160 260 bj_uid 000166 automatic bit(36) dcl 55 set ref 138* 157* 158* bjm_data_$bj_code 000056 external static fixed bin(35,0) dcl 1-19 set ref 125* 184* bjm_data_$bj_default_error_label 000060 external static label variable dcl 1-21 ref 178 227 bjm_data_$bj_exit_err 000054 external static label variable dcl 1-17 set ref 124* 178* 227* bjm_data_$bj_operation 000052 external static char(32) unaligned dcl 1-15 set ref 114 114* 177* 226* bjm_data_$bj_pst_ptr 000050 external static pointer dcl 92 ref 261 261 check_in_table_offset 12 based fixed bin(18,0) level 2 unsigned dcl 2-18 ref 261 cleanup 000172 stack reference condition dcl 64 ref 112 cleanup_code 000100 automatic fixed bin(35,0) dcl 222 set ref 224* code 000162 automatic fixed bin(35,0) dcl 51 set ref 131* 133* cross_proc_bj based bit(1) array level 2 packed unaligned dcl 4-14 ref 265 cu_$level_get 000012 constant entry external dcl 74 ref 101 cu_$level_set 000014 constant entry external dcl 75 ref 129 136 180 229 239 245 current_ring 000165 automatic fixed bin(3,0) dcl 54 set ref 102* 129 239 delete_code 000226 automatic fixed bin(35,0) dcl 237 set ref 241* 242 242* dm_error_$bj_invalid_name 000046 external static fixed bin(35,0) dcl 91 ref 108 dm_error_$bj_journal_in_use 000044 external static fixed bin(35,0) dcl 90 set ref 168* 169* dm_error_$bj_recursive_invoc 000042 external static fixed bin(35,0) dcl 89 ref 117 error_code parameter fixed bin(35,0) dcl 193 ref 190 197 file_manager_$delete_close 000036 constant entry external dcl 84 ref 241 file_manager_$open 000016 constant entry external dcl 76 ref 131 fm_oid 000163 automatic bit(36) dcl 52 set ref 131* 133 138* 241* get_ring_ 000010 constant entry external dcl 73 ref 102 length builtin function dcl 210 ref 212 max_n_journals 1 based fixed bin(17,0) level 2 dcl 4-14 ref 265 265 max_n_processes based fixed bin(17,0) level 2 dcl 4-14 ref 264 265 n_processes 000236 automatic fixed bin(17,0) dcl 256 set ref 262* 265* 265 269 null builtin function dcl 60 ref 160 162 p_code parameter fixed bin(35,0) dcl 45 set ref 35 100* 108* 117* 197* p_dir parameter char unaligned dcl 43 ref 35 98 p_entry parameter char unaligned dcl 44 ref 35 99 proc_index 000240 automatic fixed bin(17,0) dcl 258 set ref 264* 265* reverse builtin function dcl 210 ref 212 rtrim builtin function dcl 210 ref 212 212 saved_level 000164 automatic fixed bin(17,0) dcl 53 set ref 101* 136* 180* 229* 245* substr builtin function dcl 210 ref 212 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_ptr automatic pointer dcl 2-16 NAMES DECLARED BY EXPLICIT CONTEXT. CLEANUP 000500 constant entry internal dcl 219 ref 112 196 DELETE 000536 constant entry internal dcl 234 ref 160 166 ERROR_RETURN 000416 constant entry internal dcl 190 ref 133 168 169 184 242 MAIN_RETURN 000376 constant label dcl 180 ref 109 118 198 N_USERS 000575 constant entry internal dcl 253 ref 162 bjm_delete 000034 constant entry external dcl 35 is_valid_bj_name 000431 constant entry internal dcl 204 ref 106 nonlocal_error_exit 000406 constant label dcl 184 ref 124 NAME DECLARED BY CONTEXT OR IMPLICATION. ptr builtin function ref 261 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1170 1252 674 1200 Length 1560 674 62 272 273 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_delete 205 external procedure is an external procedure. on unit on line 112 64 on unit ERROR_RETURN internal procedure shares stack frame of external procedure bjm_delete. is_valid_bj_name internal procedure shares stack frame of external procedure bjm_delete. CLEANUP 70 internal procedure is called by several nonquick procedures. DELETE internal procedure shares stack frame of external procedure bjm_delete. N_USERS internal procedure shares stack frame of external procedure bjm_delete. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME CLEANUP 000100 cleanup_code CLEANUP bjm_delete 000100 bj_dir bjm_delete 000152 bj_entry bjm_delete 000162 code bjm_delete 000163 fm_oid bjm_delete 000164 saved_level bjm_delete 000165 current_ring bjm_delete 000166 bj_uid bjm_delete 000170 bj_ppte_ptr bjm_delete 000200 bj_pste_ptr bjm_delete 000202 bj_check_in_table_ptr bjm_delete 000226 delete_code DELETE 000236 n_processes N_USERS 000237 bj_index N_USERS 000240 proc_index N_USERS THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry_desc int_entry reverse_cs set_cs_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_ci_zero$get_bj_uid bj_cleanup_tables$handler bj_close_oid bj_oid_util$get_oid bj_ppt_search bj_pst_lock bj_pst_lock$unlock bj_pst_search cu_$level_get cu_$level_set file_manager_$delete_close file_manager_$open get_ring_ 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_invalid_name dm_error_$bj_journal_in_use dm_error_$bj_recursive_invoc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000030 98 000054 99 000062 100 000066 101 000067 102 000075 106 000104 108 000112 109 000116 112 000117 114 000141 117 000153 118 000156 124 000157 125 000163 129 000164 131 000174 133 000221 136 000225 138 000234 155 000247 157 000254 158 000265 160 000276 162 000304 165 000315 166 000335 167 000336 168 000337 169 000347 173 000356 177 000363 178 000370 180 000376 182 000405 184 000406 284 000415 190 000416 196 000420 197 000424 198 000430 204 000431 212 000442 219 000477 224 000505 226 000513 227 000520 229 000526 230 000535 234 000536 239 000537 241 000550 242 000561 245 000565 247 000574 253 000575 260 000577 261 000602 262 000611 264 000612 265 000621 267 000637 269 000641 ----------------------------------------------------------- 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