COMPILATION LISTING OF SEGMENT bj_open_by_uid Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 1000.8 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8*A procedure to open a before journal given only its UID. 9* 10* This procedure is designed to be called during rollback situations where 11*a process is rolling back some portion of a transaction on behalf of 12*another process, and must open the before journal in its own address space. 13*All it has available to it is the before jorunal UID of the before 14*journal used by the now crippled process. 15* 16* ASSUMPTION: since the crippled process is in the midst of a transaction, 17*it should not have the before journal closed. This means that the journal 18*is registered in the before journal per system table. If not found, no 19*attempt will be made to search far and wide across the hierarchy because 20*the process did something erroneous with the before journal. 21**/ 22 23 /* HISTORY: 24*Written by M. Pandolf, 08/24/82. 25*Modified: 26*10/15/82 by M. Pandolf: to use file_manager_ for manipulating 27* data management system files. 28*01/11/83 by Lee A. Newcomb: to call bj_oid_util$get_oid if the call 29* to bj_ppt_search is successful. 30*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 31* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 32*12/03/84 by M. Sharpe: to clean up format and dcls; to use ERROR_RETURN; 33* to set/reset validation level around calls to file_manager_. 34**/ 35 36 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 37 38 bj_open_by_uid: 39 procedure (p_bj_uid, p_bj_oid); 40 41 /* DECLARATIONS */ 42 43 /* Parameters */ 44 45 dcl p_bj_uid bit (36) aligned parameter; /* UID of before journal that some other process was using */ 46 dcl p_bj_oid bit (36) aligned parameter; /* OID of the before journal in this process */ 47 48 /* Automatic */ 49 50 dcl code fixed bin (35); /* standard status code */ 51 dcl bj_oid bit (36) aligned; /* copy of parameter */ 52 dcl bj_uid bit (36) aligned; /* copy of parameter */ 53 dcl bj_dir char (168); /* dir name of before journal to be opened */ 54 dcl bj_entry char (32); /* entry name of before journal to be opened */ 55 dcl fm_oid bit (36) aligned; /* page file OID of before journal in this process */ 56 dcl call_fm_close_when_done bit (1) aligned; /* "1"b => need to close DM file before return */ 57 dcl current_ring fixed bin (3); 58 dcl saved_level fixed bin; /* user's validation level */ 59 60 /* Builtin */ 61 62 dcl (null, ptr) builtin; 63 64 /* Condition */ 65 66 dcl cleanup condition; 67 68 /* Constant */ 69 70 dcl ME char (32) internal static options (constant) init ("bj_open_by_uid"); 71 72 /* Entry */ 73 74 dcl bj_ppt_search entry (bit (36) aligned) returns (ptr); 75 dcl bj_ppte_register$check_in entry (ptr); 76 dcl bj_pst_lock entry (); 77 dcl bj_pst_search entry (bit (36) aligned) returns (ptr); 78 dcl bj_pst_lock$unlock entry (); 79 dcl file_manager_$open entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 80 dcl file_manager_$close entry (bit (36) aligned, fixed bin (35)); 81 dcl bj_pste_register$check_in entry (ptr); 82 dcl bj_ppte_create entry (bit (36) aligned, bit (36) aligned, ptr) returns (ptr); 83 dcl bj_oid_util$get_oid entry (ptr) returns (bit (36) aligned); 84 dcl bj_report_err entry (fixed bin (35), char (*)); 85 dcl cu_$level_set entry (fixed bin); 86 dcl cu_$level_get entry (fixed bin); 87 dcl get_ring_ entry() returns(fixed bin(3)); 88 89 /* External Static */ 90 91 dcl dm_error_$file_already_open fixed bin (35) external static; 92 dcl dm_error_$bj_journal_not_registered fixed bin (35) external static; 93 dcl bjm_data_$bj_pst_ptr pointer external static; 94 95 96 /* first some housekeeping */ 97 98 bj_uid = p_bj_uid; 99 bj_oid = p_bj_oid; 100 101 /* Next, do we have the before journal in question opened in our process? */ 102 103 bj_ppte_ptr = bj_ppt_search (bj_uid); 104 105 if bj_ppte_ptr ^= null () 106 then do; 107 bj_oid = bj_oid_util$get_oid (bj_ppte_ptr); 108 call bj_ppte_register$check_in (bj_ppte_ptr); 109 goto MAIN_RETURN; 110 end; 111 112 /* well, we do not have it opened...check in the per system table */ 113 114 call bj_pst_lock (); 115 116 bj_pste_ptr = bj_pst_search (bj_uid); 117 118 if bj_pste_ptr = null () /* give up */ 119 then do; 120 call bj_pst_lock$unlock (); 121 call ERROR_RETURN (dm_error_$bj_journal_not_registered); 122 end; 123 124 /* form the pathname to be given to page file manager */ 125 126 bj_pn_table_ptr = ptr (bjm_data_$bj_pst_ptr, bjm_data_$bj_pst_ptr -> bj_pst.pn_table_offset); 127 128 bj_dir = bj_pn_table (bj_pste.bj_ix).dir; 129 bj_entry = bj_pn_table (bj_pste.bj_ix).entry; 130 131 /* open the before journal in this process */ 132 133 /* but first, set up a cleanup handler */ 134 135 call cu_$level_get (saved_level); 136 current_ring = get_ring_ (); 137 138 on cleanup call cu_$level_set (saved_level); 139 140 /* now back to the business at hand. */ 141 142 call cu_$level_set ((current_ring)); 143 call file_manager_$open (bj_dir, bj_entry, fm_oid, code); 144 call cu_$level_set (saved_level); 145 146 if code ^= 0 147 then if code = dm_error_$file_already_open 148 then call_fm_close_when_done = "1"b; 149 else do; 150 call bj_pst_lock$unlock (); 151 call ERROR_RETURN (code); 152 end; 153 else call_fm_close_when_done = "0"b; 154 155 /* register the before journal and create a PPTE for it */ 156 157 call bj_pste_register$check_in (bj_pste_ptr); 158 159 bj_ppte_ptr = bj_ppte_create (bj_uid, fm_oid, bj_pste_ptr); 160 161 call bj_pst_lock$unlock (); 162 163 /* set return parameter and close the file, if necessary */ 164 165 bj_oid = bj_oid_util$get_oid (bj_ppte_ptr); 166 167 if call_fm_close_when_done 168 then do; 169 call cu_$level_set ((current_ring)); 170 call file_manager_$close (fm_oid, code); 171 call cu_$level_set (saved_level); 172 end; 173 174 /* exit protocols */ 175 176 MAIN_RETURN: 177 p_bj_oid = bj_oid; 178 p_bj_uid = bj_uid; 179 return; 180 181 182 ERROR_RETURN: 183 proc (er_code); 184 185 dcl er_code fixed bin (35); 186 187 call bj_report_err (er_code, ME); 188 goto MAIN_RETURN; 189 190 end ERROR_RETURN; 191 192 193 /* Include Files */ 194 1 1 /* BEGIN dm_bj_static.incl.pl1 */ 1 2 /* 1 3*Modified: 1 4*10/04/82 by Lee A. Newcomb: To change from internal static to external 1 5* static. 1 6**/ 1 7 1 8 dcl dm_system_data_$bj_max_n_journals fixed bin ext static; 1 9 dcl dm_system_data_$bj_max_n_processes fixed bin ext static; 1 10 dcl dm_system_data_$max_n_transactions fixed bin ext static; 1 11 1 12 /* END dm_bj_static.incl.pl1 */ 1 13 195 196 2 1 /* BEGIN INCLUDE FILE: dm_bj_ppt.incl.pl1 */ 2 2 /* 2 3*Layout of the per-process before journal table and entries. 2 4* 2 5*Written by Andre Bensoussan June/July 1982 2 6*Modified: 2 7*09/29/82 by Lee A. Newcomb: To make two default oid cells, pad ppte's 2 8* to account for all used space, and use dm_system_data_ for 2 9* determining dimension of bj_ppt.e. 2 10**/ 2 11 /* format: style4,indattr,idind33,^indcomtxt */ 2 12 2 13 dcl BJ_PPT_VERSION_1 fixed bin int static options (constant) init (1); 2 14 dcl BJ_PPTE_VERSION_1 fixed bin int static options (constant) init (1); 2 15 2 16 dcl bj_ppt_ptr ptr; 2 17 2 18 dcl 1 bj_ppt based (bj_ppt_ptr) aligned, 2 19 2 version fixed bin, 2 20 2 max_n_entries fixed bin, /* should be = dm_system_data_$bj_max_n_journals */ 2 21 2 n_entries_used fixed bin, /* # of BJs open in this process */ 2 22 2 highest_ix_used fixed bin, /* max. # of BJs ever opened in this process */ 2 23 2 default_bj, /* for selecting a txn def. BJ by write_before_mark protocol */ 2 24 3 user_set_oid bit (36), /* explicit user setting via $set_default_bj */ 2 25 3 last_opened_oid bit (36), /* implicit if no user setting, set by open and close */ 2 26 /* if both zero, use system default BJ */ 2 27 2 process_id bit (36), /* so we don't have to keep calling for it. */ 2 28 2 process_ix fixed bin, /* index into bj_check_in_table */ 2 29 2 mod_list_area (100) fixed bin (35), /* for keeping track of ppt mods, not curr. used */ 2 30 2 31 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_ppt.max_n_entries)) 2 32 like bj_ppte; /* an entry for each BJ open in this process */ 2 33 /* always make sure bj_ppt.e is on a even word boundary */ 2 34 2 35 /* now specify the format of each per-process BJ table entry */ 2 36 2 37 dcl bj_ppte_ptr ptr; 2 38 2 39 dcl 1 bj_ppte based (bj_ppte_ptr) aligned, 2 40 2 version fixed bin, /* better be the same for all entries in a bj_ppt */ 2 41 2 bj_uid bit (36), /* UID of the BJ page file */ 2 42 2 pf_oid bit (36), /* OID of the BJ page file */ 2 43 2 n_opening fixed bin, /* how many openings this process has done for this BJ */ 2 44 2 bj_pste_ptr ptr, /* "link" to per-system BJ table entry */ 2 45 2 open_time fixed bin (71); /* used to fill in bj_ppt.default_bj.last_opened_oid */ 2 46 /* if the last opened BJ is closed */ 2 47 2 48 /* END INCLUDE FILE: bj_ppt.incl.pl1 */ 197 198 3 1 /* BEGIN INCLUDE FILE: dm_bj_pst.incl.pl1 */ 3 2 /* 3 3*Layout of the before journal per-system table header and BJ table entries. 3 4* 3 5*Written by Andre Bensoussan 06-15-1982 3 6*Modified: 3 7*09/29/82 by Lee A. Newcomb: To use dm_system_data_ for determining 3 8* dimension of bj_pst.e and force bj_pst.mod_list_area and 3 9* bj_pst.e to even word boundaries. 3 10*04/27/82 by M. Pandolf: To add meter space by cutting away from mod_list_area. 3 11**/ 3 12 /* format: style4,indattr,idind33,^indcomtxt */ 3 13 3 14 dcl BJ_PST_VERSION_1 fixed bin internal static options (constant) init (1); 3 15 3 16 dcl bj_pst_ptr ptr; 3 17 3 18 dcl 1 bj_pst based (bj_pst_ptr) aligned, 3 19 2 version fixed bin, 3 20 2 pad1 bit (36), 3 21 2 lock, 3 22 3 pid bit (36), /* process_id holding lock */ 3 23 3 event bit (36), 3 24 2 time_of_bootload fixed bin (71), /* for ease of access */ 3 25 2 max_n_entries fixed bin, /* as determined from dm_system_data_$bj_max_n_journals */ 3 26 2 n_entries_used fixed bin, /* current # of BJs open on the system */ 3 27 2 highest_ix_used fixed bin, /* max. # of BJs that has ever been open of the system */ 3 28 2 pn_table_offset fixed bin (18) uns, /* relative offset of bj_pn_table in bj_pst seg. */ 3 29 2 check_in_table_offset fixed bin (18) uns, /* ditto for bj_check_in_table */ 3 30 2 buffer_table_offset fixed bin (18) uns, /* ditto for where our BJ buffers are located */ 3 31 2 max_n_buffers fixed bin, /* must be <= to max_n_entries */ 3 32 2 pad2 bit (36), /* force next on even word boundary */ 3 33 2 meters, /* dim (50) fixed bin (71), */ 3 34 3 n_calls_begin_txn fixed bin (71), /* meter (1) */ 3 35 3 n_calls_before_image fixed bin (71), /* meter (2) */ 3 36 3 n_calls_abort fixed bin (71), /* meter (3) */ 3 37 3 n_calls_commit fixed bin (71), /* meter (4) */ 3 38 3 n_calls_rb_mark fixed bin (71), /* meter (5) */ 3 39 3 n_calls_fm_pc_mark fixed bin (71), /* meter (6) */ 3 40 3 n_calls_fm_rbh fixed bin (71), /* meter (7) */ 3 41 3 n_calls_rollback fixed bin (71), /* meter (8) */ 3 42 3 meter dim (9:50) fixed bin (71), /* meter (9) - meter (50) */ 3 43 2 mod_list_area (100) fixed bin (35), /* for keeping track of pst mods */ 3 44 3 45 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_pst.max_n_entries)) 3 46 like bj_pste; /* per system BJ table entries */ 3 47 3 48 3 49 /* END INCLUDE FILE: dm_bj_pst.incl.pl1 */ 199 200 4 1 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 4 2 4 3 /* DESCRIPTION 4 4* 4 5* Layout of the per-system before journal table 4 6* entries. This structure is used to contain information 4 7* about a before journal active in a running DMS. It is 4 8* currently also used as the header of a before journal 4 9* (see dm_bj_header.incl.pl1). Version changes to this 4 10* structure require either automatic conversion to be set 4 11* up, or users to be told to re-create their journals. 4 12* 4 13* Currently, a bj_pste must be 64 words long; any 4 14* future changes must at least make sure a bj_pste is an 4 15* even # of words for the alignment of some of its 4 16* elements. 4 17**/ 4 18 4 19 /* HISTORY: 4 20* 4 21*Written by Andre Bensoussan, 06/15/82. 4 22*Modified: 4 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 4 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 4 25* alignments. 4 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 4 27* "n_bi_still_unsafe", and "n_bi_being_saved". 4 28*02/08/83 by M. Pandolf: to add append_state structure. 4 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 4 30*04/27/83 by M. Pandolf: to add meter structure at end. 4 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 4 32* value of 2; fixed references to page files or PF's; fixed format 4 33* of description and history sections. 4 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 4 35* expanded on the description for future generations (no 4 36* version was made). 4 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 4 38* n_txn_storage_limit_hits (again without a version change). 4 39**/ 4 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 4 41 4 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 4 43 options (constant) init (2); 4 44 4 45 dcl bj_pste_ptr ptr; 4 46 4 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 4 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 4 49 2 version fixed bin, 4 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 4 51 2 lock aligned, 4 52 3 pid bit (36), /* process ID of lock owner */ 4 53 3 event bit (36), 4 54 2 bj_uid bit (36), /* UID of BJ file */ 4 55 2 ci_size fixed bin, /* In number of bytes */ 4 56 2 max_size fixed bin, /* In number of ci's */ 4 57 2 active bit (1) aligned, /* 0 means journal not being used */ 4 58 2 time_header_updated fixed bin (71), 4 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 4 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 4 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 4 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 4 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 4 64 2 last_ci_info aligned, 4 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 4 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 4 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 4 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 4 69 /* .. completely on disk */ 4 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 4 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 4 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 4 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 4 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 4 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 4 76 2 cl aligned, /* Circular List */ 4 77 3 origin_ci fixed bin (24) uns, 4 78 3 lowest_ci fixed bin (24) uns, 4 79 3 highest_ci fixed bin (24) uns, 4 80 3 number_ci fixed bin (24) uns, 4 81 2 append_state aligned, 4 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 4 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 4 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 4 85 3 pending_last_element_id bit (36), /* last element id after append done */ 4 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 4 87 2 pad_to_even_word1 bit (36) aligned, 4 88 2 meters aligned, /* dim (10) fixed bin (71), */ 4 89 3 n_bi_written fixed bin (71), /* meter (1) */ 4 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 4 91 3 n_journal_full fixed bin (71), /* meter (3) */ 4 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 4 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 4 94 3 n_txn_started fixed bin (71), /* meter (6) */ 4 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 4 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 4 97 3 meter (9:10) fixed bin (71), 4 98 /* meter (9) - meter (10) */ 4 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 4 100 4 101 4 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 201 202 5 1 /* BEGIN INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 5 2 /* 5 3*This vector relates a BJ UID to its pathname. 5 4* 5 5*Written by Andre Bensoussan June/July 1982 5 6*Modified: 5 7*09/29/82 by Lee A. Newcomb: To make word aligned, convert to use 5 8* dm_system_data_$bj_max_n_journals, and store max_n_entries 5 9* for use with crash recovery. 5 10**/ 5 11 /* format: style4,indattr,idind33,^indcomtxt */ 5 12 5 13 dcl bj_pn_table_ptr ptr; 5 14 5 15 dcl 1 bj_pn_table based (bj_pn_table_ptr) aligned, 5 16 2 max_n_entries fixed bin, /* know how long the table is for crash recovery */ 5 17 2 bj_path_to_uid_relation dim (dm_system_data_$bj_max_n_journals refer (bj_pn_table.max_n_entries)), 5 18 3 dir char (168), 5 19 3 entry char (32), 5 20 3 bj_uid bit (36); 5 21 5 22 /* END INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 203 204 205 206 end bj_open_by_uid; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0915.2 bj_open_by_uid.pl1 >spec>on>7192.pbf-04/04/85>bj_open_by_uid.pl1 195 1 01/07/85 0857.8 dm_bj_static.incl.pl1 >ldd>include>dm_bj_static.incl.pl1 197 2 01/07/85 0857.6 dm_bj_ppt.incl.pl1 >ldd>include>dm_bj_ppt.incl.pl1 199 3 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 201 4 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 203 5 01/07/85 0857.4 dm_bj_pn_table.incl.pl1 >ldd>include>dm_bj_pn_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 70 set ref 187* bj_dir 000103 automatic char(168) unaligned dcl 53 set ref 128* 143* bj_entry 000155 automatic char(32) unaligned dcl 54 set ref 129* 143* bj_ix 1 based fixed bin(17,0) level 2 dcl 4-48 ref 128 129 bj_oid 000101 automatic bit(36) dcl 51 set ref 99* 107* 165* 176 bj_oid_util$get_oid 000032 constant entry external dcl 83 ref 107 165 bj_path_to_uid_relation 1 based structure array level 2 dcl 5-15 bj_pn_table based structure level 1 dcl 5-15 bj_pn_table_ptr 000204 automatic pointer dcl 5-13 set ref 126* 128 129 bj_ppt_search 000010 constant entry external dcl 74 ref 103 bj_ppte based structure level 1 dcl 2-39 bj_ppte_create 000030 constant entry external dcl 82 ref 159 bj_ppte_ptr 000200 automatic pointer dcl 2-37 set ref 103* 105 107* 108* 159* 165* bj_ppte_register$check_in 000012 constant entry external dcl 75 ref 108 bj_pst based structure level 1 dcl 3-18 bj_pst_lock 000014 constant entry external dcl 76 ref 114 bj_pst_lock$unlock 000020 constant entry external dcl 78 ref 120 150 161 bj_pst_search 000016 constant entry external dcl 77 ref 116 bj_pste based structure level 1 dcl 4-48 bj_pste_ptr 000202 automatic pointer dcl 4-45 set ref 116* 118 128 129 157* 159* bj_pste_register$check_in 000026 constant entry external dcl 81 ref 157 bj_report_err 000034 constant entry external dcl 84 ref 187 bj_uid 000102 automatic bit(36) dcl 52 set ref 98* 103* 116* 159* 178 bjm_data_$bj_pst_ptr 000050 external static pointer dcl 93 ref 126 126 call_fm_close_when_done 000166 automatic bit(1) dcl 56 set ref 146* 153* 167 cleanup 000172 stack reference condition dcl 66 ref 138 code 000100 automatic fixed bin(35,0) dcl 50 set ref 143* 146 146 151* 170* cu_$level_get 000040 constant entry external dcl 86 ref 135 cu_$level_set 000036 constant entry external dcl 85 ref 138 142 144 169 171 current_ring 000167 automatic fixed bin(3,0) dcl 57 set ref 136* 142 169 dir 1 based char(168) array level 3 dcl 5-15 ref 128 dm_error_$bj_journal_not_registered 000046 external static fixed bin(35,0) dcl 92 set ref 121* dm_error_$file_already_open 000044 external static fixed bin(35,0) dcl 91 ref 146 entry 53 based char(32) array level 3 dcl 5-15 ref 129 er_code parameter fixed bin(35,0) dcl 185 set ref 182 187* file_manager_$close 000024 constant entry external dcl 80 ref 170 file_manager_$open 000022 constant entry external dcl 79 ref 143 fm_oid 000165 automatic bit(36) dcl 55 set ref 143* 159* 170* get_ring_ 000042 constant entry external dcl 87 ref 136 null builtin function dcl 62 ref 105 118 p_bj_oid parameter bit(36) dcl 46 set ref 38 99 176* p_bj_uid parameter bit(36) dcl 45 set ref 38 98 178* pn_table_offset 11 based fixed bin(18,0) level 2 unsigned dcl 3-18 ref 126 ptr builtin function dcl 62 ref 126 saved_level 000170 automatic fixed bin(17,0) dcl 58 set ref 135* 138* 144* 171* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_PPTE_VERSION_1 internal static fixed bin(17,0) initial dcl 2-14 BJ_PPT_VERSION_1 internal static fixed bin(17,0) initial dcl 2-13 BJ_PSTE_VERSION_2 internal static fixed bin(17,0) initial dcl 4-42 BJ_PST_VERSION_1 internal static fixed bin(17,0) initial dcl 3-14 bj_ppt based structure level 1 dcl 2-18 bj_ppt_ptr automatic pointer dcl 2-16 bj_pst_ptr automatic pointer dcl 3-16 dm_system_data_$bj_max_n_journals external static fixed bin(17,0) dcl 1-8 dm_system_data_$bj_max_n_processes external static fixed bin(17,0) dcl 1-9 dm_system_data_$max_n_transactions external static fixed bin(17,0) dcl 1-10 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000406 constant entry internal dcl 182 ref 121 151 MAIN_RETURN 000400 constant label dcl 176 set ref 109 188 bj_open_by_uid 000026 constant entry external dcl 38 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 666 740 432 676 Length 1246 432 52 272 234 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_open_by_uid 176 external procedure is an external procedure. on unit on line 138 68 on unit ERROR_RETURN internal procedure shares stack frame of external procedure bj_open_by_uid. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_open_by_uid 000100 code bj_open_by_uid 000101 bj_oid bj_open_by_uid 000102 bj_uid bj_open_by_uid 000103 bj_dir bj_open_by_uid 000155 bj_entry bj_open_by_uid 000165 fm_oid bj_open_by_uid 000166 call_fm_close_when_done bj_open_by_uid 000167 current_ring bj_open_by_uid 000170 saved_level bj_open_by_uid 000200 bj_ppte_ptr bj_open_by_uid 000202 bj_pste_ptr bj_open_by_uid 000204 bj_pn_table_ptr bj_open_by_uid 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_oid_util$get_oid bj_ppt_search bj_ppte_create bj_ppte_register$check_in bj_pst_lock bj_pst_lock$unlock bj_pst_search bj_pste_register$check_in bj_report_err cu_$level_get cu_$level_set file_manager_$close file_manager_$open get_ring_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_pst_ptr dm_error_$bj_journal_not_registered dm_error_$file_already_open LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 38 000022 98 000033 99 000036 103 000040 105 000050 107 000054 108 000065 109 000074 114 000075 116 000102 118 000113 120 000117 121 000124 126 000133 128 000142 129 000151 135 000155 136 000163 138 000172 142 000216 143 000227 144 000254 146 000263 150 000273 151 000277 152 000301 153 000302 157 000303 159 000312 161 000327 165 000334 167 000345 169 000347 170 000360 171 000371 176 000400 178 000403 179 000405 182 000406 187 000410 188 000425 ----------------------------------------------------------- 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