COMPILATION LISTING OF SEGMENT bj_pste_lock 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.8 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This module, bj_pste_lock, manages the lock on an individual 10* entry in the BJ_PST. There are four entries: $lock, 11* $lock_partial_check, $unlock, and $unlock_cleanup. $lock requires the 12* PSTE to be valid. $lock_partial_check is used in reocvery from a 13* crash and the PSTE version may not have been filled in yet. $unlock 14* and $unlock_cleanup do not check the PSTE version by design, but 15* require the process_id in the lock word and the calling process to be 16* the same; the only difference is $unlock causes an error and 17* $unlock_cleanup will only log an error. 18* 19* NOTE: 20* The PST does not have to be locked to lock a PSTE. See bj_pst_lock 21* for the cases wehere the PST is locked. We lock a PSTE when doing a 22* read or write operation on the BJ, or when synchronizing the PSTE with 23* the associated TXTE. 24**/ 25 26 /* HISTORY: 27*Written by A. Bensoussan, 02/23/83. 28*Modified: 29*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 30* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 31*06/07/84 by Lee Baldwin: Renamed dm_error_$bj_bad_pste_ix to bj_bad_pste_idx. 32*11/02/84 by Maggie Sharpe: To use "call ERROR_RETURN (code)" method of error 33* handling; clean up dcls and format; use the constant APPE instead 34* of the literal "appe" in several place. 35*02/14/85 by Lee A. Newcomb: Fixed to use the new BJ_PSTE_VERSION_2 constant; 36* removed the unused entry bj_pste_lock$; added the 37* CHECK_VERSION_NUMERIC proc; changed so each entry would use its 38* full name in calls to bj_report_err. 39*02/28/85 by Lee A. Newcomb: Fixed to always check the PSTE version in $lock; 40* reverted to NOT check the PSTE version in the unlock entries; 41* initialized myname to an indicator of invalidity; added to the 42* description to help readers. 43*03/05/85 by Steve Herbst: Replaced dm_log_ with dm_misc_util_$log. 44*05/10/85 by R. Michael Tague: Replaced explicit reference to dm_journal_seg 45* will a call to dm_hcs_$validate_bj_uid. 46**/ 47 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 48 49 bj_pste_lock$lock: 50 proc (p_bj_pste_ptr, p_bj_uid); 51 52 /* DECLARATIONS */ 53 /* Parameter */ 54 dcl ( 55 p_bj_pste_ptr ptr, /* Input */ 56 p_bj_uid bit (36) aligned /* Input - If null dont check uid */ 57 ) parameter; 58 59 /* Automatic */ 60 dcl ( 61 code fixed bin (35) init (0), 62 myname char (32) 63 init (BJ_PSTE_LOCK_MYNAME_NOT_SET) 64 ) automatic; 65 66 /* Based */ 67 /* Builtin */ 68 dcl addr builtin; 69 70 /* Condition */ 71 /* Constant */ 72 dcl ( 73 APPE char (4) init ("appe"), 74 BJ_PSTE_LOCK char (32) init ("bj_pste_lock$lock"), 75 BJ_PSTE_LOCK_MYNAME_NOT_SET char (32) 76 init ("bj_pste_lock myname not set"), 77 BJ_PSTE_LOCK_UNLOCK char (32) init ("bj_pste_lock$unlock"), 78 BJ_PSTE_LOCK_UNLOCK_CLEANUP char (32) 79 init ("bj_pste_lock$unlock_cleanup"), 80 BJ_PSTE_LOCK_PARTIAL_CHECK char (32) 81 init ( 82 "bj_pste_lock$lock_partial_check") 83 ) internal static options (constant); 84 85 /* Entry */ 86 dcl ( 87 bj_report_err entry (fixed bin (35), char (*)), 88 bj_storage_append$adjust entry (ptr), 89 dm_hcs_$validate_bj_uid entry (bit (36) aligned, fixed bin) returns (bit (1) aligned), 90 dm_misc_util_$log entry () options (variable), 91 get_process_id_ entry returns (bit (36) aligned), 92 lock_manager_$lock_fast entry (ptr, fixed bin (71), 93 fixed bin (35)), 94 lock_manager_$unlock_fast entry (ptr, fixed bin (35)) 95 ) external; 96 97 /* External */ 98 dcl ( 99 bjm_data_$bj_pst_ptr ptr, 100 bjm_data_$lock_manager_timeout fixed bin (71), 101 ( 102 dm_error_$bj_bad_pst_version, 103 dm_error_$bj_bad_pste_idx, 104 dm_error_$bj_bad_pste_ptr, 105 dm_error_$bj_bad_pste_version, 106 dm_error_$bj_uids_dont_agree, 107 dm_error_$bj_uids_dont_match, 108 dm_error_$fast_lock_invalid_reset 109 ) fixed bin (35) 110 ) external static; 111 112 /* Static */ 113 114 /* END OF DECLARATIONS */ 115 116 /* bj_pste_lock$lock: repeat for reader */ 117 /* proc (p_bj_pste_ptr, p_bj_uid); */ 118 119 myname = BJ_PSTE_LOCK; 120 bj_pst_ptr = bjm_data_$bj_pst_ptr; 121 call CHECK_VERSION_NUMERIC (bj_pst.version, BJ_PST_VERSION_1, 122 dm_error_$bj_bad_pst_version); 123 124 bj_pste_ptr = p_bj_pste_ptr; 125 call CHECK_VERSION_NUMERIC (bj_pste.version, BJ_PSTE_VERSION_2, 126 dm_error_$bj_bad_pste_version); 127 128 if bj_pste.bj_ix < 1 | bj_pste.bj_ix > bj_pst.max_n_entries then 129 call ERROR_RETURN (dm_error_$bj_bad_pste_idx); 130 131 if bj_pste_ptr ^= addr (bj_pst.e (bj_pste.bj_ix)) then 132 call ERROR_RETURN (dm_error_$bj_bad_pste_ptr); 133 134 call lock_manager_$lock_fast (addr (bj_pste.lock), 135 bjm_data_$lock_manager_timeout, code); 136 137 if code ^= 0 & code ^= dm_error_$fast_lock_invalid_reset then 138 call ERROR_RETURN (code); 139 140 /* We recheck the PSTE version in case another process */ 141 /* deleted it between the time we checked the version and */ 142 /* got the lock. */ 143 call CHECK_VERSION_NUMERIC (bj_pste.version, BJ_PSTE_VERSION_2, 144 dm_error_$bj_bad_pste_version); 145 146 if bj_pste.bj_uid ^= p_bj_uid then 147 call ERROR_RETURN (dm_error_$bj_uids_dont_match); 148 149 if ^dm_hcs_$validate_bj_uid (bj_pste.bj_uid, bj_pste.bj_ix) then 150 call ERROR_RETURN (dm_error_$bj_uids_dont_agree); 151 152 if bj_pste.append_state.current_operation = APPE then 153 call bj_storage_append$adjust (bj_pste_ptr); 154 155 go to MAIN_RETURN; 156 157 /* end bj_pste_lock$lock; */ 158 159 bj_pste_lock$unlock: 160 entry (p_bj_pste_ptr); 161 162 myname = BJ_PSTE_LOCK_UNLOCK; 163 bj_pste_ptr = p_bj_pste_ptr; 164 165 if bj_pste.append_state.current_operation = APPE then 166 if bj_pste.lock.pid = get_process_id_ () then 167 call bj_storage_append$adjust (bj_pste_ptr); 168 169 call lock_manager_$unlock_fast (addr (bj_pste.lock), code); 170 if code ^= 0 then 171 call ERROR_RETURN (code); 172 173 go to MAIN_RETURN; 174 175 /* end bj_pste_lock$unlock; */ 176 177 bj_pste_lock$unlock_cleanup: 178 entry (p_bj_pste_ptr); 179 180 myname = BJ_PSTE_LOCK_UNLOCK_CLEANUP; 181 bj_pste_ptr = p_bj_pste_ptr; 182 183 if bj_pste.append_state.current_operation = APPE then 184 if bj_pste.lock.pid = get_process_id_ () then 185 call bj_storage_append$adjust (bj_pste_ptr); 186 187 call lock_manager_$unlock_fast (addr (bj_pste.lock), code); 188 189 if code ^= 0 then 190 call dm_misc_util_$log (LOG_SV, code, myname, "while unlocking bj_pste"); 191 192 go to MAIN_RETURN; 193 194 /* end bj_pste_lock$unlock_cleanup; */ 195 196 bj_pste_lock$lock_partial_check: 197 entry (p_bj_pste_ptr); 198 199 myname = BJ_PSTE_LOCK_PARTIAL_CHECK; 200 bj_pst_ptr = bjm_data_$bj_pst_ptr; 201 call CHECK_VERSION_NUMERIC (bj_pst.version, BJ_PST_VERSION_1, 202 dm_error_$bj_bad_pst_version); 203 bj_pste_ptr = p_bj_pste_ptr; 204 if bj_pste.version ^= 0 then /* may be a PSTE */ 205 call CHECK_VERSION_NUMERIC (bj_pste.version, BJ_PSTE_VERSION_2, 206 dm_error_$bj_bad_pste_version); 207 208 if bj_pste.bj_ix < 1 | bj_pste.bj_ix > bj_pst.max_n_entries then 209 call ERROR_RETURN (dm_error_$bj_bad_pste_idx); 210 211 if bj_pste_ptr ^= addr (bj_pst.e (bj_pste.bj_ix)) then 212 call ERROR_RETURN (dm_error_$bj_bad_pste_ptr); 213 214 call lock_manager_$lock_fast (addr (bj_pste.lock), 215 bjm_data_$lock_manager_timeout, code); 216 217 if code ^= 0 & code ^= dm_error_$fast_lock_invalid_reset then 218 call ERROR_RETURN (code); 219 220 /* We recheck the PSTE version in case another process */ 221 /* deleted it between the time we checked the version and */ 222 /* got the lock. */ 223 if bj_pste.version ^= 0 then /* fully in use entry */ 224 call CHECK_VERSION_NUMERIC (bj_pste.version, BJ_PSTE_VERSION_2, 225 dm_error_$bj_bad_pste_version); 226 227 if ^dm_hcs_$validate_bj_uid (bj_pste.bj_uid, bj_pste.bj_ix) then 228 call ERROR_RETURN (dm_error_$bj_uids_dont_agree); 229 230 if bj_pste.append_state.current_operation = APPE then 231 if bj_pste.version ^= 0 then 232 call bj_storage_append$adjust (bj_pste_ptr); 233 234 go to MAIN_RETURN; 235 236 /* end bj_pste_lock$lock_partial_check; */ 237 238 MAIN_RETURN: 239 return; 240 241 ERROR_RETURN: 242 proc (er_p_code); 243 244 dcl er_p_code fixed bin (35); 245 246 call bj_report_err (er_p_code, myname); /* does not return */ 247 goto MAIN_RETURN; /* but better safe than sorry */ 248 end ERROR_RETURN; 249 250 CHECK_VERSION_NUMERIC: 251 proc (cvn_p_given_version, cvn_p_correct_version, cvn_p_error_to_use); 252 253 /* The error code to use is passed since we use this to check several */ 254 /* structures with numeric versions. It is hoped newer versions of */ 255 /* these structures will be changed to use char (8) versions. */ 256 257 dcl ( 258 cvn_p_given_version fixed bin, 259 cvn_p_correct_version fixed bin, 260 cvn_p_error_to_use fixed bin (35) 261 ) parameter; 262 263 if cvn_p_given_version ^= cvn_p_correct_version then 264 call ERROR_RETURN (cvn_p_error_to_use); 265 266 end CHECK_VERSION_NUMERIC; 267 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 */ 268 269 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 */ 270 271 3 1 /* BEGIN INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 3 2 3 3 /* format: ^indcom */ 3 4 3 5 /* DESCRIPTION: 3 6* These are the severity codes used by the dms daemon when calling its logger. 3 7* The severity is ranked thusly: 3 8* 3 9* severity log write situation 3 10* -------- --- ----- --------- 3 11* 0 no yes standard output, query, etc. 3 12* 1 yes yes fatal error, terminate dms daemon. 3 13* 2 yes yes nonfatal error. 3 14* 3 yes yes informative message. 3 15* 4 yes no log information only. 3 16**/ 3 17 3 18 /* HISTORY: 3 19* 3 20*Written by M. Pandolf, 10/06/82. 3 21*Modified: 3 22*12/10/84 by R. Michael Tague: Rename and reformat description/history. 3 23*01/13/85 by Lee A. Newcomb: Renamed to dm_log_sv_codes from 3 24* dm_daemon_sv_codes as the severity codes for the DM log are not 3 25* restrained to the DM Daemon's use. 3 26*01/24/85 by Lee A. Newcomb: Fixed to say dm_log_sv_codes.incl.pl1 in the 3 27* BEGIN and END INCLUDE comments, instead of dm_daemon_sv_codes.==. 3 28**/ 3 29 3 30 /* format: style5 */ 3 31 3 32 dcl (PRINT_SV, QUERY_SV) fixed bin internal static 3 33 options (constant) init (0); 3 34 dcl (CRASH_SV, FATAL_SV) fixed bin internal static 3 35 options (constant) init (1); 3 36 dcl ERROR_SV fixed bin internal static 3 37 options (constant) init (2); 3 38 dcl INFORM_SV fixed bin internal static 3 39 options (constant) init (3); 3 40 dcl LOG_SV fixed bin internal static 3 41 options (constant) init (4); 3 42 3 43 /* END INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 272 273 274 275 end bj_pste_lock$lock; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/17/85 1328.6 bj_pste_lock.pl1 >spec>online>pbf-05/17/85>bj_pste_lock.pl1 268 1 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 270 2 04/05/85 0924.4 dm_bj_pste.incl.pl1 >ldd>include>dm_bj_pste.incl.pl1 272 3 03/06/85 1031.1 dm_log_sv_codes.incl.pl1 >ldd>include>dm_log_sv_codes.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. APPE 000051 constant char(4) initial unaligned dcl 72 ref 152 165 183 230 BJ_PSTE_LOCK 000041 constant char(32) initial unaligned dcl 72 ref 119 BJ_PSTE_LOCK_MYNAME_NOT_SET 000031 constant char(32) initial unaligned dcl 72 ref 60 BJ_PSTE_LOCK_PARTIAL_CHECK 000001 constant char(32) initial unaligned dcl 72 ref 199 BJ_PSTE_LOCK_UNLOCK 000021 constant char(32) initial unaligned dcl 72 ref 162 BJ_PSTE_LOCK_UNLOCK_CLEANUP 000011 constant char(32) initial unaligned dcl 72 ref 180 BJ_PSTE_VERSION_2 000057 constant fixed bin(17,0) initial dcl 2-42 set ref 125* 143* 204* 223* BJ_PST_VERSION_1 000061 constant fixed bin(17,0) initial dcl 1-14 set ref 121* 201* LOG_SV 000000 constant fixed bin(17,0) initial dcl 3-40 set ref 189* addr builtin function dcl 68 ref 131 134 134 169 169 187 187 211 214 214 append_state 40 based structure level 2 dcl 2-48 bj_ix 1 based fixed bin(17,0) level 2 dcl 2-48 set ref 128 128 131 149* 208 208 211 227* bj_pst based structure level 1 dcl 1-18 bj_pst_ptr 000112 automatic pointer dcl 1-16 set ref 120* 121 128 131 200* 201 208 211 bj_pste based structure level 1 dcl 2-48 bj_pste_ptr 000114 automatic pointer dcl 2-45 set ref 124* 125 128 128 131 131 134 134 143 146 149 149 152 152* 163* 165 165 165* 169 169 181* 183 183 183* 187 187 203* 204 204 208 208 211 211 214 214 223 223 227 227 230 230 230* bj_report_err 000010 constant entry external dcl 86 ref 246 bj_storage_append$adjust 000012 constant entry external dcl 86 ref 152 165 183 230 bj_uid 4 based bit(36) level 2 dcl 2-48 set ref 146 149* 227* bjm_data_$bj_pst_ptr 000026 external static pointer dcl 98 ref 120 200 bjm_data_$lock_manager_timeout 000030 external static fixed bin(71,0) dcl 98 set ref 134* 214* code 000100 automatic fixed bin(35,0) initial dcl 60 set ref 60* 134* 137 137 137* 169* 170 170* 187* 189 189* 214* 217 217 217* current_operation 40 based char(4) level 3 dcl 2-48 ref 152 165 183 230 cvn_p_correct_version parameter fixed bin(17,0) dcl 257 ref 250 263 cvn_p_error_to_use parameter fixed bin(35,0) dcl 257 set ref 250 263* cvn_p_given_version parameter fixed bin(17,0) dcl 257 ref 250 263 dm_error_$bj_bad_pst_version 000032 external static fixed bin(35,0) dcl 98 set ref 121* 201* dm_error_$bj_bad_pste_idx 000034 external static fixed bin(35,0) dcl 98 set ref 128* 208* dm_error_$bj_bad_pste_ptr 000036 external static fixed bin(35,0) dcl 98 set ref 131* 211* dm_error_$bj_bad_pste_version 000040 external static fixed bin(35,0) dcl 98 set ref 125* 143* 204* 223* dm_error_$bj_uids_dont_agree 000042 external static fixed bin(35,0) dcl 98 set ref 149* 227* dm_error_$bj_uids_dont_match 000044 external static fixed bin(35,0) dcl 98 set ref 146* dm_error_$fast_lock_invalid_reset 000046 external static fixed bin(35,0) dcl 98 ref 137 217 dm_hcs_$validate_bj_uid 000014 constant entry external dcl 86 ref 149 227 dm_misc_util_$log 000016 constant entry external dcl 86 ref 189 e 326 based structure array level 2 dcl 1-18 set ref 131 211 er_p_code parameter fixed bin(35,0) dcl 244 set ref 241 246* get_process_id_ 000020 constant entry external dcl 86 ref 165 183 lock 2 based structure level 2 dcl 2-48 set ref 134 134 169 169 187 187 214 214 lock_manager_$lock_fast 000022 constant entry external dcl 86 ref 134 214 lock_manager_$unlock_fast 000024 constant entry external dcl 86 ref 169 187 max_n_entries 6 based fixed bin(17,0) level 2 dcl 1-18 ref 128 208 myname 000101 automatic char(32) initial unaligned dcl 60 set ref 60* 119* 162* 180* 189* 199* 246* p_bj_pste_ptr parameter pointer dcl 54 ref 49 124 159 163 177 181 196 203 p_bj_uid parameter bit(36) dcl 54 ref 49 146 pid 2 based bit(36) level 3 dcl 2-48 set ref 165 183 version based fixed bin(17,0) level 2 in structure "bj_pst" dcl 1-18 in procedure "bj_pste_lock$lock" set ref 121* 201* version based fixed bin(17,0) level 2 in structure "bj_pste" dcl 2-48 in procedure "bj_pste_lock$lock" set ref 125* 143* 204 204* 223 223* 230 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CRASH_SV internal static fixed bin(17,0) initial dcl 3-34 ERROR_SV internal static fixed bin(17,0) initial dcl 3-36 FATAL_SV internal static fixed bin(17,0) initial dcl 3-34 INFORM_SV internal static fixed bin(17,0) initial dcl 3-38 PRINT_SV internal static fixed bin(17,0) initial dcl 3-32 QUERY_SV internal static fixed bin(17,0) initial dcl 3-32 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION_NUMERIC 000770 constant entry internal dcl 250 ref 121 125 143 201 204 223 ERROR_RETURN 000750 constant entry internal dcl 241 ref 128 131 137 146 149 170 208 211 217 227 263 MAIN_RETURN 000747 constant label dcl 238 ref 155 173 192 234 247 bj_pste_lock$lock 000104 constant entry external dcl 49 bj_pste_lock$lock_partial_check 000532 constant entry external dcl 196 bj_pste_lock$unlock 000332 constant entry external dcl 159 bj_pste_lock$unlock_cleanup 000417 constant entry external dcl 177 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1336 1406 1010 1346 Length 1672 1010 50 247 325 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_pste_lock$lock 142 external procedure is an external procedure. ERROR_RETURN internal procedure shares stack frame of external procedure bj_pste_lock$lock. CHECK_VERSION_NUMERIC internal procedure shares stack frame of external procedure bj_pste_lock$lock. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_pste_lock$lock 000100 code bj_pste_lock$lock 000101 myname bj_pste_lock$lock 000112 bj_pst_ptr bj_pste_lock$lock 000114 bj_pste_ptr bj_pste_lock$lock THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_report_err bj_storage_append$adjust dm_hcs_$validate_bj_uid dm_misc_util_$log get_process_id_ lock_manager_$lock_fast lock_manager_$unlock_fast THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_pst_ptr bjm_data_$lock_manager_timeout 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_uids_dont_agree dm_error_$bj_uids_dont_match dm_error_$fast_lock_invalid_reset LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 60 000072 49 000100 119 000112 120 000115 121 000121 124 000133 125 000137 128 000152 131 000170 134 000211 137 000227 143 000236 146 000251 149 000265 152 000313 155 000326 159 000327 162 000340 163 000343 165 000347 169 000374 170 000410 173 000414 177 000415 180 000425 181 000430 183 000434 187 000461 189 000475 192 000527 196 000530 199 000540 200 000543 201 000547 203 000561 204 000565 208 000602 211 000620 214 000641 217 000657 223 000666 227 000703 230 000731 234 000746 238 000747 241 000750 246 000752 247 000767 250 000770 263 000772 266 001003 ----------------------------------------------------------- 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