COMPILATION LISTING OF SEGMENT lm_copy_fast_data_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/24/85 0838.0 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* Copy fast_lock data/meters. 9* p_fast_lock_data_ptr (I/O) is a ptr to a temp seg which will contain the 10* copied fast_lock_data. The offset is set to the offset of the 11* fast_lock_data_ptr being copied. This is done to save the overhead of 12* recalculating the offsets. If null, fast_lock_data is not copied. 13* p_lock_list_meters_ptr (I) is a ptr to a structure declared like 14* lock_list_meters. If null, lock_list_meters is not copied. 15**/ 16 17 /* HISTORY: 18* 19*Written by S. Cox, 03/25/85. 20*Modified: 21*04/01/85 by S. Cox: Chg to return et$action_not_performed if ^meter_fast_locks. 22**/ 23 24 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */ 25 lm_copy_fast_data_: 26 procedure (p_fast_lock_data_ptr, p_lock_list_meters_ptr, p_code); 27 28 /* Parameter */ 29 30 dcl p_fast_lock_data_ptr ptr; 31 dcl p_lock_list_meters_ptr ptr; 32 declare p_code fixed bin (35); 33 34 /* Based */ 35 36 dcl fast_lock_data_template (fast_lock_data.size) bit (36) aligned based; 37 38 /* Static */ 39 40 dcl myname char (18) int static options (constant) init ("lm_copy_fast_data_"); 41 42 /* External */ 43 44 declare ( 45 error_table_$action_not_performed, 46 error_table_$unimplemented_version 47 ) fixed bin (35) ext static; 48 dcl dm_system_data_$meter_fast_locks 49 bit (1) aligned ext; 50 declare lm_data_$fast_lock_data_ptr pointer ext static; 51 dcl lm_data_$lock_list_meters_ptr ptr ext static; 52 53 /* Entry */ 54 55 dcl sub_err_ entry () options (variable); 56 57 fast_lock_data_ptr = lm_data_$fast_lock_data_ptr; 58 lock_list_meters_ptr = lm_data_$lock_list_meters_ptr; 59 p_code = 0; 60 61 if p_fast_lock_data_ptr ^= null () then do; 62 call CHECK_VERSION (FAST_LOCK_DATA_VERSION_1, fast_lock_data.version, "fast_lock_data"); 63 p_fast_lock_data_ptr = pointer (p_fast_lock_data_ptr, rel (fast_lock_data_ptr)); 64 p_fast_lock_data_ptr -> fast_lock_data_template = fast_lock_data_ptr -> fast_lock_data_template; 65 end; 66 67 if dm_system_data_$meter_fast_locks then do; 68 call CHECK_VERSION (LOCK_LIST_METERS_VERSION_1, lock_list_meters.version, "lock_list_meters"); 69 if p_lock_list_meters_ptr ^= null () then p_lock_list_meters_ptr -> lock_list_meters = lock_list_meters; 70 end; 71 else if ^dm_system_data_$meter_fast_locks & ^(p_lock_list_meters_ptr = null) 72 then p_code = error_table_$action_not_performed; 73 74 return; 75 76 CHECK_VERSION: 77 proc (cv_p_expected_version, cv_p_received_version, cv_p_structure_name); 78 79 dcl cv_p_expected_version char (8) aligned parameter; 80 dcl cv_p_received_version char (8) aligned parameter; 81 dcl cv_p_structure_name char (32) aligned parameter; 82 83 if cv_p_expected_version ^= cv_p_received_version 84 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null (), 0, 85 "^/Expected version ^a of the ^a structure." || "^/Received version ^a instead.", cv_p_expected_version, 86 cv_p_structure_name, cv_p_received_version); 87 end CHECK_VERSION; 88 1 1 /* START OF: dm_lock_list_strucs_.incl.pl1 June 1982 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* DESCRIPTION: 1 4* fast_lock_data.free_list_head is lock_list_head. fast_lock_data.list is the 1 5* first two words of lock_list_block. Other lock_list_block's are threaded 1 6* to make a list. block_data is large enough to contain 1 7* fast_lock_wakeup_block (largest fast lock block type). 1 8**/ 1 9 1 10 /* HISTORY: 1 11*Written by John Bongiovanni, 06/15/82. 1 12*Modified: 1 13*10/12/84 by Stanford S. Cox: Added version constants. 1 14*11/14/84 by Stanford S. Cox: Removed lock_list_head.version as fast_lock_data 1 15* has a version. 1 16**/ 1 17 1 18 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */ 1 19 dcl lock_list_head_ptr ptr; 1 20 dcl lock_list_block_ptr ptr; 1 21 dcl lock_list_meters_ptr ptr; 1 22 1 23 dcl lock_list_block_words fixed bin; 1 24 1 25 dcl LOCK_LIST_METERS_VERSION_1 char (8) aligned init ("lklsmt 1") int static options (constant); 1 26 1 27 dcl 1 lock_list_head aligned based (lock_list_head_ptr), 1 28 2 firstp bit (18) unal, 1 29 2 mbz bit (18) unal; 1 30 1 31 dcl 1 lock_list_block aligned based (lock_list_block_ptr), 1 32 2 nextp bit (18) unal, 1 33 2 mbz bit (18) unal, 1 34 2 block_words fixed bin (17) unal, 1 35 2 pad bit (18) unal, 1 36 2 block_data (lock_list_block_words refer (lock_list_block.block_words)) bit (36) aligned; 1 37 1 38 dcl 1 lock_list_meters aligned based (lock_list_meters_ptr), 1 39 2 version char (8) aligned, 1 40 2 thrdout_calls fixed bin (35), 1 41 2 thrdin_calls fixed bin (35), 1 42 2 thrdout_steps fixed bin (35), 1 43 2 thrdin_steps fixed bin (35); 1 44 1 45 1 46 /* END OF: dm_lock_list_strucs_.incl.pl1 * * * * * * * * * * * * * * * * */ 89 90 2 1 /* START OF: dm_fast_lock_strucs.incl.pl1 ... June 1982 * * * * * * * * * * * * * * * * */ 2 2 2 3 /* DESCRIPTION: 2 4* There is a fast_lock_block per segment to be locked. There is a 2 5* fast_lock_wakeup_block per waiter on the lock. The fast*block's are 2 6* taken from the fast_lock_data.list, which is a list of lock_list_block's. 2 7**/ 2 8 2 9 /* HISTORY: 2 10*Written by J. Bongiovanni, 06/15/82. 2 11*Modified: 2 12*10/12/84 by Stanford S. Cox: Added version constants. 2 13*11/14/84 by Stanford S. Cox: Chg to make fast_lock_data.free_list_head 2 14* like lock_list_head. 2 15**/ 2 16 2 17 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */ 2 18 dcl fast_lock_ptr ptr; 2 19 dcl fast_lock_block_ptr ptr; 2 20 dcl fast_lock_wakeup_block_ptr ptr; 2 21 dcl fast_lock_data_ptr ptr; 2 22 2 23 dcl FAST_LOCK_DATA_VERSION_1 char (8) aligned init ("fastlk 1") int static options (constant); 2 24 2 25 dcl 1 fast_lock aligned based (fast_lock_ptr), 2 26 /* A fast lock */ 2 27 2 lock_word bit (36) aligned, /* "0"b (unlocked) or processid (locked) */ 2 28 2 notify_sw bit (1) unal, /* ON => notify on unlock */ 2 29 2 pad bit (17) unal, 2 30 2 offset bit (18) unal; /* Offset of block in fast_lock_data */ 2 31 2 32 2 33 dcl 1 fast_lock_block aligned based (fast_lock_block_ptr), 2 34 /* Per-lock info, inner-ring */ 2 35 2 uid bit (36) aligned, /* Unique ID of segment */ 2 36 2 offset bit (18) unal, /* Offset of lock in segment */ 2 37 2 pad bit (18) unal, 2 38 2 list_head bit (18) unal, /* Thread pointer for wakeups */ 2 39 2 mbz bit (18) unal, 2 40 2 pad1 bit (36) aligned; 2 41 2 42 2 43 dcl 1 fast_lock_wakeup_block aligned based (fast_lock_wakeup_block_ptr), 2 44 /* Notify info */ 2 45 2 event_channel fixed bin (71), 2 46 2 processid bit (36) aligned, 2 47 2 message char (4); 2 48 2 49 dcl 1 fast_lock_data aligned based (fast_lock_data_ptr), 2 50 2 version char (8), 2 51 2 size fixed bin, 2 52 2 n_list_entries fixed bin, 2 53 2 free_list_head aligned like lock_list_head, 2 54 2 list fixed bin (71) aligned; 2 55 2 56 /* END OF: dm_fast_lock_strucs.incl.pl1 * * * * * * * * * * * * * * * * */ 91 92 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 */ 93 94 95 end lm_copy_fast_data_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/85 0804.0 lm_copy_fast_data_.pl1 >spec>on>41-21>lm_copy_fast_data_.pl1 89 1 01/07/85 0859.2 dm_lock_list_strucs.incl.pl1 >ldd>include>dm_lock_list_strucs.incl.pl1 91 2 01/07/85 0858.7 dm_fast_lock_strucs.incl.pl1 >ldd>include>dm_fast_lock_strucs.incl.pl1 93 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 83* FAST_LOCK_DATA_VERSION_1 000002 constant char(8) initial dcl 2-23 set ref 62* LOCK_LIST_METERS_VERSION_1 000004 constant char(8) initial dcl 1-25 set ref 68* cv_p_expected_version parameter char(8) dcl 79 set ref 76 83 83* cv_p_received_version parameter char(8) dcl 80 set ref 76 83 83* cv_p_structure_name parameter char(32) dcl 81 set ref 76 83* dm_system_data_$meter_fast_locks 000014 external static bit(1) dcl 48 ref 67 71 error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 44 ref 71 error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 44 set ref 83* fast_lock_data based structure level 1 dcl 2-49 fast_lock_data_ptr 000102 automatic pointer dcl 2-21 set ref 57* 62 63 64 64 fast_lock_data_template based bit(36) array dcl 36 set ref 64* 64 lm_data_$fast_lock_data_ptr 000016 external static pointer dcl 50 ref 57 lm_data_$lock_list_meters_ptr 000020 external static pointer dcl 51 ref 58 lock_list_head based structure level 1 dcl 1-27 lock_list_meters based structure level 1 dcl 1-38 set ref 69* 69 lock_list_meters_ptr 000100 automatic pointer dcl 1-21 set ref 58* 68 69 myname 000006 constant char(18) initial unaligned dcl 40 set ref 83* p_code parameter fixed bin(35,0) dcl 32 set ref 25 59* 71* p_fast_lock_data_ptr parameter pointer dcl 30 set ref 25 61 63* 63 64 p_lock_list_meters_ptr parameter pointer dcl 31 ref 25 69 69 71 size 2 based fixed bin(17,0) level 2 dcl 2-49 ref 64 sub_err_ 000022 constant entry external dcl 55 ref 83 version based char(8) level 2 in structure "lock_list_meters" dcl 1-38 in procedure "lm_copy_fast_data_" set ref 68* version based char(8) level 2 in structure "fast_lock_data" dcl 2-49 in procedure "lm_copy_fast_data_" set ref 62* 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 fast_lock based structure level 1 dcl 2-25 fast_lock_block based structure level 1 dcl 2-33 fast_lock_block_ptr automatic pointer dcl 2-19 fast_lock_ptr automatic pointer dcl 2-18 fast_lock_wakeup_block based structure level 1 dcl 2-43 fast_lock_wakeup_block_ptr automatic pointer dcl 2-20 lock_list_block based structure level 1 dcl 1-31 lock_list_block_ptr automatic pointer dcl 1-20 lock_list_block_words automatic fixed bin(17,0) dcl 1-23 lock_list_head_ptr automatic pointer dcl 1-19 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000203 constant entry internal dcl 76 ref 62 68 lm_copy_fast_data_ 000064 constant entry external dcl 25 NAMES DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 61 69 71 83 83 pointer builtin function ref 63 rel builtin function ref 63 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 420 444 275 430 Length 674 275 24 213 122 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lm_copy_fast_data_ 152 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure lm_copy_fast_data_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lm_copy_fast_data_ 000100 lock_list_meters_ptr lm_copy_fast_data_ 000102 fast_lock_data_ptr lm_copy_fast_data_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_system_data_$meter_fast_locks error_table_$action_not_performed error_table_$unimplemented_version lm_data_$fast_lock_data_ptr lm_data_$lock_list_meters_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000060 57 000071 58 000074 59 000077 61 000101 62 000105 63 000122 64 000130 67 000136 68 000141 69 000156 70 000171 71 000172 74 000202 76 000203 83 000205 87 000274 ----------------------------------------------------------- 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