COMPILATION LISTING OF SEGMENT rcp_reconfigure_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1114.14_Tue_mdt Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 rcp_reconfigure_: procedure; 14 15 /* This program implements the rcp_sys_$delete_device & rcp_sys_$add_device entries. 16* * Created on 12/09/74 by Bill Silver. 17* * Changed on 04/20/76 by Bill Silver for storage system disks. 18* * Modified 6/79 by Michael R. Jordan for MR7.0R. 19* * Modified 841009 to interface to rcp_control_ instead of 20* * rcp_initializer_... - M. M. Pozzo 21* * Modified 841121 to remove initializer variable bug introduced 22* * during auditing (operation set to "" at COMMON)... -M. M. Pozzo 23* * 24* * This program contains the following entry points: 25* * 1. delete_device - Delete a device from the system. 26* * 2. add_device - Add a deleted device back to the system. 27**/ 28 29 /* ARGUMENT DATA */ 30 31 dcl arg_device_name char (*); /* (I) Device name. */ 32 dcl arg_ecode fixed bin (35); /* (O) error_table_ code. */ 33 34 35 /* AUTOMATIC DATA */ 36 37 dcl device_offset bit (18) aligned; /* needed by rcp_control_ */ 38 dcl process_id bit (36) aligned; /* needed by rcp_control */ 39 dcl ssys_flag bit (1) aligned; /* ON => storage system disk. */ 40 dcl volume_offset bit (18) aligned; /* needed by rcp_control_ */ 41 42 dcl device_name char (32); /* Device name. */ 43 dcl operation bit (36) aligned; /* Operation requested of rcp_control_ */ 44 45 dcl caller_level fixed bin; /* Caller's validation level. */ 46 dcl ecode fixed bin (35); 47 dcl error_count fixed bin (17); /* Errors on device attachment */ 48 49 /* EXTERNAL ENTRIES CALLED */ 50 51 dcl cleanup condition; /* Used to set up cleanup handler. */ 52 53 dcl (addr, substr) builtin; 54 55 dcl cu_$level_get entry (fixed bin); 56 dcl cu_$level_set entry (fixed bin); 57 dcl get_ring_ entry returns (fixed bin); 58 dcl mdx$add_del entry (char (*), bit (1) aligned, bit (1) aligned, fixed bin (35)); 59 dcl rcp_control_ entry (bit (36) aligned, bit (18) aligned, bit (18) aligned, char (*), 60 fixed bin (17), bit (36) aligned, fixed bin (35)); 61 62 dcl access_operations_$rcp_add_device ext static bit (36) aligned; 63 dcl access_operations_$rcp_delete_device ext static bit (36) aligned; 64 65 /* These two entriy points are called to delete or add a device. 66* * A deleted device cannot be assigned to any process. 67**/ 68 69 70 delete_device: entry (arg_device_name, arg_ecode); 71 72 operation = access_operations_$rcp_delete_device; /* Delete this device. */ 73 goto COMMON; 74 75 76 add_device: entry (arg_device_name, arg_ecode); 77 78 operation = access_operations_$rcp_add_device; /* Add this device. */ 79 80 81 COMMON: 82 83 device_offset = ""b; 84 process_id = ""b; 85 volume_offset = ""b; 86 device_name = ""; 87 error_count = 0; 88 89 ecode = 0; 90 call cu_$level_get (caller_level); 91 on cleanup begin; 92 call cu_$level_set (caller_level); 93 end; 94 call cu_$level_set (get_ring_ ()); 95 96 device_name = arg_device_name; /* Get argument. */ 97 98 if substr (device_name, 1, 3) = "dsk" /* Is this a DISK type device? */ 99 then do; /* Yes, see if it belongs to the storage system. */ 100 call mdx$add_del (device_name, (operation = access_operations_$rcp_add_device), ssys_flag, ecode); 101 if ssys_flag then goto RETURN; /* Is storage system then all done. */ 102 end; 103 104 call rcp_control_ (operation, volume_offset, device_offset, 105 device_name, error_count, process_id, ecode); 106 107 108 RETURN: 109 call cu_$level_set (caller_level); 110 arg_ecode = ecode; 111 return; 112 113 end rcp_reconfigure_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1114.1 rcp_reconfigure_.pl1 >udd>sm>ds>w>ml>rcp_reconfigure_.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. access_operations_$rcp_add_device 000022 external static bit(36) dcl 62 ref 78 100 access_operations_$rcp_delete_device 000024 external static bit(36) dcl 63 ref 72 arg_device_name parameter char packed unaligned dcl 31 ref 70 76 96 arg_ecode parameter fixed bin(35,0) dcl 32 set ref 70 76 110* caller_level 000115 automatic fixed bin(17,0) dcl 45 set ref 90* 92* 108* cleanup 000120 stack reference condition dcl 51 ref 91 cu_$level_get 000010 constant entry external dcl 55 ref 90 cu_$level_set 000012 constant entry external dcl 56 ref 92 94 108 device_name 000104 automatic char(32) packed unaligned dcl 42 set ref 86* 96* 98 100* 104* device_offset 000100 automatic bit(18) dcl 37 set ref 81* 104* ecode 000116 automatic fixed bin(35,0) dcl 46 set ref 89* 100* 104* 110 error_count 000117 automatic fixed bin(17,0) dcl 47 set ref 87* 104* get_ring_ 000014 constant entry external dcl 57 ref 94 94 mdx$add_del 000016 constant entry external dcl 58 ref 100 operation 000114 automatic bit(36) dcl 43 set ref 72* 78* 100 104* process_id 000101 automatic bit(36) dcl 38 set ref 84* 104* rcp_control_ 000020 constant entry external dcl 59 ref 104 ssys_flag 000102 automatic bit(1) dcl 39 set ref 100* 101 substr builtin function dcl 53 ref 98 volume_offset 000103 automatic bit(18) dcl 40 set ref 85* 104* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 53 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000063 constant label dcl 81 ref 73 RETURN 000247 constant label dcl 108 ref 101 add_device 000045 constant entry external dcl 76 delete_device 000025 constant entry external dcl 70 rcp_reconfigure_ 000013 constant entry external dcl 13 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 420 446 262 430 Length 632 262 26 147 135 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_reconfigure_ 140 external procedure is an external procedure. on unit on line 91 68 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_reconfigure_ 000100 device_offset rcp_reconfigure_ 000101 process_id rcp_reconfigure_ 000102 ssys_flag rcp_reconfigure_ 000103 volume_offset rcp_reconfigure_ 000104 device_name rcp_reconfigure_ 000114 operation rcp_reconfigure_ 000115 caller_level rcp_reconfigure_ 000116 ecode rcp_reconfigure_ 000117 error_count rcp_reconfigure_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return_mac enable_op ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$level_get cu_$level_set get_ring_ mdx$add_del rcp_control_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$rcp_add_device access_operations_$rcp_delete_device CONSTANTS 000000 aa 514000000022 000001 aa 514000000044 000002 aa 514000000001 000003 aa 526000000040 000004 aa 144 163 153 000 dsk 000005 aa 404000000021 000006 aa 404000000043 000007 aa 526077777777 000010 aa 143 154 145 141 clea 000011 aa 156 165 160 000 nup BEGIN PROCEDURE rcp_reconfigure_ ENTRY TO rcp_reconfigure_ STATEMENT 1 ON LINE 13 rcp_reconfigure_: procedure; 000012 da 000106200000 000013 aa 000220 6270 00 eax7 144 000014 aa 7 00034 3521 20 epp2 pr7|28,* 000015 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000016 aa 000000000000 000017 aa 000000000000 STATEMENT 1 ON LINE 70 delete_device: entry (arg_device_name, arg_ecode); 000020 aa 000020 7100 04 tra 16,ic 000040 ENTRY TO delete_device STATEMENT 1 ON LINE 70 delete_device: entry (arg_device_name, arg_ecode); 000021 at 000002000007 000022 ta 000006000000 000023 ta 000021000000 000024 da 000115300000 000025 aa 000220 6270 00 eax7 144 000026 aa 7 00034 3521 20 epp2 pr7|28,* 000027 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000030 aa 000004000000 000031 aa 000000000000 000032 aa 6 00042 3735 20 epp7 pr6|34,* 000033 aa 7 00000 2361 20 ldq pr7|0,* 000034 aa 000002 6040 04 tmi 2,ic 000036 000035 aa 777777 3760 07 anq 262143,dl 000036 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000037 aa 6 00126 7561 00 stq pr6|86 STATEMENT 1 ON LINE 72 operation = access_operations_$rcp_delete_device; 000040 la 4 00024 2351 20 lda pr4|20,* access_operations_$rcp_delete_device 000041 aa 6 00114 7551 00 sta pr6|76 operation STATEMENT 1 ON LINE 73 goto COMMON; 000042 aa 000021 7100 04 tra 17,ic 000063 ENTRY TO add_device STATEMENT 1 ON LINE 76 add_device: entry (arg_device_name, arg_ecode); 000043 ta 000021000000 000044 da 000123300000 000045 aa 000220 6270 00 eax7 144 000046 aa 7 00034 3521 20 epp2 pr7|28,* 000047 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000050 aa 000004000000 000051 aa 000000000000 000052 aa 6 00042 3735 20 epp7 pr6|34,* 000053 aa 7 00000 2361 20 ldq pr7|0,* 000054 aa 000002 6040 04 tmi 2,ic 000056 000055 aa 777777 3760 07 anq 262143,dl 000056 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000057 aa 6 00126 7561 00 stq pr6|86 STATEMENT 1 ON LINE 78 operation = access_operations_$rcp_add_device; 000060 aa 6 00044 3701 20 epp4 pr6|36,* 000061 la 4 00022 2351 20 lda pr4|18,* access_operations_$rcp_add_device 000062 aa 6 00114 7551 00 sta pr6|76 operation STATEMENT 1 ON LINE 81 COMMON: device_offset = ""b; 000063 aa 6 00100 4501 00 stz pr6|64 device_offset STATEMENT 1 ON LINE 84 process_id = ""b; 000064 aa 6 00101 4501 00 stz pr6|65 process_id STATEMENT 1 ON LINE 85 volume_offset = ""b; 000065 aa 6 00103 4501 00 stz pr6|67 volume_offset STATEMENT 1 ON LINE 86 device_name = ""; 000066 aa 040 100 100 400 mlr (),(pr),fill(040) 000067 aa 000000 00 0000 desc9a 0,0 000070 aa 6 00104 00 0040 desc9a pr6|68,32 device_name STATEMENT 1 ON LINE 87 error_count = 0; 000071 aa 6 00117 4501 00 stz pr6|79 error_count STATEMENT 1 ON LINE 89 ecode = 0; 000072 aa 6 00116 4501 00 stz pr6|78 ecode STATEMENT 1 ON LINE 90 call cu_$level_get (caller_level); 000073 aa 6 00115 3521 00 epp2 pr6|77 caller_level 000074 aa 6 00132 2521 00 spri2 pr6|90 000075 aa 6 00130 6211 00 eax1 pr6|88 000076 aa 004000 4310 07 fld 2048,dl 000077 la 4 00010 3521 20 epp2 pr4|8,* cu_$level_get 000100 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 91 on cleanup begin; 000101 aa 000007 7260 07 lxl6 7,dl 000102 aa 777706 3520 04 epp2 -58,ic 000010 = 143154145141 000103 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 000104 aa 000004 7100 04 tra 4,ic 000110 000105 aa 000120000000 000106 aa 000017 7100 04 tra 15,ic 000125 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 91 on cleanup begin; 000107 da 000131200000 000110 aa 000120 6270 00 eax7 80 000111 aa 7 00034 3521 20 epp2 pr7|28,* 000112 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000113 aa 000000000000 000114 aa 000000000000 STATEMENT 1 ON LINE 92 call cu_$level_set (caller_level); 000115 aa 6 00040 3735 20 epp7 pr6|32,* 000116 aa 7 00115 3521 00 epp2 pr7|77 caller_level 000117 aa 6 00102 2521 00 spri2 pr6|66 000120 aa 6 00100 6211 00 eax1 pr6|64 000121 aa 004000 4310 07 fld 2048,dl 000122 la 4 00012 3521 20 epp2 pr4|10,* cu_$level_set 000123 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 93 end; 000124 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION cleanup.1 STATEMENT 1 ON LINE 94 call cu_$level_set (get_ring_ ()); 000125 aa 6 00127 3521 00 epp2 pr6|87 000126 aa 6 00132 2521 00 spri2 pr6|90 000127 aa 6 00130 6211 00 eax1 pr6|88 000130 aa 004000 4310 07 fld 2048,dl 000131 aa 6 00044 3701 20 epp4 pr6|36,* 000132 la 4 00014 3521 20 epp2 pr4|12,* get_ring_ 000133 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 000134 aa 6 00127 3521 00 epp2 pr6|87 000135 aa 6 00132 2521 00 spri2 pr6|90 000136 aa 6 00130 6211 00 eax1 pr6|88 000137 aa 004000 4310 07 fld 2048,dl 000140 aa 6 00044 3701 20 epp4 pr6|36,* 000141 la 4 00012 3521 20 epp2 pr4|10,* cu_$level_set 000142 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 96 device_name = arg_device_name; 000143 aa 6 00032 3735 20 epp7 pr6|26,* 000144 aa 7 00002 3715 20 epp5 pr7|2,* 000145 aa 6 00126 2351 00 lda pr6|86 000146 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000147 aa 5 00000 00 0005 desc9a pr5|0,al arg_device_name 000150 aa 6 00104 00 0040 desc9a pr6|68,32 device_name STATEMENT 1 ON LINE 98 if substr (device_name, 1, 3) = "dsk" /* Is this a DISK type device? */ then do; 000151 aa 6 00104 2351 00 lda pr6|68 device_name 000152 aa 0 00066 3771 00 anaq pr0|54 = 777777777000 000000000000 000153 aa 777631 1150 04 cmpa -103,ic 000004 = 144163153000 000154 aa 000034 6010 04 tnz 28,ic 000210 STATEMENT 1 ON LINE 100 call mdx$add_del (device_name, (operation = access_operations_$rcp_add_device), ssys_flag, ecode); 000155 aa 6 00114 2351 00 lda pr6|76 operation 000156 aa 6 00044 3701 20 epp4 pr6|36,* 000157 la 4 00022 1151 20 cmpa pr4|18,* access_operations_$rcp_add_device 000160 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 000161 aa 6 00127 7551 00 sta pr6|87 000162 aa 6 00104 3521 00 epp2 pr6|68 device_name 000163 aa 6 00136 2521 00 spri2 pr6|94 000164 aa 6 00127 3521 00 epp2 pr6|87 000165 aa 6 00140 2521 00 spri2 pr6|96 000166 aa 6 00102 3521 00 epp2 pr6|66 ssys_flag 000167 aa 6 00142 2521 00 spri2 pr6|98 000170 aa 6 00116 3521 00 epp2 pr6|78 ecode 000171 aa 6 00144 2521 00 spri2 pr6|100 000172 aa 777611 3520 04 epp2 -119,ic 000003 = 526000000040 000173 aa 6 00146 2521 00 spri2 pr6|102 000174 aa 777606 3520 04 epp2 -122,ic 000002 = 514000000001 000175 aa 6 00150 2521 00 spri2 pr6|104 000176 aa 6 00152 2521 00 spri2 pr6|106 000177 aa 777607 3520 04 epp2 -121,ic 000006 = 404000000043 000200 aa 6 00154 2521 00 spri2 pr6|108 000201 aa 6 00134 6211 00 eax1 pr6|92 000202 aa 020000 4310 07 fld 8192,dl 000203 la 4 00016 3521 20 epp2 pr4|14,* mdx$add_del 000204 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 101 if ssys_flag then goto RETURN; 000205 aa 6 00102 2351 00 lda pr6|66 ssys_flag 000206 aa 400000 3150 03 cana 131072,du 000207 aa 000040 6010 04 tnz 32,ic 000247 STATEMENT 1 ON LINE 102 end; STATEMENT 1 ON LINE 104 call rcp_control_ (operation, volume_offset, device_offset, device_name, error_count, process_id, ecode); 000210 aa 6 00114 3521 00 epp2 pr6|76 operation 000211 aa 6 00160 2521 00 spri2 pr6|112 000212 aa 6 00103 3521 00 epp2 pr6|67 volume_offset 000213 aa 6 00162 2521 00 spri2 pr6|114 000214 aa 6 00100 3521 00 epp2 pr6|64 device_offset 000215 aa 6 00164 2521 00 spri2 pr6|116 000216 aa 6 00104 3521 00 epp2 pr6|68 device_name 000217 aa 6 00166 2521 00 spri2 pr6|118 000220 aa 6 00117 3521 00 epp2 pr6|79 error_count 000221 aa 6 00170 2521 00 spri2 pr6|120 000222 aa 6 00101 3521 00 epp2 pr6|65 process_id 000223 aa 6 00172 2521 00 spri2 pr6|122 000224 aa 6 00116 3521 00 epp2 pr6|78 ecode 000225 aa 6 00174 2521 00 spri2 pr6|124 000226 aa 777553 3520 04 epp2 -149,ic 000001 = 514000000044 000227 aa 6 00176 2521 00 spri2 pr6|126 000230 aa 6 00210 2521 00 spri2 pr6|136 000231 aa 777547 3520 04 epp2 -153,ic 000000 = 514000000022 000232 aa 6 00200 2521 00 spri2 pr6|128 000233 aa 6 00202 2521 00 spri2 pr6|130 000234 aa 777547 3520 04 epp2 -153,ic 000003 = 526000000040 000235 aa 6 00204 2521 00 spri2 pr6|132 000236 aa 777547 3520 04 epp2 -153,ic 000005 = 404000000021 000237 aa 6 00206 2521 00 spri2 pr6|134 000240 aa 777546 3520 04 epp2 -154,ic 000006 = 404000000043 000241 aa 6 00212 2521 00 spri2 pr6|138 000242 aa 6 00156 6211 00 eax1 pr6|110 000243 aa 034000 4310 07 fld 14336,dl 000244 aa 6 00044 3701 20 epp4 pr6|36,* 000245 la 4 00020 3521 20 epp2 pr4|16,* rcp_control_ 000246 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 108 RETURN: call cu_$level_set (caller_level); 000247 aa 6 00115 3521 00 epp2 pr6|77 caller_level 000250 aa 6 00132 2521 00 spri2 pr6|90 000251 aa 6 00130 6211 00 eax1 pr6|88 000252 aa 004000 4310 07 fld 2048,dl 000253 aa 6 00044 3701 20 epp4 pr6|36,* 000254 la 4 00012 3521 20 epp2 pr4|10,* cu_$level_set 000255 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 110 arg_ecode = ecode; 000256 aa 6 00116 2361 00 ldq pr6|78 ecode 000257 aa 6 00032 3735 20 epp7 pr6|26,* 000260 aa 7 00004 7561 20 stq pr7|4,* arg_ecode STATEMENT 1 ON LINE 111 return; 000261 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 113 end rcp_reconfigure_; END PROCEDURE rcp_reconfigure_ ----------------------------------------------------------- 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