COMPILATION LISTING OF SEGMENT tm_per_system_init Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1653.7 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 /* format: style4,ifthenstmt,^indproc,^indcomtxt */ 7 /* --------------- */ 8 9 tm_per_system_init: proc (A_code); 10 11 /* DESCRIPTION: 12* 13* This procedure, called at system initialization time, allocates 14* transaction_manager_'s Transaction Definition Table (TDT) and puts its 15* relp in dm_system_data_$tm_tdt_relp. 16**/ 17 18 /* HISTORY: 19* 20*Written by Steve Herbst, 08/16/82. 21*Modified: 22*08/05/83 by Lee A. Newcomb: Removed code argument from calls to dm_per_system_ 23* since errors are now reported via sub_err_. 24*10/17/84 by Steve Herbst: Changed in response to audit comments. 25**/ 26 27 /* DECLARATIONS */ 28 29 /* Parameters */ 30 31 dcl A_code fixed bin (35) parameter; 32 33 34 35 /* Constants */ 36 37 /* Based */ 38 39 /* Static */ 40 41 /* Automatic */ 42 43 /* External */ 44 45 dcl dm_system_data_$max_n_transactions fixed bin external; 46 dcl dm_system_data_$tm_tdt_relp bit (18) external; 47 48 /* Entries */ 49 50 dcl dm_per_system_$alloc entry (fixed bin, ptr); 51 52 /* Builtins */ 53 54 dcl (rel, size, unspec) builtin; 55 56 /* Conditions */ 57 58 /* END OF DECLARATIONS */ 59 60 A_code = 0; 61 62 tdt_max_count = dm_system_data_$max_n_transactions; 63 64 call dm_per_system_$alloc (size (tm_tdt), tm_tdt_ptr); 65 66 unspec (tm_tdt) = "0"b; 67 68 tm_tdt.version = TM_TDT_VERSION_3; 69 tm_tdt.entry_count = dm_system_data_$max_n_transactions; /* just in case $alloc didn't set it */ 70 71 dm_system_data_$tm_tdt_relp = rel (tm_tdt_ptr); 72 73 return; 74 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 */ 75 76 77 78 end tm_per_system_init; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1151.3 tm_per_system_init.pl1 >spec>temp>famis1>tm_per_system_init.pl1 75 1 01/03/85 1004.9 dm_tm_tdt.incl.pl1 >spec>temp>famis1>dm_tm_tdt.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 31 set ref 9 60* TM_TDT_VERSION_3 000000 constant char(8) initial unaligned dcl 1-38 ref 68 dm_per_system_$alloc 000014 constant entry external dcl 50 ref 64 dm_system_data_$max_n_transactions 000010 external static fixed bin(17,0) dcl 45 ref 62 69 dm_system_data_$tm_tdt_relp 000012 external static bit(18) unaligned dcl 46 set ref 71* entry_count 6 based fixed bin(17,0) level 2 dcl 1-41 set ref 66 69* rel builtin function dcl 54 ref 71 size builtin function dcl 54 ref 64 64 tdt_max_count 000102 automatic fixed bin(17,0) dcl 1-36 set ref 62* 64 64 tm_tdt based structure level 1 dcl 1-41 set ref 64 64 66* tm_tdt_entry based structure level 1 dcl 1-59 tm_tdt_ptr 000100 automatic pointer dcl 1-35 set ref 64 64 64* 66 68 69 71 unspec builtin function dcl 54 set ref 66* version based char(8) level 2 dcl 1-41 set ref 68* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. tm_tdt_entry_ptr automatic pointer dcl 1-57 NAME DECLARED BY EXPLICIT CONTEXT. tm_per_system_init 000006 constant entry external dcl 9 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 136 154 55 146 Length 342 55 16 152 61 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tm_per_system_init 74 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tm_per_system_init 000100 tm_tdt_ptr tm_per_system_init 000102 tdt_max_count tm_per_system_init THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_per_system_$alloc THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_system_data_$max_n_transactions dm_system_data_$tm_tdt_relp CONSTANTS 000000 aa 124 115 055 124 TM-T 000001 aa 104 124 040 063 DT 3 000002 aa 404000000043 BEGIN PROCEDURE tm_per_system_init ENTRY TO tm_per_system_init STATEMENT 1 ON LINE 9 tm_per_system_init: proc (A_code); 000003 at 000001000002 000004 ta 000003000000 000005 da 000055300000 000006 aa 000120 6270 00 eax7 80 000007 aa 7 00034 3521 20 epp2 pr7|28,* 000010 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000011 aa 000002000000 000012 aa 000000000000 STATEMENT 1 ON LINE 60 A_code = 0; 000013 aa 6 00032 3735 20 epp7 pr6|26,* 000014 aa 7 00002 4501 20 stz pr7|2,* A_code STATEMENT 1 ON LINE 62 tdt_max_count = dm_system_data_$max_n_transactions; 000015 la 4 00010 2361 20 ldq pr4|8,* dm_system_data_$max_n_transactions 000016 aa 6 00102 7561 00 stq pr6|66 tdt_max_count STATEMENT 1 ON LINE 64 call dm_per_system_$alloc (size (tm_tdt), tm_tdt_ptr); 000017 aa 000026 4020 07 mpy 22,dl 000020 aa 000010 0760 07 adq 8,dl 000021 aa 6 00103 7561 00 stq pr6|67 000022 aa 6 00103 3521 00 epp2 pr6|67 000023 aa 6 00106 2521 00 spri2 pr6|70 000024 aa 6 00100 3521 00 epp2 pr6|64 tm_tdt_ptr 000025 aa 6 00110 2521 00 spri2 pr6|72 000026 aa 6 00104 6211 00 eax1 pr6|68 000027 aa 010000 4310 07 fld 4096,dl 000030 la 4 00014 3521 20 epp2 pr4|12,* dm_per_system_$alloc 000031 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 66 unspec (tm_tdt) = "0"b; 000032 aa 6 00100 3735 20 epp7 pr6|64,* tm_tdt_ptr 000033 aa 7 00006 2361 00 ldq pr7|6 tm_tdt.entry_count 000034 aa 000026 4020 07 mpy 22,dl 000035 aa 000010 0760 07 adq 8,dl 000036 aa 000044 4020 07 mpy 36,dl 000037 aa 000010 0760 07 adq 8,dl 000040 aa 000011 5060 07 div 9,dl 000041 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 000042 aa 000000 00 0000 desc9a 0,0 000043 aa 7 00000 00 0006 desc9a pr7|0,ql STATEMENT 1 ON LINE 68 tm_tdt.version = TM_TDT_VERSION_3; 000044 aa 777734 2370 04 ldaq -36,ic 000000 = 124115055124 104124040063 000045 aa 7 00000 7551 00 sta pr7|0 tm_tdt.version 000046 aa 7 00001 7561 00 stq pr7|1 tm_tdt.version STATEMENT 1 ON LINE 69 tm_tdt.entry_count = dm_system_data_$max_n_transactions; 000047 aa 6 00044 3701 20 epp4 pr6|36,* 000050 la 4 00010 2361 20 ldq pr4|8,* dm_system_data_$max_n_transactions 000051 aa 7 00006 7561 00 stq pr7|6 tm_tdt.entry_count STATEMENT 1 ON LINE 71 dm_system_data_$tm_tdt_relp = rel (tm_tdt_ptr); 000052 aa 7 00000 6351 00 eaa pr7|0 tm_tdt_ptr 000053 la 4 00012 7551 20 sta pr4|10,* dm_system_data_$tm_tdt_relp STATEMENT 1 ON LINE 73 return; 000054 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 78 end tm_per_system_init; END PROCEDURE tm_per_system_init ----------------------------------------------------------- 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