COMPILATION LISTING OF SEGMENT lm_expand_lock_seg_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/05/85 0908.3 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION 8* Program to add a component to the lock data base. The lock lock must 9* be held by the caller. 10**/ 11 12 /* HISTORY: 13*Written by J. Bongiovanni 12/14/82. 14*Modified: 15*08/06/83 by Lee A. Newcomb: removed obsolete code args from calls 16* to dm_per_system_ entries. 17*05/01/84 by R. Michael Tague: Added %include dm_lm_meters 18*10/03/84 by Stanford S. Cox: For DM program standards. 19**/ 20 21 /* format: style3 */ 22 lm_expand_lock_seg_: 23 proc (p_code); 24 25 /* Parameter */ 26 27 dcl p_code fixed bin (35); 28 29 /* Automatic */ 30 31 dcl freex fixed bin; 32 dcl lock_segx fixed bin; 33 dcl n_segments fixed bin; 34 35 /* Static */ 36 37 dcl ME char (19) int static options (constant) init ("lm_expand_lock_seg_"); 38 39 /* External */ 40 41 dcl dm_system_data_$max_n_transactions 42 fixed bin ext static; 43 dcl lm_data_$lock_segments_ptr 44 ptr external; 45 dcl lm_data_$lock_seg_ptr 46 ptr external; 47 dcl dm_error_$lock_table_overflow 48 fixed bin (35) external; 49 dcl dm_error_$record_quota_overflow 50 fixed bin (35) external; 51 dcl error_table_$unimplemented_version 52 fixed bin (35) ext static; 53 54 55 /* Entry */ 56 57 dcl dm_per_system_$create 58 entry (char (*), ptr); 59 dcl sub_err_ entry () options (variable); 60 61 62 /* Builtin */ 63 64 dcl addr builtin; 65 dcl divide builtin; 66 dcl fixed builtin; 67 dcl size builtin; 68 69 /* Condition */ 70 71 dcl record_quota_overflow 72 condition; 73 74 p_code = 0; 75 76 lock_seg_ptr = lm_data_$lock_seg_ptr; 77 call CHECK_VERSION (LOCK_SEG_VERSION_1, lock_seg.version, "lock_seg"); 78 lock_segments_ptr = lm_data_$lock_segments_ptr; 79 80 if lock_seg.n_lock_segments >= lock_seg.max_lock_segments 81 then do; 82 p_code = dm_error_$lock_table_overflow; 83 return; 84 end; 85 86 n_segments = lock_seg.n_lock_segments + 1; 87 88 lock_segno = n_segments; 89 call dm_per_system_$create (LOCK_SEGNAME || lock_segno, lock_aux_seg_ptr); 90 91 on record_quota_overflow goto QUOTA_OVERFLOW; 92 93 lock_block_array_ptr = addr (lock_aux_seg.free); 94 n_lock_blocks = divide (lock_seg.lock_seg_size - fixed (wordno (lock_block_array_ptr)), size (lock_block), 17); 95 96 lock_aux_seg.n_lock_blocks = n_lock_blocks; 97 lock_aux_seg.lock_array_offset = wordno (lock_block_array_ptr); 98 99 do freex = n_lock_blocks to 1 by -1; 100 lock_free_block_ptr = addr (lock_block_array (freex)); 101 lock_free_block.seg_inx = n_segments; 102 lock_free_block.type = TYPE_FREE; 103 if freex = n_lock_blocks 104 then lock_free_block.free_fp = lock_seg.free_list_ptr; 105 else lock_free_block.free_fp = VPTR (addr (lock_block_array (freex + 1))); 106 end; 107 108 lock_seg.free_list_ptr = VPTR (addr (lock_block_array (1))); 109 lock_seg.n_lock_segments = lock_seg.n_lock_segments + 1; 110 111 return; 112 113 114 QUOTA_OVERFLOW: 115 p_code = dm_error_$record_quota_overflow; 116 return; 117 118 VPTR: 119 proc (Lock_Block_ptr) returns (1 aligned like lock_virtual_ptr); 120 121 dcl Lock_Block_ptr ptr aligned parameter; 122 123 dcl 1 Lock_Virtual_Ptr aligned like lock_virtual_ptr; 124 125 dcl 1 Lock_Block aligned like lock_block based (Lock_Block_ptr); 126 127 128 Lock_Virtual_Ptr.seg_inx = Lock_Block.seg_inx; 129 Lock_Virtual_Ptr.offset = wordno (Lock_Block_ptr); 130 131 return (Lock_Virtual_Ptr); 132 133 end VPTR; 134 135 CHECK_VERSION: 136 proc (cv_p_expected_version, cv_p_received_version, cv_p_structure_name); 137 138 dcl cv_p_expected_version 139 char (8) aligned parameter; 140 dcl cv_p_received_version 141 char (8) aligned parameter; 142 dcl cv_p_structure_name char (32) aligned parameter; 143 144 if cv_p_expected_version ^= cv_p_received_version 145 then call sub_err_ (error_table_$unimplemented_version, ME, ACTION_CANT_RESTART, null (), 0, 146 "^/Expected version ^a of the ^a structure." || "^/Received version ^a instead.", 147 cv_p_expected_version, cv_p_structure_name, cv_p_received_version); 148 end CHECK_VERSION; 149 150 151 1 1 /* BEGIN INCLUDE FILE - dm_lm_system_data.incl.pl1 */ 1 2 1 3 /* format: style3,idind25 */ 1 4 /* HISTORY: 1 5* 1 6*Written by Benson Margulies, 4/83. 1 7*Modified: 1 8*04/24/84 by R. Michael Tague: moved the meters structure definition to 1 9* dm_lm_meters.incl.pl1. Added this history section. 1 10*05/01/84 by R. Michael Tague: removed the %include dm_lm_meters. 1 11*10/17/84 by Stanford S. Cox: Added version constant, and changed 1 12* transaction_table to use a refer extent (to allow outer ring reference). 1 13**/ 1 14 1 15 dcl lock_seg_ptr ptr; 1 16 dcl lock_transaction_table_ptr 1 17 ptr; 1 18 dcl lock_hash_table_ptr ptr; 1 19 dcl lock_aux_seg_ptr ptr; 1 20 dcl lock_block_ptr ptr; 1 21 dcl lock_block_array_ptr ptr; 1 22 dcl lock_free_block_ptr ptr; 1 23 dcl lock_object_ptr ptr; 1 24 dcl lock_owner_ptr ptr; 1 25 dcl lock_segments_ptr ptr; 1 26 dcl lock_waiter_ptr ptr; 1 27 dcl lock_deadlock_ptr ptr; 1 28 1 29 dcl n_lock_blocks fixed bin; 1 30 dcl n_lock_deadlock fixed bin; 1 31 1 32 dcl LOCK_SEG_VERSION_1 char (8) aligned init ("locksg 1") int static options (constant); 1 33 1 34 dcl 1 lock_seg aligned based (lock_seg_ptr), 1 35 /* Per-system lock data */ 1 36 2 version char (8) aligned, 1 37 2 header aligned, 1 38 3 lock fixed bin (71), /* Fast Lock on system lock operations */ 1 39 3 n_lock_segments fixed bin, /* Number of segments in system lock data */ 1 40 3 lock_seg_size fixed bin (19), /* Number of words per segment */ 1 41 3 max_lock_segments fixed bin, /* Maximum number of segments */ 1 42 3 n_transaction_table_entries 1 43 fixed bin, /* Size of transaction table */ 1 44 3 n_hash_table_entries 1 45 fixed bin, /* Size of hash table */ 1 46 3 hash_mask bit (36) aligned, /* Used by hashing routine */ 1 47 3 free_list_ptr aligned like lock_virtual_ptr, 1 48 /* Thread of free blocks */ 1 49 3 transaction_table_offset 1 50 fixed bin (18) unsigned aligned, 1 51 /* Offset of transaction table */ 1 52 3 hash_table_offset fixed bin (18) unsigned aligned, 1 53 /* Offset of hash table */ 1 54 3 n_lock_blocks fixed bin, /* Number of blocks crated */ 1 55 3 lock_array_offset fixed bin (18) unsigned aligned, 1 56 /* Offset of block array */ 1 57 2 transaction_table (0 refer (lock_seg.n_transaction_table_entries)) aligned like lock_transaction_table, 1 58 2 hash_table aligned like lock_hash_table, 1 59 2 meters aligned like lock_meters, 1 60 2 free fixed bin (71); /* Free space */ 1 61 1 62 dcl 1 lock_aux_seg aligned based (lock_aux_seg_ptr), 1 63 /* Other than first segment */ 1 64 2 n_lock_blocks fixed bin, /* Number of blocks in this segment */ 1 65 2 lock_array_offset fixed bin (18) unsigned aligned, 1 66 /* Offset of block array */ 1 67 2 free fixed bin (71); /* Free space */ 1 68 1 69 dcl 1 lock_transaction_table aligned based (lock_transaction_table_ptr), 1 70 /* Process table entry */ 1 71 2 deadlock_inx fixed bin, /* Index used for deadlock detection */ 1 72 2 process_id bit (36) aligned, /* Multics process identifier */ 1 73 2 txn_id bit (36) aligned, /* Current transaction ID */ 1 74 2 ev_channel fixed bin (71), 1 75 2 own_ptr aligned like lock_virtual_ptr, 1 76 /* First in thread of owning blocks */ 1 77 2 wait_ptr aligned like lock_virtual_ptr; 1 78 /* Waiting block */ 1 79 1 80 dcl 1 lock_hash_table aligned based (lock_hash_table_ptr), 1 81 2 buckets (lock_seg.n_hash_table_entries) aligned like lock_virtual_ptr; 1 82 1 83 1 84 dcl 1 lock_block aligned based (lock_block_ptr), 1 85 /* Generic block */ 1 86 2 seg_inx fixed bin unal, 1 87 2 type fixed bin unal, 1 88 2 pad (5) bit (36) aligned; 1 89 1 90 dcl 1 lock_block_array (n_lock_blocks) aligned like lock_block based (lock_block_array_ptr); 1 91 1 92 dcl 1 lock_free_block aligned based (lock_free_block_ptr), 1 93 /* Free block */ 1 94 2 seg_inx fixed bin unal, 1 95 2 type fixed bin unal, /* TYPE_FREE */ 1 96 2 free_fp aligned like lock_virtual_ptr, 1 97 /* Thread of free blocks */ 1 98 2 pad (4) bit (36) aligned; 1 99 1 100 dcl 1 lock_object aligned based (lock_object_ptr), 1 101 /* That which is locked */ 1 102 2 seg_inx fixed bin unal, 1 103 2 type fixed bin unal, /* TYPE_OBJECT */ 1 104 2 uid bit (36) aligned, /* Page File UID */ 1 105 2 ci_no fixed bin (35), /* Control Interval (-1 => Page File) */ 1 106 2 owners_ptr aligned like lock_virtual_ptr, 1 107 /* First in thread of owning blocks */ 1 108 2 waiters_ptr aligned like lock_virtual_ptr, 1 109 /* First in thread of waiting blocks */ 1 110 2 ht_fp aligned like lock_virtual_ptr; 1 111 /* Hash Table thread */ 1 112 1 113 dcl 1 lock_owner aligned based (lock_owner_ptr), 1 114 /* Owner of a lock */ 1 115 2 seg_inx fixed bin unal, 1 116 2 type fixed bin unal, /* TYPE_OWNER */ 1 117 2 lock_ptr aligned like lock_virtual_ptr, 1 118 /* Pointer to lock_object */ 1 119 2 mode fixed bin, /* Type of lock */ 1 120 2 owners_fp aligned like lock_virtual_ptr, 1 121 /* Thread of owners */ 1 122 2 transaction_fp aligned like lock_virtual_ptr, 1 123 /* Thread of locks owned by this transaction */ 1 124 2 transaction_ptr aligned like lock_virtual_ptr; 1 125 /* Pointer to transaction table entry */ 1 126 1 127 1 128 dcl 1 lock_waiter aligned based (lock_waiter_ptr), 1 129 /* Waiter for a lock */ 1 130 2 seg_inx fixed bin unal, 1 131 2 type fixed bin unal, /* TYPE_WAITER */ 1 132 2 lock_ptr aligned like lock_virtual_ptr, 1 133 /* Pointer to lock_object */ 1 134 2 mode fixed bin, /* Desired mode */ 1 135 2 waiters_fp aligned like lock_virtual_ptr, 1 136 /* Thread of waiters */ 1 137 2 transaction_ptr aligned like lock_virtual_ptr, 1 138 /* Process table entry of this proces */ 1 139 2 pad bit (36) aligned; 1 140 1 141 1 142 dcl 1 lock_segments aligned based (lock_segments_ptr), 1 143 2 seg_baseptr (lock_seg.n_lock_segments) ptr unal; 1 144 1 145 dcl 1 lock_virtual_ptr aligned based, 1 146 2 seg_inx fixed bin unal, 1 147 2 offset fixed bin (18) unsigned unal; 1 148 1 149 dcl 1 lock_deadlock aligned based (lock_deadlock_ptr), 1 150 2 wait_own (n_lock_deadlock, n_lock_deadlock) bit (1) unaligned; 1 151 1 152 declare 1 lock_deadlock_36 aligned based (lock_deadlock_ptr), 1 153 2 wait_own (36, 36) bit (1) unaligned; 1 154 1 155 declare 1 lock_deadlock_72 aligned based (lock_deadlock_ptr), 1 156 2 wait_own (72, 72) bit (1) unaligned; 1 157 /* (x,y) ON => x waiting for lock owned by y */ 1 158 1 159 declare lock_deadlock_txn_ids_ptr 1 160 pointer; 1 161 declare lock_deadlock_txn_ids (n_lock_deadlock) bit (36) aligned based (lock_deadlock_txn_ids_ptr); 1 162 dcl ( 1 163 TYPE_FREE init (1), 1 164 TYPE_OBJECT init (2), 1 165 TYPE_OWNER init (3), 1 166 TYPE_WAITER init (4), 1 167 MAX_TYPE init (4) 1 168 ) fixed bin int static options (constant); 1 169 1 170 1 171 dcl 1 NULL_VPTR aligned int static options (constant), 1 172 2 seg_inx fixed bin unal init (-1), 1 173 2 offset fixed bin (18) unsigned unal init (0); 1 174 1 175 1 176 dcl LOCK_BLOCK_SIZE fixed bin int static options (constant) init (6); 1 177 /* Size of all lock blocks */ 1 178 1 179 dcl LOCK_SEGNAME char (9) int static options (constant) init ("lock_seg_"); 1 180 1 181 dcl lock_segno pic "999"; 1 182 1 183 dcl ( 1 184 LOCK_MESSAGE_DEADLOCK init (1243657) 1 185 ) fixed bin (71) int static options (constant); 1 186 1 187 1 188 /* END INCLUDE FILE - dm_lm_system_data.incl.pl1 */ 152 153 2 1 /* BEGIN INCLUDE FILE - dm_lm_meters.incl.pl1 * 2 2* 2 3*/* format: style3,idind25 */ 2 4 2 5 /* DESCRIPTION: 2 6* 2 7* This is the lock manager meters structure. 2 8**/ 2 9 /* HISTORY: 2 10*Written by R. Michael Tague, 4/24/84. 2 11*Modified: 2 12*05/01/84 by R. Michael Tague: Collected all of the meters together into 2 13* the meters structure. 2 14**/ 2 15 2 16 dcl lock_meters_ptr ptr; 2 17 dcl LOCK_METERS_VERSION_1 char (8) aligned int static options (constant) 2 18 init ("LMMETER1"); 2 19 2 20 dcl 1 lock_meters aligned based (lock_meters_ptr), 2 21 2 version char (8), 2 22 2 lm_meters aligned, 2 23 3 lock_calls fixed bin (35), 2 24 3 unlock_all_calls fixed bin (35), 2 25 3 waits fixed bin (35), 2 26 3 deadlock_checks fixed bin (35), 2 27 3 real_deadlock_checks 2 28 fixed bin (35), 2 29 3 deadlock_checks_36 fixed bin (35), 2 30 3 deadlock_checks_72 fixed bin (35), 2 31 3 deadlock_self_youngest 2 32 fixed bin (35), 2 33 3 deadlock_other_youngest 2 34 fixed bin (35), 2 35 3 file_locks_by_mode (2:6) fixed bin (35), 2 36 3 ci_locks_by_mode (2:3) fixed bin (35), 2 37 3 allocates fixed bin (35), 2 38 3 frees fixed bin (35), 2 39 3 dup_file_locks_by_mode 2 40 (2:6) fixed bin (35), 2 41 3 dup_ci_locks_by_mode 2 42 (2:3) fixed bin (35), 2 43 3 pad (11) fixed bin (35); 2 44 2 45 /* END INCLUDE FILE - dm_lm_meters.incl.pl1 */ 154 155 3 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 3 2 /* format: style3 */ 3 3 3 4 /* These constants are to be used for the flags argument of sub_err_ */ 3 5 /* They are just "string (condition_info_header.action_flags)" */ 3 6 3 7 declare ( 3 8 ACTION_CAN_RESTART init (""b), 3 9 ACTION_CANT_RESTART init ("1"b), 3 10 ACTION_DEFAULT_RESTART 3 11 init ("01"b), 3 12 ACTION_QUIET_RESTART 3 13 init ("001"b), 3 14 ACTION_SUPPORT_SIGNAL 3 15 init ("0001"b) 3 16 ) bit (36) aligned internal static options (constant); 3 17 3 18 /* End include file */ 156 157 158 end lm_expand_lock_seg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/05/85 0759.6 lm_expand_lock_seg_.pl1 >spec>on>7138.pbf>lm_expand_lock_seg_.pl1 152 1 01/07/85 0859.2 dm_lm_system_data.incl.pl1 >ldd>include>dm_lm_system_data.incl.pl1 154 2 01/07/85 0859.1 dm_lm_meters.incl.pl1 >ldd>include>dm_lm_meters.incl.pl1 156 3 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000000 constant bit(36) initial dcl 3-7 set ref 144* LOCK_SEGNAME 000001 constant char(9) initial unaligned dcl 1-179 ref 89 LOCK_SEG_VERSION_1 000004 constant char(8) initial dcl 1-32 set ref 77* Lock_Block based structure level 1 dcl 125 Lock_Block_ptr parameter pointer dcl 121 ref 118 128 129 Lock_Virtual_Ptr 000132 automatic structure level 1 dcl 123 set ref 131 ME 000006 constant char(19) initial unaligned dcl 37 set ref 144* TYPE_FREE constant fixed bin(17,0) initial dcl 1-162 ref 102 addr builtin function dcl 64 ref 93 100 105 105 108 108 cv_p_expected_version parameter char(8) dcl 138 set ref 135 144 144* cv_p_received_version parameter char(8) dcl 140 set ref 135 144 144* cv_p_structure_name parameter char(32) dcl 142 set ref 135 144* divide builtin function dcl 65 ref 94 dm_error_$lock_table_overflow 000014 external static fixed bin(35,0) dcl 47 ref 82 dm_error_$record_quota_overflow 000016 external static fixed bin(35,0) dcl 49 ref 114 dm_per_system_$create 000022 constant entry external dcl 57 ref 89 error_table_$unimplemented_version 000020 external static fixed bin(35,0) dcl 51 set ref 144* fixed builtin function dcl 66 ref 94 free 2 based fixed bin(71,0) level 2 dcl 1-62 set ref 93 free_fp 1 based structure level 2 dcl 1-92 set ref 103* 105* free_list_ptr 12 based structure level 3 dcl 1-34 set ref 103 108* freex 000100 automatic fixed bin(17,0) dcl 31 set ref 99* 100 103 105 105* header 2 based structure level 2 dcl 1-34 lm_data_$lock_seg_ptr 000012 external static pointer dcl 45 ref 76 lm_data_$lock_segments_ptr 000010 external static pointer dcl 43 ref 78 lock_array_offset 1 based fixed bin(18,0) level 2 unsigned dcl 1-62 set ref 97* lock_aux_seg based structure level 1 dcl 1-62 lock_aux_seg_ptr 000112 automatic pointer dcl 1-19 set ref 89* 93 96 97 lock_block based structure level 1 dcl 1-84 ref 94 lock_block_array based structure array level 1 dcl 1-90 set ref 100 105 105 108 108 lock_block_array_ptr 000114 automatic pointer dcl 1-21 set ref 93* 94 97 100 105 105 108 108 lock_block_ptr automatic pointer dcl 1-20 ref 94 lock_free_block based structure level 1 dcl 1-92 lock_free_block_ptr 000116 automatic pointer dcl 1-22 set ref 100* 101 102 103 105 lock_hash_table based structure level 1 dcl 1-80 lock_meters based structure level 1 dcl 2-20 lock_seg based structure level 1 dcl 1-34 lock_seg_ptr 000110 automatic pointer dcl 1-15 set ref 76* 77 80 80 86 94 103 108 109 109 lock_seg_size 5 based fixed bin(19,0) level 3 dcl 1-34 ref 94 lock_segments_ptr 000120 automatic pointer dcl 1-25 set ref 78* lock_segno 000123 automatic picture(3) unaligned dcl 1-181 set ref 88* 89 lock_transaction_table based structure level 1 dcl 1-69 lock_virtual_ptr based structure level 1 dcl 1-145 max_lock_segments 6 based fixed bin(17,0) level 3 dcl 1-34 ref 80 n_lock_blocks based fixed bin(17,0) level 2 in structure "lock_aux_seg" dcl 1-62 in procedure "lm_expand_lock_seg_" set ref 96* n_lock_blocks 000122 automatic fixed bin(17,0) dcl 1-29 in procedure "lm_expand_lock_seg_" set ref 94* 96 99 103 n_lock_segments 4 based fixed bin(17,0) level 3 dcl 1-34 set ref 80 86 109* 109 n_segments 000101 automatic fixed bin(17,0) dcl 33 set ref 86* 88 101 offset 0(18) 000132 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 123 set ref 129* p_code parameter fixed bin(35,0) dcl 27 set ref 22 74* 82* 114* record_quota_overflow 000102 stack reference condition dcl 71 ref 91 seg_inx based fixed bin(17,0) level 2 in structure "lock_free_block" packed unaligned dcl 1-92 in procedure "lm_expand_lock_seg_" set ref 101* seg_inx 000132 automatic fixed bin(17,0) level 2 in structure "Lock_Virtual_Ptr" packed unaligned dcl 123 in procedure "VPTR" set ref 128* size builtin function dcl 67 ref 94 sub_err_ 000024 constant entry external dcl 59 ref 144 type 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-92 set ref 102* version based char(8) level 2 dcl 1-34 set ref 77* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 3-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 3-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 3-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 3-7 LOCK_BLOCK_SIZE internal static fixed bin(17,0) initial dcl 1-176 LOCK_MESSAGE_DEADLOCK internal static fixed bin(71,0) initial dcl 1-183 LOCK_METERS_VERSION_1 internal static char(8) initial dcl 2-17 MAX_TYPE internal static fixed bin(17,0) initial dcl 1-162 NULL_VPTR internal static structure level 1 dcl 1-171 TYPE_OBJECT internal static fixed bin(17,0) initial dcl 1-162 TYPE_OWNER internal static fixed bin(17,0) initial dcl 1-162 TYPE_WAITER internal static fixed bin(17,0) initial dcl 1-162 dm_system_data_$max_n_transactions external static fixed bin(17,0) dcl 41 lock_deadlock based structure level 1 dcl 1-149 lock_deadlock_36 based structure level 1 dcl 1-152 lock_deadlock_72 based structure level 1 dcl 1-155 lock_deadlock_ptr automatic pointer dcl 1-27 lock_deadlock_txn_ids based bit(36) array dcl 1-161 lock_deadlock_txn_ids_ptr automatic pointer dcl 1-159 lock_hash_table_ptr automatic pointer dcl 1-18 lock_meters_ptr automatic pointer dcl 2-16 lock_object based structure level 1 dcl 1-100 lock_object_ptr automatic pointer dcl 1-23 lock_owner based structure level 1 dcl 1-113 lock_owner_ptr automatic pointer dcl 1-24 lock_segments based structure level 1 dcl 1-142 lock_segx automatic fixed bin(17,0) dcl 32 lock_transaction_table_ptr automatic pointer dcl 1-16 lock_waiter based structure level 1 dcl 1-128 lock_waiter_ptr automatic pointer dcl 1-26 n_lock_deadlock automatic fixed bin(17,0) dcl 1-30 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000320 constant entry internal dcl 135 ref 77 QUOTA_OVERFLOW 000276 constant label dcl 114 ref 91 VPTR 000303 constant entry internal dcl 118 ref 105 108 lm_expand_lock_seg_ 000066 constant entry external dcl 22 NAMES DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 144 144 wordno builtin function ref 94 97 129 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 562 610 421 572 Length 1040 421 26 214 141 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lm_expand_lock_seg_ 180 external procedure is an external procedure. on unit on line 91 64 on unit VPTR internal procedure shares stack frame of external procedure lm_expand_lock_seg_. CHECK_VERSION internal procedure shares stack frame of external procedure lm_expand_lock_seg_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lm_expand_lock_seg_ 000100 freex lm_expand_lock_seg_ 000101 n_segments lm_expand_lock_seg_ 000110 lock_seg_ptr lm_expand_lock_seg_ 000112 lock_aux_seg_ptr lm_expand_lock_seg_ 000114 lock_block_array_ptr lm_expand_lock_seg_ 000116 lock_free_block_ptr lm_expand_lock_seg_ 000120 lock_segments_ptr lm_expand_lock_seg_ 000122 n_lock_blocks lm_expand_lock_seg_ 000123 lock_segno lm_expand_lock_seg_ 000132 Lock_Virtual_Ptr VPTR THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dm_per_system_$create sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$lock_table_overflow dm_error_$record_quota_overflow error_table_$unimplemented_version lm_data_$lock_seg_ptr lm_data_$lock_segments_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000063 74 000073 76 000075 77 000100 78 000115 80 000121 82 000125 83 000130 86 000131 88 000133 89 000143 91 000165 93 000204 94 000207 96 000217 97 000220 99 000223 100 000231 101 000235 102 000241 103 000243 105 000252 106 000262 108 000265 109 000274 111 000275 114 000276 116 000302 118 000303 128 000305 129 000310 131 000313 135 000320 144 000322 148 000411 ----------------------------------------------------------- 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