COMPILATION LISTING OF SEGMENT bjm_abandon_transaction Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0939.2 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* A procedure to allow a process other than the one that started a 10* transaction to complete the transaction. from the point of before 11* journal manager, abandoning means the changing of some TXTE 12* information for a transaction. this change is local to before journal 13* manager and there are no implicit effects to any other subsystem. 14**/ 15 16 /* HISTORY 17*Written by M. Pandolf, 09/01/82. 18*Modified: 19*10/27/82 by M. Pandolf: to bjm_abandon_transaction. 20* 02/14/83 by M. Pandolf: to force abandon on cleanup. 21*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 22* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 23*06/07/84 by Lee Baldwin: Fixed to call dm_error_$no_current_transaction 24* instead of dm_error_$bj_no_txn. 25*10/24/84 by M.Sharpe: to clean up dcls and format; to use the 26* "call ERROR_RETURN (code)" convention. 27*03/19/85 by Steve Herbst: Fixed to initialize bjm_data_$bj_code. 28**/ 29 30 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 31 32 bjm_abandon_transaction: 33 procedure (p_tid, p_tix, p_code); 34 35 /* DECLARATIONS */ 36 37 /* Parameter */ 38 39 dcl p_tid bit (36) aligned parameter; /* transaction ID */ 40 dcl p_tix fixed bin parameter; /* transaction index */ 41 dcl p_code fixed bin (35) parameter; /* standard system status code */ 42 43 /* Automatic */ 44 45 dcl tid bit (36) aligned; /* local copy of transaction ID */ 46 dcl tix fixed bin; /* local copy of transaction index */ 47 48 /* Condition */ 49 50 dcl cleanup condition; 51 52 /* Constant */ 53 54 dcl ME char (32) internal static options (constant) init ("bjm_abandon_transaction"); 55 56 /* Entry */ 57 58 dcl bj_adopt_txn$abandon entry (fixed bin, bit (36) aligned); 59 dcl bj_adopt_txn$force_abandon entry (); 60 dcl bj_cleanup_tables$handler entry (fixed bin (35)); 61 62 /* External Static */ 63 64 dcl dm_error_$bj_recursive_invoc fixed bin (35) external static; 65 dcl dm_error_$no_current_transaction fixed bin (35) external static; 66 67 68 /* initialize parameters */ 69 70 tid = p_tid; 71 tix = p_tix; 72 p_code = 0; 73 74 /* set up addresses for unexpected error */ 75 76 bjm_data_$bj_exit_err = nonlocal_error_exit; 77 bjm_data_$bj_code = 0; 78 79 on cleanup call CLEANUP; 80 81 if bjm_data_$bj_operation = "" 82 then bjm_data_$bj_operation = ME; 83 else do; 84 p_code = dm_error_$bj_recursive_invoc; 85 goto MAIN_RETURN; 86 end; 87 88 /* check parameters */ 89 90 if tix < 1 | tix > dm_system_data_$max_n_transactions 91 then call ERROR_RETURN (dm_error_$no_current_transaction); 92 93 94 /* the transaction seems valid, so invoke the primitive to abandon the transaciton */ 95 96 call bj_adopt_txn$abandon (tix, tid); 97 98 99 bjm_data_$bj_operation = ""; 100 bjm_data_$bj_exit_err = bjm_data_$bj_default_error_label; 101 102 MAIN_RETURN: 103 return; 104 105 nonlocal_error_exit: 106 call ERROR_RETURN (bjm_data_$bj_code); 107 108 109 /* Internal Procedures */ 110 111 ERROR_RETURN: 112 procedure (error_code); 113 114 dcl error_code fixed bin (35); 115 116 call CLEANUP; 117 p_code = error_code; 118 goto MAIN_RETURN; 119 120 end ERROR_RETURN; 121 122 123 124 CLEANUP: 125 procedure (); 126 127 dcl cleanup_code fixed bin (35); 128 129 call bj_adopt_txn$force_abandon (); 130 call bj_cleanup_tables$handler (cleanup_code); 131 132 bjm_data_$bj_operation = ""; 133 bjm_data_$bj_exit_err = bjm_data_$bj_default_error_label; 134 135 return; 136 137 end CLEANUP; 138 139 140 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 141 142 2 1 /* BEGIN INCLUDE FILE: dm_bj_txt.incl.pl1 */ 2 2 /* 2 3*dm_bj_txt - before journal per-system transaction table. 2 4* 2 5*Designed by A. Bensoussan 2 6*Written by M. Pandolf 06/02/82 2 7*Modified: 2 8*10/01/82 by Lee A. Newcomb: To use dm_system_data_ for dimension attributes 2 9* and specify alignment on level one. 2 10*08feb83 by M. Pandolf: To restructure the TXT and TXTE. 2 11*30mar83 by M. Pandolf: To add last_completed_operation and ok_to_write. 2 12**/ 2 13 /* format: style4,indattr,idind33,^indcomtxt */ 2 14 2 15 dcl BJ_TXT_VERSION_1 fixed bin int static options (constant) init (1); 2 16 2 17 dcl bj_txt_ptr ptr; /* pointer to transaction table */ 2 18 dcl bj_txte_ptr ptr; /* pointer to transaction table element */ 2 19 2 20 dcl 1 bj_txt aligned based (bj_txt_ptr), /* transaction table */ 2 21 2 version fixed bin, /* should be BJ_TXT_VERSION_1 */ 2 22 2 max_n_entries fixed bin, 2 23 2 n_entries_used fixed bin, /* assumed contiguous */ 2 24 2 pad_header_to_32_words bit (36) dim (29), /* to mod32 align bj_txt.entry */ 2 25 2 entry dim (dm_system_data_$max_n_transactions refer (bj_txt.max_n_entries)) 2 26 like bj_txte; 2 27 2 28 dcl 1 bj_txte based (bj_txte_ptr) aligned, /* single entry, must be mod32 word aligned */ 2 29 2 tid bit (36), /* transaction id if this or last txn */ 2 30 2 bj_uid bit (36), /* UID of before journal chosen at begin mark */ 2 31 2 entry_state aligned, 2 32 3 last_completed_operation char (4), /* to prevent multiple abort and commit */ 2 33 3 ok_to_write bit (1), /* basically validates using this entry */ 2 34 2 owner_info aligned, /* info about creation of txte */ 2 35 3 process_id bit (36), /* of process that wrote begin mark */ 2 36 2 operator_info aligned, /* of process that is currently using this txte */ 2 37 3 process_id bit (36), /* of process that shall write subsequent marks */ 2 38 3 ppte_ptr ptr, /* pointer to PPTE for this transaction */ 2 39 3 bj_oid bit (36), /* before journal opening ID for operator */ 2 40 2 records_info aligned, /* grouped to be saved and restored as one unit */ 2 41 3 curr_checkpoint_rec_id bit (36), /* ident of checkpoint record if doing a rollback, */ 2 42 /* else, this value must be zero. */ 2 43 3 first_bj_rec_id bit (36), /* ident of first mark for this transaction */ 2 44 3 last_bj_rec_id bit (36), /* ident of current mark for this transaction */ 2 45 3 n_rec_written fixed bin (35), /* count of marks written for this transaction */ 2 46 3 n_bytes_written fixed bin (35), /* count of total bytes written to journal */ 2 47 3 last_fm_postcommit_handler_rec_id 2 48 bit (36), /* ident of last special handler in list */ 2 49 2 append_state aligned, /* the first two members define the state of this */ 2 50 3 current_operation char (4), /* transaction and its interaction with bj_storage: */ 2 51 3 pending_bj_rec_id bit (36), /* operation rec_id state */ 2 52 /* *null* XXX quiesed */ 2 53 /* ^null "0"b write pending */ 2 54 /* ^null ^"0"b write completed, needs flushing */ 2 55 /* */ 2 56 3 pending_n_rec_written fixed bin (35), /* copy to n_rec_written before flush */ 2 57 3 pending_n_bytes_written fixed bin (35), /* copy to n_bytes_written before flush */ 2 58 2 pad_entry_to_32_words bit (36) dim (13); /* make any part of table 32 words long */ 2 59 2 60 /* END INCLUDE FILE: dm_bj_txt_ptr */ 143 144 3 1 /* BEGIN INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 3 2 3 3 /* Originally found in before journal primitives written by */ 3 4 /* A. Bensoussan. Gathered into an include file for ease of use. */ 3 5 /* See the bjm_data_.alm source for details of use. */ 3 6 3 7 /* HISTORY: 3 8*Written by Mike Pandolf, 07/14/82. 3 9*Modified: 3 10*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 3 11* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 3 12**/ 3 13 3 14 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 3 15 dcl bjm_data_$bj_operation char (32) external static; 3 16 3 17 dcl bjm_data_$bj_exit_err label variable external; 3 18 3 19 dcl bjm_data_$bj_code fixed bin (35) external; 3 20 3 21 dcl bjm_data_$bj_default_error_label label external static; 3 22 3 23 3 24 /* END INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 145 146 147 148 end bjm_abandon_transaction; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.1 bjm_abandon_transaction.pl1 >spec>on>7192.pbf-04/04/85>bjm_abandon_transaction.pl1 141 1 01/07/85 0857.8 dm_bj_static.incl.pl1 >ldd>include>dm_bj_static.incl.pl1 143 2 01/07/85 0858.0 dm_bj_txt.incl.pl1 >ldd>include>dm_bj_txt.incl.pl1 145 3 01/07/85 0857.3 dm_bj_global_error_info.incl.pl1 >ldd>include>dm_bj_global_error_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. ME 000000 constant char(32) initial unaligned dcl 54 ref 81 bj_adopt_txn$abandon 000010 constant entry external dcl 58 ref 96 bj_adopt_txn$force_abandon 000012 constant entry external dcl 59 ref 129 bj_cleanup_tables$handler 000014 constant entry external dcl 60 ref 130 bj_txte based structure level 1 dcl 2-28 bjm_data_$bj_code 000030 external static fixed bin(35,0) dcl 3-19 set ref 77* 105* bjm_data_$bj_default_error_label 000032 external static label variable dcl 3-21 ref 100 133 bjm_data_$bj_exit_err 000026 external static label variable dcl 3-17 set ref 76* 100* 133* bjm_data_$bj_operation 000024 external static char(32) unaligned dcl 3-15 set ref 81 81* 99* 132* cleanup 000102 stack reference condition dcl 50 ref 79 cleanup_code 000100 automatic fixed bin(35,0) dcl 127 set ref 130* dm_error_$bj_recursive_invoc 000016 external static fixed bin(35,0) dcl 64 ref 84 dm_error_$no_current_transaction 000020 external static fixed bin(35,0) dcl 65 set ref 90* dm_system_data_$max_n_transactions 000022 external static fixed bin(17,0) dcl 1-10 ref 90 error_code parameter fixed bin(35,0) dcl 114 ref 111 117 p_code parameter fixed bin(35,0) dcl 41 set ref 32 72* 84* 117* p_tid parameter bit(36) dcl 39 ref 32 70 p_tix parameter fixed bin(17,0) dcl 40 ref 32 71 tid 000100 automatic bit(36) dcl 45 set ref 70* 96* tix 000101 automatic fixed bin(17,0) dcl 46 set ref 71* 90 90 96* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_TXT_VERSION_1 internal static fixed bin(17,0) initial dcl 2-15 bj_txt based structure level 1 dcl 2-20 bj_txt_ptr automatic pointer dcl 2-17 bj_txte_ptr automatic pointer dcl 2-18 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 NAMES DECLARED BY EXPLICIT CONTEXT. CLEANUP 000166 constant entry internal dcl 124 ref 79 116 ERROR_RETURN 000152 constant entry internal dcl 111 ref 90 105 MAIN_RETURN 000141 constant label dcl 102 ref 85 118 bjm_abandon_transaction 000022 constant entry external dcl 32 nonlocal_error_exit 000142 constant label dcl 105 ref 76 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 414 450 222 424 Length 714 222 34 230 172 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_abandon_transaction 84 external procedure is an external procedure. on unit on line 79 64 on unit ERROR_RETURN internal procedure shares stack frame of external procedure bjm_abandon_transaction. CLEANUP 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME CLEANUP 000100 cleanup_code CLEANUP bjm_abandon_transaction 000100 tid bjm_abandon_transaction 000101 tix bjm_abandon_transaction THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out call_int_this call_int_other return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_adopt_txn$abandon bj_adopt_txn$force_abandon bj_cleanup_tables$handler THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_code bjm_data_$bj_default_error_label bjm_data_$bj_exit_err bjm_data_$bj_operation dm_error_$bj_recursive_invoc dm_error_$no_current_transaction dm_system_data_$max_n_transactions LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 32 000016 70 000027 71 000032 72 000034 76 000035 77 000041 79 000042 81 000064 84 000076 85 000101 90 000102 96 000115 99 000126 100 000133 102 000141 105 000142 148 000151 111 000152 116 000154 117 000160 118 000164 124 000165 129 000173 130 000177 132 000206 133 000213 135 000221 ----------------------------------------------------------- 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