COMPILATION LISTING OF SEGMENT tm_commit Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1154.54_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(86-02-27,Pierret), approve(86-02-27,MCR7340), 10* audit(86-04-28,Newcomb), install(86-05-06,MR12.0-1054): 11* Changed to execute file_mangaer_$post_transaction before unlocking locks. 12* END HISTORY COMMENTS */ 13 14 15 /* format: style4,ifthenstmt,^indproc,^indcomtxt */ 16 /*---------------*/ 17 18 tm_commit: proc (A_txn_id, A_code); 19 20 /* DESCRIPTION: 21* 22* This procedure implements transaction_manager_$commit_txn 23* Committing a transaction consists of flushing all modifications to disk 24* and writing a committed-mark in the journal. After being committed, the 25* transaction disappears. 26**/ 27 28 /* HISTORY: 29* 30*04/23/85 by Matthew C. Pierret: Switched order of calls to 31* file_manager_$post_transaction and lock_manager_$unlock_all. This 32* allows file_manager_$post_transaction to operate underthe safety 33* of the locks acquired by the transaction. 34*Written by Steve Herbst, 08/09/82. */ 35 /* Modified: 36*08/16/82 by Steve Herbst: Changed to use dm_data_$tm_tdt_ptr and new 37* dm_tm_tdt.incl.pl1 38*08/23/82 by Steve Herbst: Fixed to initialize A_code. 39*08/26/82 by Steve Herbst: Changed calling sequence of bjm_$flush_transaction. 40*09/10/82 by Steve Herbst: Changed to eliminate locking. 41*09/23/82 by Lindsey Spratt: Changed to use new lock_manager_ calling sequence. 42*10/04/82 by Steve Herbst: Changed to just abort if in one of the test modes. 43*10/14/82 by Steve Herbst: Change pfm_ calling sequence and added check for 44* funny states. 45*10/28/82 by Steve Herbst: Changed to always call fm_$post_commit (rather than 46* check post-commit flag in TDT). 47*11/01/82 by Steve Herbst: Made to turn on txn's error_sw for error states. 48*11/05/82 by Steve Herbst: Made to set tm_tdt.error_code on error return. 49*01/12/83 by Steve Herbst: Made to log its errors. 50*01/14/83 by Steve Herbst: Changed to complete previous error commit, and to 51* call tm_error_state. 52*03/28/84 by Lee A. Newcomb: changed tm_get_state_info call to be 53* transaction_manager_$get_state_info. 54*09/27/84 by Steve Herbst: Changed in response to audit comments. 55*02/07/85 by S. Cox: Added fm$post_transaction call (moved from lm_per_system_) 56* Added addr dcl. 57**/ 58 59 /* DECLARATIONS */ 60 61 /* Parameters */ 62 63 dcl A_txn_id bit (36) aligned; 64 dcl A_code fixed bin (35); 65 66 67 /* Constants */ 68 69 dcl ME char (32) int static options (constant) init ("tm_commit"); 70 71 /* Based */ 72 73 /* Static */ 74 75 /* Automatic */ 76 77 dcl op_name char (32); 78 dcl txn_id bit (36) aligned; 79 dcl (mode, txn_index) fixed bin; 80 dcl (code, op_error_code) fixed bin (35); 81 82 /* External */ 83 84 dcl dm_data_$current_txn_id bit (36) aligned ext; 85 dcl dm_data_$current_txn_index fixed bin ext; 86 dcl dm_data_$my_process_id bit (36) ext; 87 dcl dm_data_$suspended_txn_index fixed bin ext; 88 dcl dm_data_$tm_tdt_ptr ptr external; 89 dcl dm_error_$invalid_current_txn fixed bin (35) ext; 90 dcl dm_error_$no_current_transaction fixed bin (35) ext; 91 dcl dm_error_$not_own_transaction fixed bin (35) ext; 92 dcl dm_error_$transaction_not_current fixed bin (35) ext; 93 dcl dm_error_$transaction_suspended fixed bin (35) ext; 94 dcl error_table_$unimplemented_version fixed bin (35) ext; 95 96 /* Entries */ 97 98 dcl before_journal_manager_$flush_transaction entry (bit (36) aligned, fixed bin, fixed bin (35)); 99 dcl before_journal_manager_$write_committed_mark entry (bit (36) aligned, fixed bin, fixed bin (35)); 100 dcl lock_manager_$unlock_all entry; 101 dcl file_manager_$flush_modified_ci entry (bit (36) aligned, fixed bin, fixed bin (35)); 102 dcl file_manager_$post_transaction entry (); 103 dcl tm_abort entry (bit (36) aligned, fixed bin (35)); 104 dcl tm_cleanup entry (ptr, fixed bin); 105 dcl tm_cleanup$restart_error entry (ptr, fixed bin); 106 dcl tm_error_state entry (fixed bin, fixed bin, fixed bin (35), char (*), char (*)); 107 dcl transaction_manager_$get_state_info entry (fixed bin, char (*), fixed bin (35)); 108 109 /* Builtins */ 110 111 dcl (addr, unspec) builtin; 112 113 /* Conditions */ 114 115 dcl cleanup condition; 116 117 /* END OF DECLARATIONS */ 118 119 A_code = 0; 120 121 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 122 123 if tm_tdt.version ^= TM_TDT_VERSION_3 then call ERROR_RETURN (error_table_$unimplemented_version); 124 125 if dm_data_$current_txn_index = 0 then 126 if dm_data_$suspended_txn_index ^= 0 then call ERROR_RETURN (dm_error_$transaction_suspended); 127 else call ERROR_RETURN (dm_error_$no_current_transaction); 128 129 txn_index = dm_data_$current_txn_index; 130 131 if txn_index < 1 | txn_index > tm_tdt.entry_count then 132 call ERROR_RETURN (dm_error_$invalid_current_txn); 133 134 if A_txn_id = "0"b | A_txn_id = tm_tdt.txn_id (txn_index) then 135 txn_id = tm_tdt.txn_id (txn_index); 136 else call ERROR_RETURN (dm_error_$transaction_not_current); 137 138 tm_tdt_entry_ptr = addr (tm_tdt.entry (txn_index)); 139 140 if tm_tdt_entry.process_id ^= dm_data_$my_process_id then 141 call ERROR_RETURN (dm_error_$not_own_transaction); 142 143 if tm_tdt_entry.state ^= TM_IN_PROGRESS_STATE then do; 144 145 call transaction_manager_$get_state_info ((tm_tdt_entry.state), op_name, op_error_code); 146 if op_name ^= OP_NAME_COMMIT then 147 call ERROR_RETURN (op_error_code); /* dm_error_$unfinished_(abort rollback) */ 148 149 call tm_cleanup$restart_error (tm_tdt_ptr, txn_index); /* finishes an incomplete commit */ 150 if tm_tdt_entry.error_sw then 151 call ERROR_STATE ((tm_tdt_entry.state), tm_tdt_entry.error_code, "tm_cleanup"); 152 return; 153 end; 154 155 mode = tm_tdt_entry.mode; 156 if mode = TM_TEST_NORMAL_MODE | 157 mode = TM_TEST_STATISTICAL_MODE | 158 mode = TM_TEST_READ_ONLY_MODE | 159 mode = TM_TEST_NEVER_WRITE_MODE then do; 160 161 call tm_abort (A_txn_id, A_code); /* test modes: just abort */ 162 return; 163 end; 164 165 on cleanup begin; 166 call tm_cleanup (tm_tdt_ptr, txn_index); 167 end; 168 169 tm_tdt_entry.state = TM_COMMIT_FLUSHING_TXN_STATE; 170 171 call before_journal_manager_$flush_transaction (txn_id, txn_index, code); 172 if code ^= 0 then 173 call ERROR_STATE (TM_COMMIT_FLUSHING_TXN_ERROR, code, "before_journal_manager_$flush_transaction"); 174 175 tm_tdt_entry.state = TM_COMMIT_FLUSHING_CI_STATE; 176 177 call file_manager_$flush_modified_ci (txn_id, txn_index, code); 178 if code ^= 0 then 179 call ERROR_STATE (TM_COMMIT_FLUSHING_CI_ERROR, code, "file_manager_$flush_modified_ci"); 180 181 tm_tdt_entry.state = TM_COMMIT_WRITING_MARK_STATE; 182 183 call before_journal_manager_$write_committed_mark (txn_id, txn_index, code); 184 if code ^= 0 then 185 call ERROR_STATE (TM_COMMIT_WRITING_MARK_ERROR, code, "before_journal_manager_$write_committed_mark"); 186 187 tm_tdt_entry.state = TM_COMMIT_UNLOCKING_STATE; 188 189 call file_manager_$post_transaction; 190 191 call lock_manager_$unlock_all; 192 193 tm_tdt_entry.state = TM_COMMIT_METERING_STATE; 194 195 /* Dump meters here */ 196 197 dm_data_$current_txn_id = "0"b; 198 dm_data_$current_txn_index = 0; 199 200 tm_tdt_entry.state = 0; /* show intent to zero whole entry */ 201 unspec (tm_tdt_entry.transaction) = "0"b; /* transaction is now officially gone */ 202 203 A_txn_id = "0"b; /* zero caller's arg */ 204 RETURN: 205 return; 206 207 ERROR_RETURN: proc (P_code); 208 209 dcl P_code fixed bin (35); 210 211 A_code = P_code; 212 go to RETURN; 213 214 end ERROR_RETURN; 215 216 ERROR_STATE: proc (P_state, P_code, P_name); 217 218 dcl P_state fixed bin; 219 dcl P_code fixed bin (35); 220 dcl P_name char (*); 221 222 call tm_error_state (txn_index, P_state, P_code, ME, P_name); 223 224 A_code = P_code; 225 226 go to RETURN; 227 228 end ERROR_STATE; 229 1 1 /* START OF: dm_tm_tdt.incl.pl1 */ 1 2 1 3 /* Transaction Definition Table for transaction_manager_ */ 1 4 /* This structure is used to reference the TDT. The process_id field for the 1 5* i'th TDT entry, for example, is usually referenced as tm_tdt.process_id (i). 1 6* A TDT entry is in use by a process when its process_id field is nonzero. 1 7* An entry is reserved by using the stacq builtin to set process_id, if and 1 8* only if it is already zero. The entry is being used for a transaction when 1 9* tm_tdt.txn_id (i) is nonzero. The possible values of tm_tdt.state (i) are 1 10* listed in dm_tm_states.incl.pl1. If state = 0, no operation has been 1 11* performed yet on the transaction. */ 1 12 1 13 1 14 /* HISTORY: 1 15*Designed by Matt Pierret, 01/26/82. 1 16*Coded by Steve Herbst, 07/27/82. 1 17*Modified: 1 18*08/05/82 by Steve Herbst: Added tm_tdt.operation and padded last_uid to full word. 1 19*08/05/82 by Steve Herbst: Changed creator_process_id to bit (36). 1 20*08/16/82 by Steve Herbst: Added contents of dm_tm_tdt_entry.incl.pl1. 1 21*09/09/82 by Steve Herbst: Removed in_use flag from TDT entry and rearranged fields. 1 22*09/20/82 by Steve Herbst: Removed tm_tdt.operation. 1 23*11/01/82 by Steve Herbst: Added event_channel and error_sw to tm_tdt_entry. 1 24*11/05/82 by Steve Herbst: Added suspended_sw and error_code to tm_tdt_entry. 1 25*11/11/82 by Steve Herbst: Deleted tm_tdt_entry.alloc_complete. 1 26*11/23/82 by Steve Herbst: Compacted, changed some numbers to unsigned. 1 27*12/14/82 by Steve Herbst: Added tm_tdt_entry.daemon_error_sw. 1 28*01/11/83 by Steve Herbst: Added owner_name, abandoned_sw & kill_sw to tm_tdt_entry. 1 29*01/24/83 by Steve Herbst: Replaced daemon_error_sw with daemon_adjust_count. 1 30*01/25/83 by Steve Herbst: Moved abandoned_sw from transaction portion to entry header portion. 1 31*05/13/83 by Steve Herbst: Version 3, changed all fixed bin (18) unal uns numbers to fixed bin (17) unaligned. 1 32*05/26/83 by Steve Herbst: Added rollback_count and checkpoint_id. 1 33**/ 1 34 1 35 dcl tm_tdt_ptr ptr; 1 36 dcl tdt_max_count fixed bin; 1 37 1 38 dcl TM_TDT_VERSION_3 char (8) int static options (constant) init ("TM-TDT 3"); 1 39 1 40 1 41 dcl 1 tm_tdt aligned based (tm_tdt_ptr), 1 42 2 version char (8), /* = "TM-TDT 3" */ 1 43 2 lock fixed bin (71), /* (currently not used) */ 1 44 2 last_uid bit (27) aligned, /* last transaction uid assigned */ 1 45 2 flags, 1 46 3 no_begins bit (1) unaligned, /* ON => only priv process can begin transaction */ 1 47 3 mbz1 bit (35) unaligned, 1 48 2 entry_count fixed bin, /* number of slots allocated */ 1 49 2 mbz2 fixed bin, /* for even word boundary */ 1 50 2 entry (tdt_max_count refer (tm_tdt.entry_count)) 1 51 like tm_tdt_entry; 1 52 1 53 1 54 1 55 /* TDT entries: */ 1 56 1 57 dcl tm_tdt_entry_ptr ptr; 1 58 1 59 dcl 1 tm_tdt_entry aligned based (tm_tdt_entry_ptr), 1 60 2 event_channel fixed bin (71), /* for communication with the process */ 1 61 2 process_id bit (36) aligned, /* process for which this entry is reserved */ 1 62 2 owner_name char (32), /* person.project of owner process */ 1 63 2 entry_flags, 1 64 3 abandoned_sw bit (1) unaligned, /* ON => owner has called tm_$abandon on this entry */ 1 65 3 mbz3 bit (35) unaligned, 1 66 2 transaction unaligned, 1 67 3 txn_id bit (36) aligned, /* unique identifier assigned at begin time */ 1 68 3 date_time_created fixed bin (71) aligned, 1 69 3 mode fixed bin (17) unaligned, /* mode specified with transaction begin */ 1 70 3 state fixed bin (17) unaligned, /* state transaction is currently in */ 1 71 3 error_code fixed bin (35) aligned, /* goes along with error_sw and error state */ 1 72 3 checkpoint_id fixed bin (17) unaligned, /* identifier of the current rollback checkpoint */ 1 73 3 rollback_count fixed bin (17) unaligned, /* number of times bjm_$rollback has been called */ 1 74 3 daemon_adjust_count fixed bin (17) unaligned, /* number of times daemon has tried to adjust since user */ 1 75 3 return_idx fixed bin (17) unaligned, /* parent transaction, or zero */ 1 76 3 flags, 1 77 4 dead_process_sw bit (1) unaligned, /* ON => treat process as dead even if it isn't yet */ 1 78 4 suspended_sw bit (1) unaligned, /* ON => suspended by tm_$suspend_txn */ 1 79 4 error_sw bit (1) unaligned, /* ON => state is one of the error states */ 1 80 4 kill_sw bit (1) unaligned, /* ON => being processed by tm_$kill */ 1 81 4 mbz4 bit (29) unaligned, 1 82 3 post_commit_flags, 1 83 4 (fmgr, 1 84 bjmgr, 1 85 ajmgr) bit (1) unaligned, 1 86 3 mbz4 fixed bin; 1 87 1 88 1 89 /* END OF: dm_tm_tdt.incl.pl1 */ 230 231 2 1 /* START OF: dm_tm_states.incl.pl1 */ 2 2 2 3 /* HISTORY: 2 4* 2 5*Designed by Matthew Pierret, 01/26/82. 2 6*Coded by Steve Herbst, 08/05/82. 2 7*Modified: 2 8*09/20/82 by Steve Herbst: States renames for distinct operations. 2 9*10/05/82 by Steve Herbst: Added TM_ABORT_POST_COMMIT_STATE. 2 10*01/14/83 by Steve Herbst: Added TM_ERROR_INCREMENT. 2 11*01/18/83 by Steve Herbst: Added HIGHEST_ABORT_STATE, etc. 2 12*08/23/84 by Steve Herbst: Added OP_NAME... constants. 2 13**/ 2 14 2 15 2 16 /* NOTE: Changing this file necessitates changes tm_cleanup */ 2 17 2 18 dcl (HIGHEST_STATE init (96), 2 19 LOWEST_ABORT_STATE init (21), 2 20 HIGHEST_ABORT_STATE init (30), 2 21 LOWEST_COMMIT_STATE init (31), 2 22 HIGHEST_COMMIT_STATE init (40), 2 23 LOWEST_ROLLBACK_STATE init (41), 2 24 HIGHEST_ROLLBACK_STATE init (50)) fixed bin int static options (constant); 2 25 2 26 dcl TM_ERROR_INCREMENT fixed bin int static options (constant) init (50); 2 27 /* error state = corresponding pre-call state + 50 */ 2 28 2 29 2 30 dcl ( TM_IN_PROGRESS_STATE init (1), 2 31 2 32 TM_BEGIN_STARTING_STATE init (11), 2 33 2 34 TM_ABORT_FLUSHING_TXN_STATE init (21), 2 35 TM_ABORT_FLUSHING_TXN_ERROR init (71), 2 36 TM_ABORT_ROLLING_BACK_STATE init (22), 2 37 TM_ABORT_ROLLING_BACK_ERROR init (72), 2 38 TM_ABORT_FLUSHING_CI_STATE init (23), 2 39 TM_ABORT_FLUSHING_CI_ERROR init (73), 2 40 TM_ABORT_WRITING_MARK_STATE init (24), 2 41 TM_ABORT_WRITING_MARK_ERROR init (74), 2 42 TM_ABORT_UNLOCKING_STATE init (25), 2 43 TM_ABORT_UNLOCKING_ERROR init (75), 2 44 TM_ABORT_METERING_STATE init (26), 2 45 TM_ABORT_METERING_ERROR init (76), 2 46 2 47 TM_COMMIT_FLUSHING_TXN_STATE init (31), 2 48 TM_COMMIT_FLUSHING_TXN_ERROR init (81), 2 49 TM_COMMIT_FLUSHING_CI_STATE init (32), 2 50 TM_COMMIT_FLUSHING_CI_ERROR init (82), 2 51 TM_COMMIT_WRITING_MARK_STATE init (33), 2 52 TM_COMMIT_WRITING_MARK_ERROR init (83), 2 53 TM_COMMIT_POST_COMMIT_STATE init (34), 2 54 TM_COMMIT_POST_COMMIT_ERROR init (84), 2 55 TM_COMMIT_UNLOCKING_STATE init (35), 2 56 TM_COMMIT_UNLOCKING_ERROR init (85), 2 57 TM_COMMIT_METERING_STATE init (36), 2 58 TM_COMMIT_METERING_ERROR init (86), 2 59 2 60 TM_ROLLBACK_FLUSHING_TXN_STATE init (41), 2 61 TM_ROLLBACK_FLUSHING_TXN_ERROR init (91), 2 62 TM_ROLLBACK_ROLLING_BACK_STATE init (42), 2 63 TM_ROLLBACK_ROLLING_BACK_ERROR init (92), 2 64 TM_ROLLBACK_FLUSHING_CI_STATE init (43), 2 65 TM_ROLLBACK_FLUSHING_CI_ERROR init (93), 2 66 TM_ROLLBACK_WRITING_MARK_STATE init (44), 2 67 TM_ROLLBACK_WRITING_MARK_ERROR init (94), 2 68 TM_ROLLBACK_UNLOCKING_STATE init (45), 2 69 TM_ROLLBACK_UNLOCKING_ERROR init (95), 2 70 TM_ROLLBACK_METERING_STATE init (46), 2 71 TM_ROLLBACK_METERING_ERROR init (96)) 2 72 2 73 fixed bin int static options (constant); 2 74 2 75 dcl (OP_NAME_ABORT init ("abort"), 2 76 OP_NAME_COMMIT init ("commit"), 2 77 OP_NAME_ROLLBACK init ("rollback")) char (32) int static options (constant); 2 78 2 79 /* END OF: dm_tm_states.incl.pl1 */ 232 233 3 1 /* START OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 /* HISTORY: 3 4* 3 5*Designed by Matthew C. Pierret, 01/26/82. 3 6*Coded by Jeffrey D. Ives, 04/30/82. 3 7*Modified: 3 8*10/18/82 by Steve Herbst: Names changed. 3 9*01/19/83 by Steve Herbst: Added (LOWEST HIGHEST)_MODE. 3 10**/ 3 11 3 12 dcl (LOWEST_MODE init (1), 3 13 HIGHEST_MODE init (8)) fixed bin int static options (constant); 3 14 3 15 dcl TM_NORMAL_MODE fixed bin static options (constant) init (1); 3 16 dcl TM_STATISTICAL_MODE fixed bin static options (constant) init (2); 3 17 dcl TM_READ_ONLY_MODE fixed bin static options (constant) init (3); 3 18 dcl TM_NEVER_WRITE_MODE fixed bin static options (constant) init (4); 3 19 dcl TM_TEST_NORMAL_MODE fixed bin static options (constant) init (5); 3 20 dcl TM_TEST_STATISTICAL_MODE fixed bin static options (constant) init (6); 3 21 dcl TM_TEST_READ_ONLY_MODE fixed bin static options (constant) init (7); 3 22 dcl TM_TEST_NEVER_WRITE_MODE fixed bin static options (constant) init (8); 3 23 3 24 /* END OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 234 235 236 237 end tm_commit; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1154.5 tm_commit.pl1 >udd>sm>ds>w>ml>tm_commit.pl1 230 1 01/07/85 1000.1 dm_tm_tdt.incl.pl1 >ldd>incl>dm_tm_tdt.incl.pl1 232 2 01/07/85 1000.1 dm_tm_states.incl.pl1 >ldd>incl>dm_tm_states.incl.pl1 234 3 01/07/85 1000.0 dm_tm_modes.incl.pl1 >ldd>incl>dm_tm_modes.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 64 set ref 18 119* 161* 211* 224* A_txn_id parameter bit(36) dcl 63 set ref 18 134 134 161* 203* ME 000016 constant char(32) initial packed unaligned dcl 69 set ref 222* OP_NAME_COMMIT 000000 constant char(32) initial packed unaligned dcl 2-75 ref 146 P_code parameter fixed bin(35,0) dcl 219 in procedure "ERROR_STATE" set ref 216 222* 224 P_code parameter fixed bin(35,0) dcl 209 in procedure "ERROR_RETURN" ref 207 211 P_name parameter char packed unaligned dcl 220 set ref 216 222* P_state parameter fixed bin(17,0) dcl 218 set ref 216 222* TM_COMMIT_FLUSHING_CI_ERROR 000011 constant fixed bin(17,0) initial dcl 2-30 set ref 178* TM_COMMIT_FLUSHING_CI_STATE constant fixed bin(17,0) initial dcl 2-30 ref 175 TM_COMMIT_FLUSHING_TXN_ERROR 000012 constant fixed bin(17,0) initial dcl 2-30 set ref 172* TM_COMMIT_FLUSHING_TXN_STATE constant fixed bin(17,0) initial dcl 2-30 ref 169 TM_COMMIT_METERING_STATE constant fixed bin(17,0) initial dcl 2-30 ref 193 TM_COMMIT_UNLOCKING_STATE constant fixed bin(17,0) initial dcl 2-30 ref 187 TM_COMMIT_WRITING_MARK_ERROR 000010 constant fixed bin(17,0) initial dcl 2-30 set ref 184* TM_COMMIT_WRITING_MARK_STATE constant fixed bin(17,0) initial dcl 2-30 ref 181 TM_IN_PROGRESS_STATE constant fixed bin(17,0) initial dcl 2-30 ref 143 TM_TDT_VERSION_3 000014 constant char(8) initial packed unaligned dcl 1-38 ref 123 TM_TEST_NEVER_WRITE_MODE constant fixed bin(17,0) initial dcl 3-22 ref 156 TM_TEST_NORMAL_MODE constant fixed bin(17,0) initial dcl 3-19 ref 156 TM_TEST_READ_ONLY_MODE constant fixed bin(17,0) initial dcl 3-21 ref 156 TM_TEST_STATISTICAL_MODE constant fixed bin(17,0) initial dcl 3-20 ref 156 addr builtin function dcl 111 ref 138 before_journal_manager_$flush_transaction 000036 constant entry external dcl 98 ref 171 before_journal_manager_$write_committed_mark 000040 constant entry external dcl 99 ref 183 cleanup 000116 stack reference condition dcl 115 ref 165 code 000113 automatic fixed bin(35,0) dcl 80 set ref 171* 172 172* 177* 178 178* 183* 184 184* dm_data_$current_txn_id 000010 external static bit(36) dcl 84 set ref 197* dm_data_$current_txn_index 000012 external static fixed bin(17,0) dcl 85 set ref 125 129 198* dm_data_$my_process_id 000014 external static bit(36) packed unaligned dcl 86 ref 140 dm_data_$suspended_txn_index 000016 external static fixed bin(17,0) dcl 87 ref 125 dm_data_$tm_tdt_ptr 000020 external static pointer dcl 88 ref 121 dm_error_$invalid_current_txn 000022 external static fixed bin(35,0) dcl 89 set ref 131* dm_error_$no_current_transaction 000024 external static fixed bin(35,0) dcl 90 set ref 127* dm_error_$not_own_transaction 000026 external static fixed bin(35,0) dcl 91 set ref 140* dm_error_$transaction_not_current 000030 external static fixed bin(35,0) dcl 92 set ref 136* dm_error_$transaction_suspended 000032 external static fixed bin(35,0) dcl 93 set ref 125* entry 10 based structure array level 2 dcl 1-41 set ref 138 entry_count 6 based fixed bin(17,0) level 2 dcl 1-41 ref 131 error_code 21 based fixed bin(35,0) level 3 dcl 1-59 set ref 150* error_sw 24(02) based bit(1) level 4 packed packed unaligned dcl 1-59 set ref 150 error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 94 set ref 123* file_manager_$flush_modified_ci 000044 constant entry external dcl 101 ref 177 file_manager_$post_transaction 000046 constant entry external dcl 102 ref 189 flags 24 based structure level 3 packed packed unaligned dcl 1-59 lock_manager_$unlock_all 000042 constant entry external dcl 100 ref 191 mode 20 based fixed bin(17,0) level 3 in structure "tm_tdt_entry" packed packed unaligned dcl 1-59 in procedure "tm_commit" set ref 155 mode 000111 automatic fixed bin(17,0) dcl 79 in procedure "tm_commit" set ref 155* 156 156 156 156 op_error_code 000114 automatic fixed bin(35,0) dcl 80 set ref 145* 146* op_name 000100 automatic char(32) packed unaligned dcl 77 set ref 145* 146 process_id 2 based bit(36) level 2 dcl 1-59 ref 140 state 20(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-59 set ref 143 145 150 169* 175* 181* 187* 193* 200* tm_abort 000050 constant entry external dcl 103 ref 161 tm_cleanup 000052 constant entry external dcl 104 ref 166 tm_cleanup$restart_error 000054 constant entry external dcl 105 ref 149 tm_error_state 000056 constant entry external dcl 106 ref 222 tm_tdt based structure level 1 dcl 1-41 tm_tdt_entry based structure level 1 dcl 1-59 tm_tdt_entry_ptr 000126 automatic pointer dcl 1-57 set ref 138* 140 143 145 150 150 150 155 169 175 181 187 193 200 201 tm_tdt_ptr 000124 automatic pointer dcl 1-35 set ref 121* 123 131 134 134 138 149* 166* transaction 24 based structure array level 3 in structure "tm_tdt" unaligned dcl 1-41 in procedure "tm_commit" transaction 14 based structure level 2 in structure "tm_tdt_entry" unaligned dcl 1-59 in procedure "tm_commit" set ref 201* transaction_manager_$get_state_info 000060 constant entry external dcl 107 ref 145 txn_id 000110 automatic bit(36) dcl 78 in procedure "tm_commit" set ref 134* 171* 177* 183* txn_id 24 based bit(36) array level 4 in structure "tm_tdt" dcl 1-41 in procedure "tm_commit" set ref 134 134 txn_index 000112 automatic fixed bin(17,0) dcl 79 set ref 129* 131 131 134 134 138 149* 166* 171* 177* 183* 222* unspec builtin function dcl 111 set ref 201* version based char(8) level 2 dcl 1-41 ref 123 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. HIGHEST_ABORT_STATE internal static fixed bin(17,0) initial dcl 2-18 HIGHEST_COMMIT_STATE internal static fixed bin(17,0) initial dcl 2-18 HIGHEST_MODE internal static fixed bin(17,0) initial dcl 3-12 HIGHEST_ROLLBACK_STATE internal static fixed bin(17,0) initial dcl 2-18 HIGHEST_STATE internal static fixed bin(17,0) initial dcl 2-18 LOWEST_ABORT_STATE internal static fixed bin(17,0) initial dcl 2-18 LOWEST_COMMIT_STATE internal static fixed bin(17,0) initial dcl 2-18 LOWEST_MODE internal static fixed bin(17,0) initial dcl 3-12 LOWEST_ROLLBACK_STATE internal static fixed bin(17,0) initial dcl 2-18 OP_NAME_ABORT internal static char(32) initial packed unaligned dcl 2-75 OP_NAME_ROLLBACK internal static char(32) initial packed unaligned dcl 2-75 TM_ABORT_FLUSHING_CI_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_FLUSHING_CI_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_FLUSHING_TXN_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_FLUSHING_TXN_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_METERING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_METERING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_ROLLING_BACK_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_ROLLING_BACK_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_UNLOCKING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_UNLOCKING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_WRITING_MARK_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ABORT_WRITING_MARK_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_BEGIN_STARTING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_METERING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_POST_COMMIT_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_POST_COMMIT_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_UNLOCKING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ERROR_INCREMENT internal static fixed bin(17,0) initial dcl 2-26 TM_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 3-18 TM_NORMAL_MODE internal static fixed bin(17,0) initial dcl 3-15 TM_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 3-17 TM_ROLLBACK_FLUSHING_CI_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_FLUSHING_CI_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_FLUSHING_TXN_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_FLUSHING_TXN_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_METERING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_METERING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_ROLLING_BACK_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_ROLLING_BACK_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_UNLOCKING_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_UNLOCKING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_WRITING_MARK_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_ROLLBACK_WRITING_MARK_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 3-16 tdt_max_count automatic fixed bin(17,0) dcl 1-36 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000555 constant entry internal dcl 207 ref 123 125 127 131 136 140 146 ERROR_STATE 000563 constant entry internal dcl 216 ref 150 172 178 184 RETURN 000554 constant label dcl 204 ref 212 226 tm_commit 000107 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1242 1324 712 1252 Length 1576 712 62 235 330 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tm_commit 162 external procedure is an external procedure. on unit on line 165 70 on unit ERROR_RETURN internal procedure shares stack frame of external procedure tm_commit. ERROR_STATE internal procedure shares stack frame of external procedure tm_commit. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tm_commit 000100 op_name tm_commit 000110 txn_id tm_commit 000111 mode tm_commit 000112 txn_index tm_commit 000113 code tm_commit 000114 op_error_code tm_commit 000124 tm_tdt_ptr tm_commit 000126 tm_tdt_entry_ptr tm_commit THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. before_journal_manager_$flush_transaction before_journal_manager_$write_committed_mark file_manager_$flush_modified_ci file_manager_$post_transaction lock_manager_$unlock_all tm_abort tm_cleanup tm_cleanup$restart_error tm_error_state transaction_manager_$get_state_info THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_data_$current_txn_id dm_data_$current_txn_index dm_data_$my_process_id dm_data_$suspended_txn_index dm_data_$tm_tdt_ptr dm_error_$invalid_current_txn dm_error_$no_current_transaction dm_error_$not_own_transaction dm_error_$transaction_not_current dm_error_$transaction_suspended error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000103 119 000114 121 000116 123 000121 125 000134 127 000150 129 000156 131 000161 134 000174 136 000211 138 000220 140 000225 143 000237 145 000246 146 000270 149 000276 150 000307 152 000343 155 000344 156 000347 161 000357 162 000371 165 000372 166 000406 167 000417 169 000420 171 000423 172 000436 175 000446 177 000451 178 000464 181 000474 183 000477 184 000512 187 000522 189 000525 191 000532 193 000537 197 000542 198 000544 200 000545 201 000547 203 000552 204 000554 207 000555 211 000557 212 000562 216 000563 222 000574 224 000626 226 000632 ----------------------------------------------------------- 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