COMPILATION LISTING OF SEGMENT amu_replace_trans_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 07/28/87 0935.6 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-01-16,Parisek), approve(87-07-09,MCR7746), 12* audit(87-07-17,Fawcett), install(87-07-28,MR12.1-1049): 13* Turn on the "replaced" flag in the translation_table when segment is 14* replaced. 15* END HISTORY COMMENTS */ 16 17 18 amu_replace_trans_: proc (P_amu_info_ptr, P_dir_name, P_entry_name, P_segno, P_code); 19 20 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend,ifthendo,ifthen,^thendo */ 21 22 dcl P_amu_info_ptr ptr; 23 dcl P_dir_name char (168); 24 dcl P_entry_name char (32); 25 dcl P_segno fixed bin; 26 dcl P_code fixed bin (35); 27 28 dcl 1 trans_space like translation; 29 dcl bit_count fixed bin (24); 30 dcl seg_ptr ptr; 31 dcl changed_idx bit (1); 32 dcl code fixed bin (35); 33 dcl old_proc_idx fixed bin; 34 dcl segno fixed bin; 35 dcl amu_$fdump_mpt_change_idx entry (ptr, fixed bin); 36 dcl amu_$fdump_mpt_revert_idx entry (ptr); 37 dcl amu_$return_val_per_process entry (ptr, fixed bin) returns (bit (1)); 38 dcl amu_$translate_force_add entry (ptr, ptr, fixed bin, fixed bin (35)); 39 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)); 40 41 dcl (addr, divide, mod, null) builtin; 42 43 segno = P_segno; 44 changed_idx = ""b; 45 amu_info_ptr = P_amu_info_ptr; 46 translation_ptr = addr (trans_space); 47 old_proc_idx = -1; 48 if ^amu_$return_val_per_process (amu_info_ptr, segno) then do; 49 old_proc_idx = amu_info.process_idx; 50 if amu_info.type ^= SAVED_PROC_TYPE then call amu_$fdump_mpt_change_idx (amu_info_ptr, 0); 51 changed_idx = "1"b; 52 end; 53 54 seg_ptr = null (); 55 call hcs_$initiate_count (P_dir_name, P_entry_name, "", bit_count, 1, seg_ptr, code); 56 if seg_ptr = null () then do; 57 P_code = code; 58 return; 59 end; 60 translation.segno = P_segno; 61 translation.flags.two_part = "0"b; 62 translation.flags.in_dump = "0"b; 63 translation.flags.in_temp_seg = "0"b; 64 translation.flags.in_perm_seg = "1"b; 65 translation.part1.ptr = seg_ptr; 66 translation.part1.lth = divide (bit_count, 36, 19); 67 if mod (bit_count, 36) > 0 then translation.part1.lth = translation.part1.lth + 1; 68 translation.part2.ptr = null (); 69 translation.part2.lth = 0; 70 translation.flags.replaced = "1"b; 71 call amu_$translate_force_add (amu_info_ptr, translation_ptr, P_segno, code); 72 if changed_idx then call amu_$fdump_mpt_revert_idx (amu_info_ptr); 73 if code ^= 0 then do; 74 P_code = code; 75 return; 76 77 end; 78 P_code = 0; 79 return; 80 1 1 /* BEGIN INCLUDE FILE amu_translation.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(87-01-16,Parisek), approve(87-07-16,MCR7746), 1 7* audit(87-07-16,Fawcett), install(87-07-28,MR12.1-1049): 1 8* Added the "replaced" field to record whether a segment was replaced by 1 9* another segment via the "replace" request. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 dcl 1 translation_table aligned based (amu_info.translation_table_ptr), 1 14 2 n_entries fixed bin, 1 15 2 max_entries fixed bin, 1 16 1 17 2 valid_array aligned, /* one bit for each valid segno */ 1 18 3 valid (0 : 4095) bit (1) unaligned, 1 19 2 used_array aligned, /* one bit for each existing translation */ 1 20 3 used (0 : 4095) bit (1) unaligned, 1 21 1 22 2 array (alloc_translation_table_max_entries refer (translation_table.max_entries)) like translation; 1 23 1 24 dcl 1 translation aligned based (translation_ptr), /* a single translation */ 1 25 2 segno fixed bin (18) unsigned unaligned, /* foreign segno for this translation */ 1 26 2 flags unaligned, 1 27 3 two_part bit (1) unaligned, /* segment is in two pieces -- from an FDUMP */ 1 28 3 in_dump bit (1) unaligned, /* segment is part of an FDUMP image */ 1 29 3 in_temp_seg bit (1) unaligned, /* segment is a copy at the base of a temp segment */ 1 30 3 in_perm_seg bit (1) unaligned, /* segment is in the file system */ 1 31 3 in_dp_dir bit (1) unaligned, 1 32 3 replaced bit (1) unaligned, 1 33 3 pad bit (12) unaligned, 1 34 2 part1, /* pointer to first (possibly only) part of segment */ 1 35 3 ptr pointer unaligned, 1 36 3 lth fixed bin (19), 1 37 2 part2 like translation.part1; 1 38 1 39 dcl alloc_translation_table_max_entries fixed bin; 1 40 dcl translation_ptr pointer; 1 41 1 42 /* END INCLUDE FILE amu_translation.incl.pl1 */ 81 82 2 1 /* BEGIN INCLUDE FILE amu_info.incl.pl1 */ 2 2 2 3 dcl 1 amu_info aligned based (amu_info_ptr), 2 4 2 version char (8) aligned, /* AMU_INFO_VERSION */ 2 5 2 flags aligned, 2 6 3 early_dump bit(1) unal, 2 7 3 pad bit(35) unal, 2 8 2 type fixed bin unal, /* One of the types below */ 2 9 2 time_created fixed bin (71) aligned, /* time created -- for debugging purposes */ 2 10 2 chain, /* a chain of all the amu_info's which exist */ 2 11 3 prev pointer unaligned, 2 12 3 next pointer unaligned, 2 13 2 14 2 area_ptr pointer, /* pointer to area used for allocating things */ 2 15 2 16 2 translation_table_ptr pointer, /* pointer to address map -- always present */ 2 17 /* SEE: amu_translation.incl.pl1 */ 2 18 2 fdump_info_ptr pointer, 2 19 /* pointer to FDUMP info, present if looking at an FDUMP */ 2 20 /* SEE: amu_fdump_info.incl.pl1 */ 2 21 /* old_uid_table pointer if looking at a SAVED PROC. */ 2 22 /* See: amu_old_uid_table */ 2 23 2 24 2 25 2 hardcore_info_ptr pointer, /* pointer to hardcore information -- always present */ 2 26 /* SEE: amu_hardcore_info.incl.pl1 */ 2 27 2 copy_chain pointer, /* pointer to info about segment copies */ 2 28 /* SEE: amu_copy_info.incl.pl1 */ 2 29 2 process_info_ptr pointer, /* pointer to process info for this translation */ 2 30 /* SEE: amu_process_info.incl.pl1 */ 2 31 2 process_idx fixed bin, /* index of process in translation-specifc process table */ 2 32 2 33 2 proc_idx_hold fixed bin, /* a place to keep the index when a changing to another proc */ 2 34 2 35 2 error_info, /* various info about how amu_error_ is to behave */ 2 36 3 error_flags aligned, 2 37 4 handler_exists bit (1) unaligned, /* set to indicate existence of an amu_error handler */ 2 38 4 in_subsystem bit (1) unaligned, /* This amu_info belongs to an ssu_ maintained subsystem */ 2 39 4 pad bit (34) unaligned, 2 40 3 sci_ptr pointer, /* sci_ptr for subsystem, if in_subsystem = "1"b */ 2 41 2 definitions_info_ptr ptr; 2 42 2 43 dcl amu_area area based (amu_info.area_ptr); 2 44 2 45 dcl amu_info_ptr pointer; 2 46 2 47 dcl (FDUMP_TYPE init (1037), /* the various legitimate types of amu_info's */ 2 48 FDUMP_PROCESS_TYPE init (1038), 2 49 ONLINE_TYPE init (1039), 2 50 ONLINE_PROCESS_TYPE init (1040), 2 51 NETWORK_FDUMP_TYPE init (1041), 2 52 NETWORK_ONLINE_TYPE init (1042), 2 53 SAVED_PROC_TYPE init (1043), 2 54 INDIRECT_TYPE init (1044)) fixed bin internal static options (constant); 2 55 2 56 dcl AMU_INFO_VERSION_1 char (8) internal static options (constant) init ("amu_v1"); 2 57 dcl AMU_INFO_VERSION char (8) internal static options (constant) init ("amu_v1"); 2 58 dcl AMU_INFO_VERSION_2 char (8) internal static options (constant) init ("amu_v2"); 2 59 2 60 dcl PDIR_SUFFIX char(4) init("pdir") int static options(constant); 2 61 2 62 /* END INCLUDE FILE amu_info.incl.pl1 */ 83 84 end amu_replace_trans_; 85 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/28/87 0924.4 amu_replace_trans_.pl1 >spec>install>MR12.1-1049>amu_replace_trans_.pl1 81 1 07/28/87 0927.3 amu_translation.incl.pl1 >spec>install>MR12.1-1049>amu_translation.incl.pl1 83 2 11/20/84 0856.1 amu_info.incl.pl1 >ldd>include>amu_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. P_amu_info_ptr parameter pointer dcl 22 ref 18 45 P_code parameter fixed bin(35,0) dcl 26 set ref 18 57* 74* 78* P_dir_name parameter char(168) unaligned dcl 23 set ref 18 55* P_entry_name parameter char(32) unaligned dcl 24 set ref 18 55* P_segno parameter fixed bin(17,0) dcl 25 set ref 18 43 60 71* SAVED_PROC_TYPE constant fixed bin(17,0) initial dcl 2-47 ref 50 addr builtin function dcl 41 ref 46 amu_$fdump_mpt_change_idx 000010 constant entry external dcl 35 ref 50 amu_$fdump_mpt_revert_idx 000012 constant entry external dcl 36 ref 72 amu_$return_val_per_process 000014 constant entry external dcl 37 ref 48 amu_$translate_force_add 000016 constant entry external dcl 38 ref 71 amu_info based structure level 1 dcl 2-3 amu_info_ptr 000116 automatic pointer dcl 2-45 set ref 45* 48* 49 50 50* 71* 72* bit_count 000105 automatic fixed bin(24,0) dcl 29 set ref 55* 66 67 changed_idx 000110 automatic bit(1) unaligned dcl 31 set ref 44* 51* 72 code 000111 automatic fixed bin(35,0) dcl 32 set ref 55* 57 71* 73 74 divide builtin function dcl 41 ref 66 flags 0(18) based structure level 2 packed unaligned dcl 1-24 hcs_$initiate_count 000020 constant entry external dcl 39 ref 55 in_dump 0(19) based bit(1) level 3 packed unaligned dcl 1-24 set ref 62* in_perm_seg 0(21) based bit(1) level 3 packed unaligned dcl 1-24 set ref 64* in_temp_seg 0(20) based bit(1) level 3 packed unaligned dcl 1-24 set ref 63* lth 2 based fixed bin(19,0) level 3 in structure "translation" dcl 1-24 in procedure "amu_replace_trans_" set ref 66* 67* 67 lth 4 based fixed bin(19,0) level 3 in structure "translation" dcl 1-24 in procedure "amu_replace_trans_" set ref 69* mod builtin function dcl 41 ref 67 null builtin function dcl 41 ref 54 56 68 old_proc_idx 000112 automatic fixed bin(17,0) dcl 33 set ref 47* 49* part1 1 000100 automatic structure level 2 in structure "trans_space" unaligned dcl 28 in procedure "amu_replace_trans_" part1 1 based structure level 2 in structure "translation" dcl 1-24 in procedure "amu_replace_trans_" part1 347 based structure array level 3 in structure "translation_table" dcl 1-13 in procedure "amu_replace_trans_" part2 3 based structure level 2 dcl 1-24 process_idx 24 based fixed bin(17,0) level 2 dcl 2-3 ref 49 ptr 3 based pointer level 3 in structure "translation" packed unaligned dcl 1-24 in procedure "amu_replace_trans_" set ref 68* ptr 1 based pointer level 3 in structure "translation" packed unaligned dcl 1-24 in procedure "amu_replace_trans_" set ref 65* replaced 0(23) based bit(1) level 3 packed unaligned dcl 1-24 set ref 70* seg_ptr 000106 automatic pointer dcl 30 set ref 54* 55* 56 65 segno based fixed bin(18,0) level 2 in structure "translation" packed unsigned unaligned dcl 1-24 in procedure "amu_replace_trans_" set ref 60* segno 000113 automatic fixed bin(17,0) dcl 34 in procedure "amu_replace_trans_" set ref 43* 48* trans_space 000100 automatic structure level 1 unaligned dcl 28 set ref 46 translation based structure level 1 dcl 1-24 translation_ptr 000114 automatic pointer dcl 1-40 set ref 46* 60 61 62 63 64 65 66 67 67 68 69 70 71* two_part 0(18) based bit(1) level 3 packed unaligned dcl 1-24 set ref 61* type 3 based fixed bin(17,0) level 2 packed unaligned dcl 2-3 ref 50 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AMU_INFO_VERSION internal static char(8) initial unaligned dcl 2-57 AMU_INFO_VERSION_1 internal static char(8) initial unaligned dcl 2-56 AMU_INFO_VERSION_2 internal static char(8) initial unaligned dcl 2-58 FDUMP_PROCESS_TYPE internal static fixed bin(17,0) initial dcl 2-47 FDUMP_TYPE internal static fixed bin(17,0) initial dcl 2-47 INDIRECT_TYPE internal static fixed bin(17,0) initial dcl 2-47 NETWORK_FDUMP_TYPE internal static fixed bin(17,0) initial dcl 2-47 NETWORK_ONLINE_TYPE internal static fixed bin(17,0) initial dcl 2-47 ONLINE_PROCESS_TYPE internal static fixed bin(17,0) initial dcl 2-47 ONLINE_TYPE internal static fixed bin(17,0) initial dcl 2-47 PDIR_SUFFIX internal static char(4) initial unaligned dcl 2-60 alloc_translation_table_max_entries automatic fixed bin(17,0) dcl 1-39 amu_area based area(1024) dcl 2-43 translation_table based structure level 1 dcl 1-13 NAME DECLARED BY EXPLICIT CONTEXT. amu_replace_trans_ 000021 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 364 406 257 374 Length 622 257 22 177 104 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME amu_replace_trans_ 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME amu_replace_trans_ 000100 trans_space amu_replace_trans_ 000105 bit_count amu_replace_trans_ 000106 seg_ptr amu_replace_trans_ 000110 changed_idx amu_replace_trans_ 000111 code amu_replace_trans_ 000112 old_proc_idx amu_replace_trans_ 000113 segno amu_replace_trans_ 000114 translation_ptr amu_replace_trans_ 000116 amu_info_ptr amu_replace_trans_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mdfx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. amu_$fdump_mpt_change_idx amu_$fdump_mpt_revert_idx amu_$return_val_per_process amu_$translate_force_add hcs_$initiate_count NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000014 43 000026 44 000031 45 000032 46 000035 47 000037 48 000041 49 000056 50 000061 51 000077 54 000101 55 000103 56 000147 57 000153 58 000156 60 000157 61 000164 62 000166 63 000170 64 000172 65 000174 66 000177 67 000202 68 000207 69 000211 70 000212 71 000214 72 000231 73 000242 74 000244 75 000246 78 000247 79 000251 ----------------------------------------------------------- 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