COMPILATION LISTING OF SEGMENT tm_get_txn_info Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/05/85 0913.5 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 /* format: style4,ifthenstmt,^indproc,^indcomtxt */ 7 /*---------------*/ 8 9 tm_get_txn_info: 10 proc (A_txn_id, A_txn_info_ptr, A_code); 11 12 /* DESCRIPTION: 13* 14* This procedure looks up the specified transaction and returns 15* info about it in dm_tm_txn_info.incl.pl1. The $tm_get_txn_info_index 16* entry point does the same but uses a txn_index to find the TDT entry. 17**/ 18 19 /* HISTORY: 20*Written by Steve Herbst, 08/06/82. 21*Modified: 22*08/16/82 by Steve Herbst: Changed to use dm_data_$tm_tdt_ptr and consolidated 23* dm_tm_tdt.incl.pl1 with entry declarations. 24*08/23/82 by Steve Herbst: Fixed to initialize A_code. 25*09/10/82 by Steve Herbst: Changed for Version 2 TDT structure. 26*10/15/82 by Steve Herbst: Changed to assume current transaction given "0"b. 27*01/18/83 by Steve Herbst: Converted to Version 2, adding recent TDT additions. 28*04/20/83 by Steve Herbst: Added $tm_get_txn_info_index, does same but looks up 29* TIX not TID. 30*05/10/83 by Steve Herbst: Version 3: Changed to copy some bj_txt fields into 31* txn_info.journal_info (new). 32*05/27/83 by Steve Herbst: Version 4: Added checkpoint_id & rollback_count. 33*05/10/84 by Steve Herbst: Fixed to require dm_admin_gate_ access for other 34* user's transactions. 35*05/15/84 by L. A. Newcomb: Fixed reference to error_table_$bad_version 36* (non-existant) to $unimplemented_version and to handle a version 5 37* txn_info without returning $unimplemented_version. 38*10/17/84 by Steve Herbst: Changed in response to audit comments. 39**/ 40 41 /* DECLARATIONS */ 42 43 /* Parameters */ 44 45 dcl A_txn_id bit (36) aligned; 46 dcl A_txn_index fixed bin; 47 dcl A_txn_info_ptr ptr; 48 dcl A_code fixed bin (35); 49 50 /* Constants */ 51 52 /* Based */ 53 54 /* Static */ 55 56 /* Automatic */ 57 58 dcl dummy_entry entry variable; 59 dcl (person, txn_person) char (22); 60 dcl saved_version char (8); 61 dcl txn_id bit (36) aligned; 62 dcl (dot_pos, txn_index) fixed bin; 63 64 /* External */ 65 66 dcl dm_admin_gate_$ entry ext; 67 dcl dm_data_$bj_txt_ptr ptr ext; 68 dcl dm_data_$current_txn_index fixed bin ext; 69 dcl dm_data_$tm_tdt_ptr ptr external; 70 dcl dm_error_$no_current_transaction fixed bin (35) ext; 71 dcl dm_error_$not_own_transaction fixed bin (35) ext; 72 dcl dm_error_$transaction_not_found fixed bin (35) ext; 73 dcl error_table_$unimplemented_version fixed bin (35) ext; 74 75 /* Entries */ 76 77 dcl tm_get_txn_index entry (bit (36) aligned, fixed bin (35)) returns (fixed bin); 78 dcl user_info_ entry (char (*)); 79 80 /* Builtins */ 81 82 dcl (index, substr, unspec) builtin; 83 84 /* Conditions */ 85 86 dcl linkage_error condition; 87 88 /* END OF DECLARATIONS */ 89 90 A_code = 0; 91 92 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 93 94 if tm_tdt.version ^= TM_TDT_VERSION_3 then call ERROR_RETURN (error_table_$unimplemented_version); 95 96 if A_txn_id = "0"b then /* use current txn */ 97 if dm_data_$current_txn_index = 0 then call ERROR_RETURN (dm_error_$no_current_transaction); 98 else do; 99 txn_index = dm_data_$current_txn_index; 100 txn_id = tm_tdt.txn_id (dm_data_$current_txn_index); 101 end; 102 else do; 103 txn_id = A_txn_id; 104 txn_index = tm_get_txn_index (txn_id, A_code); 105 if A_code ^= 0 then return; 106 end; 107 108 go to COMMON; 109 110 111 tm_get_txn_info_index: entry (A_txn_index, A_txn_info_ptr, A_code); 112 113 A_code = 0; 114 115 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 116 117 if tm_tdt.version ^= TM_TDT_VERSION_3 then call ERROR_RETURN (error_table_$unimplemented_version); 118 119 txn_index = A_txn_index; 120 121 if txn_index < 1 | txn_index > tm_tdt.entry_count then call ERROR_RETURN (dm_error_$transaction_not_found); 122 123 txn_id = tm_tdt.txn_id (txn_index); 124 125 COMMON: 126 txn_info_ptr = A_txn_info_ptr; 127 128 if txn_info.version ^= TXN_INFO_VERSION_5 then call ERROR_RETURN (error_table_$unimplemented_version); 129 130 /* Require dm_admin_gate_ access if not own transaction */ 131 132 dot_pos = index (tm_tdt.owner_name (txn_index), "."); 133 if dot_pos = 0 then txn_person = tm_tdt.owner_name (txn_index); 134 else txn_person = substr (tm_tdt.owner_name (txn_index), 1, dot_pos - 1); 135 call user_info_ (person); 136 if txn_person ^= person then do; 137 138 on linkage_error call ERROR_RETURN (dm_error_$not_own_transaction); 139 140 dummy_entry = dm_admin_gate_$; 141 142 revert linkage_error; 143 end; 144 145 txn_info.txn_id = txn_id; 146 txn_info.txn_index = txn_index; 147 txn_info.mode = tm_tdt.mode (txn_index); 148 txn_info.state = tm_tdt.state (txn_index); 149 txn_info.error_code = tm_tdt.error_code (txn_index); 150 txn_info.checkpoint_id = tm_tdt.checkpoint_id (txn_index); 151 txn_info.rollback_count = tm_tdt.rollback_count (txn_index); 152 txn_info.owner_process_id = tm_tdt.process_id (txn_index); 153 txn_info.owner_name = tm_tdt.owner_name (txn_index); 154 txn_info.date_time_created = tm_tdt.date_time_created (txn_index); 155 txn_info.dead_process_sw = tm_tdt.dead_process_sw (txn_index); 156 txn_info.suspended_sw = tm_tdt.suspended_sw (txn_index); 157 txn_info.error_sw = tm_tdt.error_sw (txn_index); 158 txn_info.abandoned_sw = tm_tdt.abandoned_sw (txn_index); 159 txn_info.kill_sw = tm_tdt.kill_sw (txn_index); 160 161 /* Really need a bjm_ entry point that returns the following information. 162* Transaction manager shouldn't look in the BJ TXT */ 163 164 bj_txt_ptr = dm_data_$bj_txt_ptr; 165 166 txn_info.bj_uid = bj_txt.bj_uid (txn_index); 167 txn_info.bj_oid = bj_txt.bj_oid (txn_index); 168 txn_info.last_completed_operation = bj_txt.last_completed_operation (txn_index); 169 txn_info.first_bj_rec_id = bj_txt.first_bj_rec_id (txn_index); 170 txn_info.last_bj_rec_id = bj_txt.last_bj_rec_id (txn_index); 171 txn_info.n_rec_written = bj_txt.n_rec_written (txn_index); 172 txn_info.n_bytes_written = bj_txt.n_bytes_written (txn_index); 173 RETURN: 174 return; 175 176 ERROR_RETURN: proc (P_code); 177 178 dcl P_code fixed bin (35); 179 180 A_code = P_code; 181 go to RETURN; 182 183 end ERROR_RETURN; 184 1 1 /* BEGIN INCLUDE FILE: dm_bj_txt.incl.pl1 */ 1 2 /* 1 3*dm_bj_txt - before journal per-system transaction table. 1 4* 1 5*Designed by A. Bensoussan 1 6*Written by M. Pandolf 06/02/82 1 7*Modified: 1 8*10/01/82 by Lee A. Newcomb: To use dm_system_data_ for dimension attributes 1 9* and specify alignment on level one. 1 10*08feb83 by M. Pandolf: To restructure the TXT and TXTE. 1 11*30mar83 by M. Pandolf: To add last_completed_operation and ok_to_write. 1 12**/ 1 13 /* format: style4,indattr,idind33,^indcomtxt */ 1 14 1 15 dcl BJ_TXT_VERSION_1 fixed bin int static options (constant) init (1); 1 16 1 17 dcl bj_txt_ptr ptr; /* pointer to transaction table */ 1 18 dcl bj_txte_ptr ptr; /* pointer to transaction table element */ 1 19 1 20 dcl 1 bj_txt aligned based (bj_txt_ptr), /* transaction table */ 1 21 2 version fixed bin, /* should be BJ_TXT_VERSION_1 */ 1 22 2 max_n_entries fixed bin, 1 23 2 n_entries_used fixed bin, /* assumed contiguous */ 1 24 2 pad_header_to_32_words bit (36) dim (29), /* to mod32 align bj_txt.entry */ 1 25 2 entry dim (dm_system_data_$max_n_transactions refer (bj_txt.max_n_entries)) 1 26 like bj_txte; 1 27 1 28 dcl 1 bj_txte based (bj_txte_ptr) aligned, /* single entry, must be mod32 word aligned */ 1 29 2 tid bit (36), /* transaction id if this or last txn */ 1 30 2 bj_uid bit (36), /* UID of before journal chosen at begin mark */ 1 31 2 entry_state aligned, 1 32 3 last_completed_operation char (4), /* to prevent multiple abort and commit */ 1 33 3 ok_to_write bit (1), /* basically validates using this entry */ 1 34 2 owner_info aligned, /* info about creation of txte */ 1 35 3 process_id bit (36), /* of process that wrote begin mark */ 1 36 2 operator_info aligned, /* of process that is currently using this txte */ 1 37 3 process_id bit (36), /* of process that shall write subsequent marks */ 1 38 3 ppte_ptr ptr, /* pointer to PPTE for this transaction */ 1 39 3 bj_oid bit (36), /* before journal opening ID for operator */ 1 40 2 records_info aligned, /* grouped to be saved and restored as one unit */ 1 41 3 curr_checkpoint_rec_id bit (36), /* ident of checkpoint record if doing a rollback, */ 1 42 /* else, this value must be zero. */ 1 43 3 first_bj_rec_id bit (36), /* ident of first mark for this transaction */ 1 44 3 last_bj_rec_id bit (36), /* ident of current mark for this transaction */ 1 45 3 n_rec_written fixed bin (35), /* count of marks written for this transaction */ 1 46 3 n_bytes_written fixed bin (35), /* count of total bytes written to journal */ 1 47 3 last_fm_postcommit_handler_rec_id 1 48 bit (36), /* ident of last special handler in list */ 1 49 2 append_state aligned, /* the first two members define the state of this */ 1 50 3 current_operation char (4), /* transaction and its interaction with bj_storage: */ 1 51 3 pending_bj_rec_id bit (36), /* operation rec_id state */ 1 52 /* *null* XXX quiesed */ 1 53 /* ^null "0"b write pending */ 1 54 /* ^null ^"0"b write completed, needs flushing */ 1 55 /* */ 1 56 3 pending_n_rec_written fixed bin (35), /* copy to n_rec_written before flush */ 1 57 3 pending_n_bytes_written fixed bin (35), /* copy to n_bytes_written before flush */ 1 58 2 pad_entry_to_32_words bit (36) dim (13); /* make any part of table 32 words long */ 1 59 1 60 /* END INCLUDE FILE: dm_bj_txt_ptr */ 185 186 2 1 /* START OF: dm_tm_tdt.incl.pl1 */ 2 2 2 3 /* Transaction Definition Table for transaction_manager_ */ 2 4 /* This structure is used to reference the TDT. The process_id field for the 2 5* i'th TDT entry, for example, is usually referenced as tm_tdt.process_id (i). 2 6* A TDT entry is in use by a process when its process_id field is nonzero. 2 7* An entry is reserved by using the stacq builtin to set process_id, if and 2 8* only if it is already zero. The entry is being used for a transaction when 2 9* tm_tdt.txn_id (i) is nonzero. The possible values of tm_tdt.state (i) are 2 10* listed in dm_tm_states.incl.pl1. If state = 0, no operation has been 2 11* performed yet on the transaction. */ 2 12 2 13 2 14 /* HISTORY: 2 15*Designed by Matt Pierret, 01/26/82. 2 16*Coded by Steve Herbst, 07/27/82. 2 17*Modified: 2 18*08/05/82 by Steve Herbst: Added tm_tdt.operation and padded last_uid to full word. 2 19*08/05/82 by Steve Herbst: Changed creator_process_id to bit (36). 2 20*08/16/82 by Steve Herbst: Added contents of dm_tm_tdt_entry.incl.pl1. 2 21*09/09/82 by Steve Herbst: Removed in_use flag from TDT entry and rearranged fields. 2 22*09/20/82 by Steve Herbst: Removed tm_tdt.operation. 2 23*11/01/82 by Steve Herbst: Added event_channel and error_sw to tm_tdt_entry. 2 24*11/05/82 by Steve Herbst: Added suspended_sw and error_code to tm_tdt_entry. 2 25*11/11/82 by Steve Herbst: Deleted tm_tdt_entry.alloc_complete. 2 26*11/23/82 by Steve Herbst: Compacted, changed some numbers to unsigned. 2 27*12/14/82 by Steve Herbst: Added tm_tdt_entry.daemon_error_sw. 2 28*01/11/83 by Steve Herbst: Added owner_name, abandoned_sw & kill_sw to tm_tdt_entry. 2 29*01/24/83 by Steve Herbst: Replaced daemon_error_sw with daemon_adjust_count. 2 30*01/25/83 by Steve Herbst: Moved abandoned_sw from transaction portion to entry header portion. 2 31*05/13/83 by Steve Herbst: Version 3, changed all fixed bin (18) unal uns numbers to fixed bin (17) unaligned. 2 32*05/26/83 by Steve Herbst: Added rollback_count and checkpoint_id. 2 33**/ 2 34 2 35 dcl tm_tdt_ptr ptr; 2 36 dcl tdt_max_count fixed bin; 2 37 2 38 dcl TM_TDT_VERSION_3 char (8) int static options (constant) init ("TM-TDT 3"); 2 39 2 40 2 41 dcl 1 tm_tdt aligned based (tm_tdt_ptr), 2 42 2 version char (8), /* = "TM-TDT 3" */ 2 43 2 lock fixed bin (71), /* (currently not used) */ 2 44 2 last_uid bit (27) aligned, /* last transaction uid assigned */ 2 45 2 flags, 2 46 3 no_begins bit (1) unaligned, /* ON => only priv process can begin transaction */ 2 47 3 mbz1 bit (35) unaligned, 2 48 2 entry_count fixed bin, /* number of slots allocated */ 2 49 2 mbz2 fixed bin, /* for even word boundary */ 2 50 2 entry (tdt_max_count refer (tm_tdt.entry_count)) 2 51 like tm_tdt_entry; 2 52 2 53 2 54 2 55 /* TDT entries: */ 2 56 2 57 dcl tm_tdt_entry_ptr ptr; 2 58 2 59 dcl 1 tm_tdt_entry aligned based (tm_tdt_entry_ptr), 2 60 2 event_channel fixed bin (71), /* for communication with the process */ 2 61 2 process_id bit (36) aligned, /* process for which this entry is reserved */ 2 62 2 owner_name char (32), /* person.project of owner process */ 2 63 2 entry_flags, 2 64 3 abandoned_sw bit (1) unaligned, /* ON => owner has called tm_$abandon on this entry */ 2 65 3 mbz3 bit (35) unaligned, 2 66 2 transaction unaligned, 2 67 3 txn_id bit (36) aligned, /* unique identifier assigned at begin time */ 2 68 3 date_time_created fixed bin (71) aligned, 2 69 3 mode fixed bin (17) unaligned, /* mode specified with transaction begin */ 2 70 3 state fixed bin (17) unaligned, /* state transaction is currently in */ 2 71 3 error_code fixed bin (35) aligned, /* goes along with error_sw and error state */ 2 72 3 checkpoint_id fixed bin (17) unaligned, /* identifier of the current rollback checkpoint */ 2 73 3 rollback_count fixed bin (17) unaligned, /* number of times bjm_$rollback has been called */ 2 74 3 daemon_adjust_count fixed bin (17) unaligned, /* number of times daemon has tried to adjust since user */ 2 75 3 return_idx fixed bin (17) unaligned, /* parent transaction, or zero */ 2 76 3 flags, 2 77 4 dead_process_sw bit (1) unaligned, /* ON => treat process as dead even if it isn't yet */ 2 78 4 suspended_sw bit (1) unaligned, /* ON => suspended by tm_$suspend_txn */ 2 79 4 error_sw bit (1) unaligned, /* ON => state is one of the error states */ 2 80 4 kill_sw bit (1) unaligned, /* ON => being processed by tm_$kill */ 2 81 4 mbz4 bit (29) unaligned, 2 82 3 post_commit_flags, 2 83 4 (fmgr, 2 84 bjmgr, 2 85 ajmgr) bit (1) unaligned, 2 86 3 mbz4 fixed bin; 2 87 2 88 2 89 /* END OF: dm_tm_tdt.incl.pl1 */ 187 188 3 1 /* START OF: dm_tm_txn_info.incl.pl1 */ 3 2 3 3 /* HISTORY: 3 4* 3 5*Designed by Matt Pierret, 01/26/82. 3 6*Coded by Steve Herbst, 08/06/82. 3 7*Modified: 3 8*01/18/83 by Steve Herbst: Version 2, added new TDT info. 3 9*05/06/83 by Steve Herbst: Version 3, added journal_info. 3 10*05/27/83 by Steve Herbst: Version 4, added checkpoint_id & rollback_count. 3 11*05/10/84 by Steve Herbst: Version 5, added bj_oid. 3 12**/ 3 13 3 14 dcl 1 txn_info aligned based (txn_info_ptr), 3 15 2 version char (8), /* = "TXNINF05" */ 3 16 2 txn_id bit (36) aligned, /* unique id of transaction */ 3 17 2 txn_index fixed bin, /* index of TDT entry */ 3 18 2 mode fixed bin, /* mode in which transaction was begun */ 3 19 2 state fixed bin, /* current state of transaction */ 3 20 2 error_code fixed bin (35), /* nonzero if error_sw is ON */ 3 21 2 checkpoint_id fixed bin, /* number of current checkpoint (0 = begin) */ 3 22 2 rollback_count fixed bin, /* number of times bjm_$rollback has been called */ 3 23 2 owner_process_id bit (36), /* id of process that began and owns the txn */ 3 24 2 owner_name char (32), /* Person.Project of owner process */ 3 25 2 date_time_created fixed bin (71), 3 26 2 flags, 3 27 3 dead_process_sw bit (1) unaligned, 3 28 3 suspended_sw bit (1) unaligned, 3 29 3 error_sw bit (1) unaligned, 3 30 3 abandoned_sw bit (1) unaligned, 3 31 3 kill_sw bit (1) unaligned, 3 32 3 mbz bit (31) unaligned, 3 33 2 journal_info aligned, /* NEW in Version 3 */ 3 34 3 bj_uid bit (36), /* UID of before journal chosen at begin time */ 3 35 3 bj_oid bit (36), /* perprocess opening id of before journal */ 3 36 3 last_completed_operation 3 37 char (4), 3 38 3 first_bj_rec_id bit (36), /* id of first mark for this transaction */ 3 39 3 last_bj_rec_id bit (36), /* id of last mark for this transaction */ 3 40 3 n_rec_written fixed bin (35), /* number of marks written for this transaction */ 3 41 3 n_bytes_written fixed bin (35); /* total number of bytes written to the journal */ 3 42 3 43 3 44 dcl txn_info_ptr ptr; 3 45 3 46 dcl TXN_INFO_VERSION_5 char (8) int static options (constant) init ("TXNINF05"); 3 47 3 48 3 49 /* END OF: dm_tm_txn_info.incl.pl1 */ 189 190 191 192 end tm_get_txn_info; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/05/85 0759.9 tm_get_txn_info.pl1 >spec>on>7138.pbf>tm_get_txn_info.pl1 185 1 01/07/85 0858.0 dm_bj_txt.incl.pl1 >ldd>include>dm_bj_txt.incl.pl1 187 2 01/07/85 0900.1 dm_tm_tdt.incl.pl1 >ldd>include>dm_tm_tdt.incl.pl1 189 3 01/07/85 0900.2 dm_tm_txn_info.incl.pl1 >ldd>include>dm_tm_txn_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. A_code parameter fixed bin(35,0) dcl 48 set ref 9 90* 104* 105 111 113* 180* A_txn_id parameter bit(36) dcl 45 ref 9 96 103 A_txn_index parameter fixed bin(17,0) dcl 46 ref 111 119 A_txn_info_ptr parameter pointer dcl 47 ref 9 111 125 P_code parameter fixed bin(35,0) dcl 178 ref 176 180 TM_TDT_VERSION_3 000002 constant char(8) initial unaligned dcl 2-38 ref 94 117 TXN_INFO_VERSION_5 000000 constant char(8) initial unaligned dcl 3-46 ref 128 abandoned_sw 24(03) based bit(1) level 3 in structure "txn_info" packed unaligned dcl 3-14 in procedure "tm_get_txn_info" set ref 158* abandoned_sw 23 based bit(1) array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 158 bj_oid 26 based bit(36) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 167* bj_oid 52 based bit(36) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 167 bj_txt based structure level 1 dcl 1-20 bj_txt_ptr 000132 automatic pointer dcl 1-17 set ref 164* 166 167 168 169 170 171 172 bj_txte based structure level 1 dcl 1-28 bj_uid 41 based bit(36) array level 3 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 166 bj_uid 25 based bit(36) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 166* checkpoint_id 32 based fixed bin(17,0) array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 150 checkpoint_id 7 based fixed bin(17,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 150* date_time_created 22 based fixed bin(71,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 154* date_time_created 26 based fixed bin(71,0) array level 4 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" ref 154 dead_process_sw 24 based bit(1) level 3 in structure "txn_info" packed unaligned dcl 3-14 in procedure "tm_get_txn_info" set ref 155* dead_process_sw 34 based bit(1) array level 5 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 155 dm_admin_gate_$ 000010 constant entry external dcl 66 ref 140 dm_data_$bj_txt_ptr 000012 external static pointer dcl 67 ref 164 dm_data_$current_txn_index 000014 external static fixed bin(17,0) dcl 68 ref 96 99 100 dm_data_$tm_tdt_ptr 000016 external static pointer dcl 69 ref 92 115 dm_error_$no_current_transaction 000020 external static fixed bin(35,0) dcl 70 set ref 96* dm_error_$not_own_transaction 000022 external static fixed bin(35,0) dcl 71 set ref 138* dm_error_$transaction_not_found 000024 external static fixed bin(35,0) dcl 72 set ref 121* dot_pos 000121 automatic fixed bin(17,0) dcl 62 set ref 132* 133 134 dummy_entry 000100 automatic entry variable dcl 58 set ref 140* entry 40 based structure array level 2 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" entry 10 based structure array level 2 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" entry_count 6 based fixed bin(17,0) level 2 dcl 2-41 ref 121 entry_flags 23 based structure array level 3 dcl 2-41 entry_state 42 based structure array level 3 dcl 1-20 error_code 31 based fixed bin(35,0) array level 4 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" ref 149 error_code 6 based fixed bin(35,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 149* error_sw 24(02) based bit(1) level 3 in structure "txn_info" packed unaligned dcl 3-14 in procedure "tm_get_txn_info" set ref 157* error_sw 34(02) based bit(1) array level 5 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 157 error_table_$unimplemented_version 000026 external static fixed bin(35,0) dcl 73 set ref 94* 117* 128* first_bj_rec_id 54 based bit(36) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 169 first_bj_rec_id 30 based bit(36) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 169* flags 24 based structure level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" flags 34 based structure array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" index builtin function dcl 82 ref 132 journal_info 25 based structure level 2 dcl 3-14 kill_sw 34(03) based bit(1) array level 5 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 159 kill_sw 24(04) based bit(1) level 3 in structure "txn_info" packed unaligned dcl 3-14 in procedure "tm_get_txn_info" set ref 159* last_bj_rec_id 31 based bit(36) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 170* last_bj_rec_id 55 based bit(36) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 170 last_completed_operation 27 based char(4) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 168* last_completed_operation 42 based char(4) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 168 linkage_error 000124 stack reference condition dcl 86 ref 138 142 mode 4 based fixed bin(17,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 147* mode 30 based fixed bin(17,0) array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 147 n_bytes_written 57 based fixed bin(35,0) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 172 n_bytes_written 33 based fixed bin(35,0) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 172* n_rec_written 32 based fixed bin(35,0) level 3 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 171* n_rec_written 56 based fixed bin(35,0) array level 4 in structure "bj_txt" dcl 1-20 in procedure "tm_get_txn_info" ref 171 operator_info 46 based structure array level 3 dcl 1-20 owner_name 12 based char(32) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 153* owner_name 13 based char(32) array level 3 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" ref 132 133 134 153 owner_process_id 11 based bit(36) level 2 dcl 3-14 set ref 152* person 000104 automatic char(22) unaligned dcl 59 set ref 135* 136 process_id 12 based bit(36) array level 3 dcl 2-41 ref 152 records_info 53 based structure array level 3 dcl 1-20 rollback_count 10 based fixed bin(17,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 151* rollback_count 32(18) based fixed bin(17,0) array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 151 state 30(18) based fixed bin(17,0) array level 4 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 148 state 5 based fixed bin(17,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 148* substr builtin function dcl 82 ref 134 suspended_sw 24(01) based bit(1) level 3 in structure "txn_info" packed unaligned dcl 3-14 in procedure "tm_get_txn_info" set ref 156* suspended_sw 34(01) based bit(1) array level 5 in structure "tm_tdt" packed unaligned dcl 2-41 in procedure "tm_get_txn_info" ref 156 tm_get_txn_index 000030 constant entry external dcl 77 ref 104 tm_tdt based structure level 1 dcl 2-41 tm_tdt_entry based structure level 1 dcl 2-59 tm_tdt_ptr 000134 automatic pointer dcl 2-35 set ref 92* 94 100 115* 117 121 123 132 133 134 147 148 149 150 151 152 153 154 155 156 157 158 159 transaction 24 based structure array level 3 unaligned dcl 2-41 txn_id 2 based bit(36) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 145* txn_id 000120 automatic bit(36) dcl 61 in procedure "tm_get_txn_info" set ref 100* 103* 104* 123* 145 txn_id 24 based bit(36) array level 4 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" ref 100 123 txn_index 3 based fixed bin(17,0) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" set ref 146* txn_index 000122 automatic fixed bin(17,0) dcl 62 in procedure "tm_get_txn_info" set ref 99* 104* 119* 121 121 123 132 133 134 146 147 148 149 150 151 152 153 154 155 156 157 158 159 166 167 168 169 170 171 172 txn_info based structure level 1 dcl 3-14 txn_info_ptr 000136 automatic pointer dcl 3-44 set ref 125* 128 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 166 167 168 169 170 171 172 txn_person 000112 automatic char(22) unaligned dcl 59 set ref 133* 134* 136 user_info_ 000032 constant entry external dcl 78 ref 135 version based char(8) level 2 in structure "tm_tdt" dcl 2-41 in procedure "tm_get_txn_info" ref 94 117 version based char(8) level 2 in structure "txn_info" dcl 3-14 in procedure "tm_get_txn_info" ref 128 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_TXT_VERSION_1 internal static fixed bin(17,0) initial dcl 1-15 bj_txte_ptr automatic pointer dcl 1-18 saved_version automatic char(8) unaligned dcl 60 tdt_max_count automatic fixed bin(17,0) dcl 2-36 tm_tdt_entry_ptr automatic pointer dcl 2-57 unspec builtin function dcl 82 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000167 constant label dcl 125 ref 108 ERROR_RETURN 000427 constant entry internal dcl 176 ref 94 96 117 121 128 138 RETURN 000425 constant label dcl 173 ref 181 tm_get_txn_info 000021 constant entry external dcl 9 tm_get_txn_info_index 000115 constant entry external dcl 111 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 650 704 446 660 Length 1142 446 34 221 202 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tm_get_txn_info 111 external procedure is an external procedure. on unit on line 138 70 on unit ERROR_RETURN 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tm_get_txn_info 000100 dummy_entry tm_get_txn_info 000104 person tm_get_txn_info 000112 txn_person tm_get_txn_info 000120 txn_id tm_get_txn_info 000121 dot_pos tm_get_txn_info 000122 txn_index tm_get_txn_info 000132 bj_txt_ptr tm_get_txn_info 000134 tm_tdt_ptr tm_get_txn_info 000136 txn_info_ptr tm_get_txn_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_admin_gate_$ tm_get_txn_index user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_data_$bj_txt_ptr dm_data_$current_txn_index dm_data_$tm_tdt_ptr dm_error_$no_current_transaction dm_error_$not_own_transaction dm_error_$transaction_not_found error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000015 90 000026 92 000030 94 000033 96 000046 99 000063 100 000064 101 000070 103 000071 104 000072 105 000105 108 000110 111 000111 113 000122 115 000124 117 000130 119 000143 121 000146 123 000162 125 000167 128 000173 132 000206 133 000224 134 000231 135 000242 136 000253 138 000257 140 000303 142 000310 145 000311 146 000314 147 000316 148 000324 149 000330 150 000332 151 000335 152 000341 153 000343 154 000347 155 000351 156 000355 157 000361 158 000365 159 000372 164 000377 166 000403 167 000410 168 000412 169 000414 170 000416 171 000420 172 000423 173 000425 176 000426 180 000434 181 000441 ----------------------------------------------------------- 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