COMPILATION LISTING OF SEGMENT tm_begin Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0948.1 mst Thu 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_begin: proc (A_mode, A_bj_opening_id, A_txn_id, A_code); 10 11 /* DESCRIPTION: 12* 13* This procedure implements transaction_manager_$begin_txn, which creates a 14* new transaction in the "in progress" state. Information about the 15* transaction is kept in the user's TDT entry. 16**/ 17 18 /* HISTORY: 19* 20*Written by Steve Herbst, 08/04/82 21*Modified: 22*08/16/82 by Steve Herbst: Changed to use dm_data_$tm_tdt_ptr and new 23* dm_tm_tdt.incl.pl1 24*08/18/82 by Steve Herbst: Added $tm_priv_begin 25*08/23/82 by Steve Herbst: Fixed to initialize A_code. 26*09/10/82 by Steve Herbst: Changed to eliminate locking. 27*01/19/83 by Steve Herbst: Added mode check. 28*03/23/84 by Steve Herbst: ADdded $begins_off and $begins_on for use during 29* initialization. 30*05/13/83 by Steve Herbst: Changed A_mode to fixed bin (17) aligned. 31*05/25/83 by Steve Herbst: Made to log $begins_off and $begins_on. 32*09/25/84 by Steve Herbst: Changed in response to audit comments. 33*11/27/84 by Steve Herbst: Changed further in response to audit comments. 34*03/05/85 by Steve Herbst: Replaced dm_log_ with dm_misc_util_$log. 35**/ 36 37 /* DECLARATIONS */ 38 39 /* Parameters */ 40 41 dcl A_mode fixed bin (17) aligned parameter; 42 dcl A_bj_opening_id bit (36) parameter; 43 dcl A_txn_id bit (36) aligned parameter; 44 dcl A_code fixed bin (35) parameter; 45 46 /* Constants */ 47 48 dcl ME char (32) int static options (constant) init ("tm_begin"); 49 50 /* Based */ 51 52 /* Static */ 53 54 /* Automatic */ 55 56 dcl txn_id bit (36) aligned; 57 dcl txn_index fixed bin; 58 dcl code fixed bin (35); 59 60 /* External */ 61 62 dcl dm_data_$current_txn_id bit (36) aligned ext; 63 dcl dm_data_$current_txn_index fixed bin ext; 64 dcl dm_data_$my_process_id bit (36) ext; 65 dcl dm_data_$my_tdt_index fixed bin ext; 66 dcl dm_data_$tm_tdt_ptr ptr external; 67 dcl dm_error_$invalid_mode fixed bin (35) ext; 68 dcl dm_error_$no_begins fixed bin (35) ext; 69 dcl dm_error_$not_own_transaction fixed bin (35) ext; 70 dcl dm_error_$transaction_in_progress fixed bin (35) ext; 71 dcl dm_error_$transaction_suspended fixed bin (35) ext; 72 dcl error_table_$unimplemented_version fixed bin (35) ext; 73 74 /* Entries */ 75 76 dcl before_journal_manager_$write_begin_mark entry (bit (36) aligned, fixed bin, bit (36), fixed bin (35)); 77 dcl dm_misc_util_$log entry options (variable); 78 dcl tm_cleanup entry (ptr, fixed bin); 79 dcl tm_generate_txn_id entry (ptr) returns (bit (36) aligned); 80 81 /* Builtins */ 82 83 dcl (clock, unspec) builtin; 84 85 /* Conditions */ 86 87 dcl cleanup condition; 88 89 /* END OF DECLARATIONS */ 90 91 A_txn_id = "0"b; 92 A_code = 0; 93 94 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 95 96 if tm_tdt.version ^= TM_TDT_VERSION_3 then call ERROR_RETURN (error_table_$unimplemented_version); 97 98 if tm_tdt.no_begins then call ERROR_RETURN (dm_error_$no_begins); 99 100 txn_index = dm_data_$my_tdt_index; 101 tm_tdt_entry_ptr = addr (tm_tdt.entry (txn_index)); 102 103 if tm_tdt_entry.txn_id ^= "0"b then 104 if tm_tdt_entry.suspended_sw then call ERROR_RETURN (dm_error_$transaction_suspended); 105 else call ERROR_RETURN (dm_error_$transaction_in_progress); 106 107 if tm_tdt_entry.process_id ^= dm_data_$my_process_id then 108 call ERROR_RETURN (dm_error_$not_own_transaction); 109 110 if A_mode < LOWEST_MODE | A_mode > HIGHEST_MODE then 111 call ERROR_RETURN (dm_error_$invalid_mode); 112 113 tm_tdt_entry.state = 0; /* for cleanup in case we are interrupted */ 114 115 on cleanup begin; 116 call tm_cleanup (tm_tdt_ptr, txn_index); 117 end; 118 119 unspec (tm_tdt_entry.transaction) = "0"b; 120 tm_tdt_entry.date_time_created = clock (); 121 tm_tdt_entry.mode = A_mode; 122 123 tm_tdt_entry.state = TM_BEGIN_STARTING_STATE; 124 125 txn_id = tm_generate_txn_id (tm_tdt_ptr); 126 call before_journal_manager_$write_begin_mark (txn_id, txn_index, A_bj_opening_id, code); 127 if code ^= 0 then do; 128 tm_tdt_entry.state = 0; 129 unspec (tm_tdt_entry.transaction) = "0"b; 130 call ERROR_RETURN (code); 131 end; 132 133 tm_tdt_entry.txn_id = txn_id; /* transaction is now official */ 134 135 dm_data_$current_txn_id = txn_id; 136 dm_data_$current_txn_index = txn_index; 137 138 tm_tdt_entry.state = TM_IN_PROGRESS_STATE; /* nothing to clean up now */ 139 140 A_txn_id = txn_id; 141 142 RETURN: 143 return; 144 145 begins_off: entry; 146 147 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 148 149 tm_tdt.no_begins = "1"b; 150 151 call dm_misc_util_$log (INFORM_SV, "Turning off transaction begins."); 152 153 return; 154 155 156 157 158 begins_on: entry; 159 160 tm_tdt_ptr = dm_data_$tm_tdt_ptr; 161 162 tm_tdt.no_begins = "0"b; 163 164 call dm_misc_util_$log (INFORM_SV, "Turning on transaction begins."); 165 166 return; 167 168 ERROR_RETURN: proc (P_code); 169 170 dcl P_code fixed bin (35); 171 172 A_code = P_code; 173 go to RETURN; 174 175 end ERROR_RETURN; 176 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 */ 177 178 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 */ 179 180 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 * * * * * * * * * * * * * * * * */ 181 182 4 1 /* BEGIN INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 4 2 4 3 /* format: ^indcom */ 4 4 4 5 /* DESCRIPTION: 4 6* These are the severity codes used by the dms daemon when calling its logger. 4 7* The severity is ranked thusly: 4 8* 4 9* severity log write situation 4 10* -------- --- ----- --------- 4 11* 0 no yes standard output, query, etc. 4 12* 1 yes yes fatal error, terminate dms daemon. 4 13* 2 yes yes nonfatal error. 4 14* 3 yes yes informative message. 4 15* 4 yes no log information only. 4 16**/ 4 17 4 18 /* HISTORY: 4 19* 4 20*Written by M. Pandolf, 10/06/82. 4 21*Modified: 4 22*12/10/84 by R. Michael Tague: Rename and reformat description/history. 4 23*01/13/85 by Lee A. Newcomb: Renamed to dm_log_sv_codes from 4 24* dm_daemon_sv_codes as the severity codes for the DM log are not 4 25* restrained to the DM Daemon's use. 4 26*01/24/85 by Lee A. Newcomb: Fixed to say dm_log_sv_codes.incl.pl1 in the 4 27* BEGIN and END INCLUDE comments, instead of dm_daemon_sv_codes.==. 4 28**/ 4 29 4 30 /* format: style5 */ 4 31 4 32 dcl (PRINT_SV, QUERY_SV) fixed bin internal static 4 33 options (constant) init (0); 4 34 dcl (CRASH_SV, FATAL_SV) fixed bin internal static 4 35 options (constant) init (1); 4 36 dcl ERROR_SV fixed bin internal static 4 37 options (constant) init (2); 4 38 dcl INFORM_SV fixed bin internal static 4 39 options (constant) init (3); 4 40 dcl LOG_SV fixed bin internal static 4 41 options (constant) init (4); 4 42 4 43 /* END INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 183 184 185 186 end tm_begin; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0827.1 tm_begin.pl1 >spec>on>7192.pbf-04/04/85>tm_begin.pl1 177 1 01/07/85 0900.1 dm_tm_tdt.incl.pl1 >ldd>include>dm_tm_tdt.incl.pl1 179 2 01/07/85 0900.1 dm_tm_states.incl.pl1 >ldd>include>dm_tm_states.incl.pl1 181 3 01/07/85 0900.0 dm_tm_modes.incl.pl1 >ldd>include>dm_tm_modes.incl.pl1 183 4 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. A_bj_opening_id parameter bit(36) unaligned dcl 42 set ref 9 126* A_code parameter fixed bin(35,0) dcl 44 set ref 9 92* 172* A_mode parameter fixed bin(17,0) dcl 41 ref 9 110 110 121 A_txn_id parameter bit(36) dcl 43 set ref 9 91* 140* HIGHEST_MODE constant fixed bin(17,0) initial dcl 3-12 ref 110 INFORM_SV 000005 constant fixed bin(17,0) initial dcl 4-38 set ref 151* 164* LOWEST_MODE constant fixed bin(17,0) initial dcl 3-12 ref 110 P_code parameter fixed bin(35,0) dcl 170 ref 168 172 TM_BEGIN_STARTING_STATE constant fixed bin(17,0) initial dcl 2-30 ref 123 TM_IN_PROGRESS_STATE constant fixed bin(17,0) initial dcl 2-30 ref 138 TM_TDT_VERSION_3 000000 constant char(8) initial unaligned dcl 1-38 ref 96 before_journal_manager_$write_begin_mark 000036 constant entry external dcl 76 ref 126 cleanup 000104 stack reference condition dcl 87 ref 115 clock builtin function dcl 83 ref 120 code 000102 automatic fixed bin(35,0) dcl 58 set ref 126* 127 130* date_time_created 16 based fixed bin(71,0) level 3 dcl 1-59 set ref 120* dm_data_$current_txn_id 000010 external static bit(36) dcl 62 set ref 135* dm_data_$current_txn_index 000012 external static fixed bin(17,0) dcl 63 set ref 136* dm_data_$my_process_id 000014 external static bit(36) unaligned dcl 64 ref 107 dm_data_$my_tdt_index 000016 external static fixed bin(17,0) dcl 65 ref 100 dm_data_$tm_tdt_ptr 000020 external static pointer dcl 66 ref 94 147 160 dm_error_$invalid_mode 000022 external static fixed bin(35,0) dcl 67 set ref 110* dm_error_$no_begins 000024 external static fixed bin(35,0) dcl 68 set ref 98* dm_error_$not_own_transaction 000026 external static fixed bin(35,0) dcl 69 set ref 107* dm_error_$transaction_in_progress 000030 external static fixed bin(35,0) dcl 70 set ref 105* dm_error_$transaction_suspended 000032 external static fixed bin(35,0) dcl 71 set ref 103* dm_misc_util_$log 000040 constant entry external dcl 77 ref 151 164 entry 10 based structure array level 2 dcl 1-41 set ref 101 error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 72 set ref 96* flags 5 based structure level 2 in structure "tm_tdt" dcl 1-41 in procedure "tm_begin" flags 24 based structure level 3 in structure "tm_tdt_entry" packed unaligned dcl 1-59 in procedure "tm_begin" mode 20 based fixed bin(17,0) level 3 packed unaligned dcl 1-59 set ref 121* no_begins 5 based bit(1) level 3 packed unaligned dcl 1-41 set ref 98 149* 162* process_id 2 based bit(36) level 2 dcl 1-59 ref 107 state 20(18) based fixed bin(17,0) level 3 packed unaligned dcl 1-59 set ref 113* 123* 128* 138* suspended_sw 24(01) based bit(1) level 4 packed unaligned dcl 1-59 set ref 103 tm_cleanup 000042 constant entry external dcl 78 ref 116 tm_generate_txn_id 000044 constant entry external dcl 79 ref 125 tm_tdt based structure level 1 dcl 1-41 tm_tdt_entry based structure level 1 dcl 1-59 tm_tdt_entry_ptr 000114 automatic pointer dcl 1-57 set ref 101* 103 103 107 113 119 120 121 123 128 129 133 138 tm_tdt_ptr 000112 automatic pointer dcl 1-35 set ref 94* 96 98 101 116* 125* 147* 149 160* 162 transaction 14 based structure level 2 unaligned dcl 1-59 set ref 119* 129* txn_id 14 based bit(36) level 3 in structure "tm_tdt_entry" dcl 1-59 in procedure "tm_begin" set ref 103 133* txn_id 000100 automatic bit(36) dcl 56 in procedure "tm_begin" set ref 125* 126* 133 135 140 txn_index 000101 automatic fixed bin(17,0) dcl 57 set ref 100* 101 116* 126* 136 unspec builtin function dcl 83 set ref 119* 129* version based char(8) level 2 dcl 1-41 ref 96 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CRASH_SV internal static fixed bin(17,0) initial dcl 4-34 ERROR_SV internal static fixed bin(17,0) initial dcl 4-36 FATAL_SV internal static fixed bin(17,0) initial dcl 4-34 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_ROLLBACK_STATE internal static fixed bin(17,0) initial dcl 2-18 HIGHEST_STATE internal static fixed bin(17,0) initial dcl 2-18 LOG_SV internal static fixed bin(17,0) initial dcl 4-40 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_ROLLBACK_STATE internal static fixed bin(17,0) initial dcl 2-18 ME internal static char(32) initial unaligned dcl 48 OP_NAME_ABORT internal static char(32) initial unaligned dcl 2-75 OP_NAME_COMMIT internal static char(32) initial unaligned dcl 2-75 OP_NAME_ROLLBACK internal static char(32) initial unaligned dcl 2-75 PRINT_SV internal static fixed bin(17,0) initial dcl 4-32 QUERY_SV internal static fixed bin(17,0) initial dcl 4-32 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_COMMIT_FLUSHING_CI_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_FLUSHING_CI_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_FLUSHING_TXN_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_FLUSHING_TXN_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_METERING_STATE 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_COMMIT_UNLOCKING_STATE internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_WRITING_MARK_ERROR internal static fixed bin(17,0) initial dcl 2-30 TM_COMMIT_WRITING_MARK_STATE 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 TM_TEST_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 3-22 TM_TEST_NORMAL_MODE internal static fixed bin(17,0) initial dcl 3-19 TM_TEST_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 3-21 TM_TEST_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 3-20 tdt_max_count automatic fixed bin(17,0) dcl 1-36 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000401 constant entry internal dcl 168 ref 96 98 103 105 107 110 130 RETURN 000306 constant label dcl 142 ref 173 begins_off 000310 constant entry external dcl 145 begins_on 000345 constant entry external dcl 158 tm_begin 000041 constant entry external dcl 9 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 101 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 664 732 414 674 Length 1214 414 46 246 247 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tm_begin 110 external procedure is an external procedure. on unit on line 115 70 on unit ERROR_RETURN internal procedure shares stack frame of external procedure tm_begin. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tm_begin 000100 txn_id tm_begin 000101 txn_index tm_begin 000102 code tm_begin 000112 tm_tdt_ptr tm_begin 000114 tm_tdt_entry_ptr tm_begin THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. before_journal_manager_$write_begin_mark dm_misc_util_$log tm_cleanup tm_generate_txn_id 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_$my_tdt_index dm_data_$tm_tdt_ptr dm_error_$invalid_mode dm_error_$no_begins dm_error_$not_own_transaction dm_error_$transaction_in_progress dm_error_$transaction_suspended error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000034 91 000046 92 000050 94 000051 96 000054 98 000067 100 000102 101 000105 103 000111 105 000125 107 000133 110 000146 113 000163 115 000166 116 000202 117 000213 119 000214 120 000220 121 000223 123 000227 125 000231 126 000242 127 000260 128 000262 129 000265 130 000270 133 000272 135 000275 136 000277 138 000301 140 000303 142 000306 145 000307 147 000315 149 000321 151 000324 153 000343 158 000344 160 000352 162 000356 164 000361 166 000400 168 000401 172 000403 173 000406 ----------------------------------------------------------- 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