COMPILATION LISTING OF SEGMENT rcp_operation_access Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0947.3 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-06-08,Rauschelbach), approve(87-06-26,MCR7713), 12* audit(87-07-08,Farley), install(87-07-15,MR12.1-1041): 13* A check for access when changing potential attributes was added. A fix to 14* make the clear_resource command work was added. 15* END HISTORY COMMENTS */ 16 17 18 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 19 rcp_operation_access: 20 procedure (a_operation, a_resource_type, a_rm_on, a_effmode, a_error_code); 21 22 /* This program determines if the subject has enough access to 23* * the object to perform the requested RCP operation. 24* * Created 841109 by Maria M. Pozzo 25* * 26**/ 27 28 /* ARGUMENT DATA */ 29 30 dcl a_operation bit (36) aligned; /* (I) Requested RCP operation */ 31 dcl a_resource_type char (32); /* (I) Resource type for requested operation */ 32 dcl a_rm_on bit (1); /* (I) Resource Management enabled */ 33 dcl a_effmode bit (3); /* (I/O) Current effective mode of the subject to the object(I) - resultant mode (O) */ 34 dcl a_error_code fixed bin (35); /* (O) Error code */ 35 36 /* AUTOMATIC DATA */ 37 38 dcl is_volume bit (1); 39 dcl rm_on bit (1); /* Resource management enabled */ 40 dcl effmode bit (3); /* Subjects access to object depending on operation */ 41 dcl operation bit (36) aligned; 42 dcl base_op bit (36) aligned; 43 44 dcl resource_type char (32); /* Resource type */ 45 46 dcl error_code fixed bin (35); /* Internal error code */ 47 48 dcl operation_ptr ptr; 49 50 dcl 1 en_access_op like encoded_access_op based (operation_ptr) aligned; 51 52 dcl addr builtin; 53 54 /* EXTERNAL ENTRIES */ 55 56 dcl error_table_$insufficient_access 57 fixed bin (35) external; 58 dcl error_table_$unsupported_operation 59 fixed bin (35) external; 60 dcl access_operations_$rcp_deregister 61 bit (36) aligned external; 62 dcl access_operations_$rcp_release 63 bit (36) aligned external; 64 dcl access_operations_$rcp_reserve 65 bit (36) aligned external; 66 dcl access_operations_$rcp_preload 67 bit (36) aligned external; 68 dcl access_operations_$rcp_assign_read 69 bit (36) aligned external; 70 dcl access_operations_$rcp_assign_write 71 bit (36) aligned external; 72 dcl access_operations_$rcp_status 73 bit (36) aligned external; 74 dcl access_operations_$rcp_set 75 bit (36) aligned external; 76 dcl access_operations_$rcp_set_access 77 bit (36) aligned external; 78 dcl access_operations_$rcp_clear 79 bit (36) aligned external; 80 dcl access_operations_$rcp_delete_device 81 bit (36) aligned external; 82 dcl access_operations_$rcp_add_device 83 bit (36) aligned external; 84 85 dcl resource_info_$get_type 86 entry (char (*), bit (1), fixed bin (35)); 87 88 /* Copy input arguments */ 89 90 operation = a_operation; 91 base_op = basic_operation (operation); 92 addr (base_op) -> encoded_access_op.detailed_operation = 0; 93 operation_ptr = addr (operation); 94 resource_type = a_resource_type; 95 rm_on = a_rm_on; 96 effmode = a_effmode; 97 98 /* Initialize local variables */ 99 100 error_code = 0; 101 call resource_info_$get_type (resource_type, is_volume, error_code); 102 ops_ptr = addr (en_access_op.detailed_operation); 103 104 /* Is it a volume - most operations require R or RW to volumes */ 105 106 if is_volume then do; 107 108 /* Need at least R to reserve a volume. */ 109 /* Need R to assign a volume for reading, need R to preload a volume. */ 110 111 if base_op = access_operations_$rcp_reserve | base_op = access_operations_$rcp_assign_read 112 | base_op = access_operations_$rcp_preload then do; 113 call require_access (R_ACCESS); 114 goto MAIN_RETURN; 115 end; 116 117 /* Need at least RW to assign a volume for writing */ 118 119 else if base_op = access_operations_$rcp_assign_write then do; 120 call require_access (RW_ACCESS); 121 goto MAIN_RETURN; 122 end; 123 124 end; 125 126 else do; 127 128 /* Need at least RW to reserve a device */ 129 /* Need at least RW to assign a device */ 130 /* Need at least RW to preload a device */ 131 /* Need R to add or delete a device, this is a privileged operation. */ 132 133 if base_op = access_operations_$rcp_reserve | base_op = access_operations_$rcp_assign_write 134 | base_op = access_operations_$rcp_preload then do; 135 call require_access (RW_ACCESS); 136 goto MAIN_RETURN; 137 end; 138 else if base_op = access_operations_$rcp_delete_device | base_op = access_operations_$rcp_add_device 139 then do; 140 call require_access (R_ACCESS); 141 goto MAIN_RETURN; 142 end; 143 144 end; 145 146 /* The following operations are not resource-type specific. */ 147 148 /* SET_ACCESS */ 149 /* There are two kinds of set_access operations. */ 150 /* The first type is the setting of access_class_range or */ 151 /* the potential access_class_range. The call must have been */ 152 /* made through a privileged gate and have REW access. The second */ 153 /* type is setting the acs_path. The caller either 1) must be the */ 154 /* resource owner and have REW access, or 2) have made the call through */ 155 /* a privileged gate and have REW access. */ 156 157 if base_op = access_operations_$rcp_set_access then do; 158 if detailed_operation.potential_aim_range | detailed_operation.aim_range then 159 if detailed_operation.priv_gate_call then 160 call require_access (REW_ACCESS); 161 else error_code = error_table_$insufficient_access; 162 else if detailed_operation.acs_path then 163 if detailed_operation.owner | detailed_operation.priv_gate_call then 164 call require_access (REW_ACCESS); 165 else error_code = error_table_$insufficient_access; 166 end; 167 168 /* SET */ 169 /* There are several other types of Set operations. */ 170 /* Setting of the comment requires E and therefore REW access */ 171 /* Setting of release_lock, lock, location, or charge_type all */ 172 /* require the call be made through a privileged gate and the */ 173 /* user have E and therefore REW access. All other sets require */ 174 /* RW access. */ 175 176 177 else if base_op = access_operations_$rcp_set then do; 178 if detailed_operation.comment then 179 call require_access (REW_ACCESS); 180 else if detailed_operation.release_lock | detailed_operation.usage_lock | detailed_operation.location 181 | detailed_operation.charge_type | detailed_operation.potential_attributes then 182 if detailed_operation.priv_gate_call then 183 call require_access (REW_ACCESS); 184 else error_code = error_table_$insufficient_access; 185 else call require_access (RW_ACCESS); 186 end; 187 188 /* RELEASE */ 189 /* This operation requires 1) the user be the resource owner */ 190 /* and have REW access OR 2) the call be made through a privileged gate */ 191 /* and the user have REW. */ 192 193 else if base_op = access_operations_$rcp_release then do; 194 if detailed_operation.owner | detailed_operation.priv_gate_call then 195 call require_access (REW_ACCESS); 196 else error_code = error_table_$insufficient_access; 197 end; 198 199 /* DEREGISTER */ 200 /* Must have REW to deregister or clear a resource. These are privileged operations. */ 201 202 else if base_op = access_operations_$rcp_deregister | base_op = access_operations_$rcp_clear then 203 call require_access (REW_ACCESS); 204 205 /* STATUS */ 206 /* Only need R access to status a resource. */ 207 208 else if base_op = access_operations_$rcp_status then 209 call require_access (R_ACCESS); 210 211 else error_code = error_table_$unsupported_operation; 212 213 214 MAIN_RETURN: 215 if error_code ^= 0 then 216 a_effmode = "000"b; 217 a_error_code = error_code; 218 219 return; 220 221 require_access: 222 proc (mode); 223 224 dcl mode bit (3); 225 226 if (effmode & mode) = mode then 227 return; 228 else error_code = error_table_$insufficient_access; 229 return; 230 231 end require_access; 232 233 basic_operation: 234 proc (oper) returns (bit (36) aligned); 235 236 dcl oper bit (36) aligned; 237 dcl return_arg bit (36) aligned; 238 239 return_arg = oper; 240 addr (return_arg) -> encoded_access_op.detailed_operation = 0; 241 return (return_arg); 242 243 end basic_operation; 244 245 1 1 /* begin include file - access_audit_encoded_op.incl.pl1 */ 1 2 1 3 dcl 1 encoded_access_op aligned based, 1 4 2 audit_type unal, 1 5 3 object_type fixed bin (4) uns unal, 1 6 3 access_type fixed bin (2) uns unal, 1 7 2 operation_index fixed bin (12) uns unal, 1 8 2 detailed_operation fixed bin (18) uns unal; 1 9 1 10 /* object_type = Seg, Dir, Rcp, Admin, Special, Other 1 11* access_type = None, Modify_Acl, Modify, Read 1 12* operation_index is the index of this code in 1 13* access_operations_$oper_codes and the index of 1 14* the text descriptor in access_operations_$text_offest_table 1 15* (see access_operations_.incl.pl1) 1 16* detailed_operation is additional info inserted by the 1 17* caller of the subsystem performing the operation 1 18**/ 1 19 1 20 /* end include file - access_audit_encoded_op.incl.pl1 */ 246 247 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 248 249 3 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 3 2 /* BEGIN include rcp_ops.incl.pl1 */ 3 3 3 4 /* Written 02/27/85 by Chris Jones, Maria Pozzo */ 3 5 3 6 dcl ops_ptr ptr; 3 7 3 8 dcl 1 detailed_operation unaligned based (ops_ptr), 3 9 2 given, 3 10 3 potential_attributes 3 11 bit (1), 3 12 3 desired_attributes 3 13 bit (1), 3 14 3 potential_aim_range 3 15 bit (1), 3 16 3 aim_range bit (1), 3 17 3 owner bit (1), 3 18 3 acs_path bit (1), 3 19 3 location bit (1), 3 20 3 comment bit (1), 3 21 3 charge_type bit (1), 3 22 3 usage_lock bit (1), 3 23 3 release_lock bit (1), 3 24 3 user_alloc bit (1), 3 25 2 priv_gate_call bit (1), 3 26 2 search bit (1), 3 27 2 force bit (1), 3 28 2 process bit (1), 3 29 2 owner bit (1), 3 30 2 pad bit (1); 3 31 250 251 4 1 /* Begin include file ... rcp_resource_types.incl.pl1 4 2* * 4 3* * Created 3/79 by Michael R. Jordan for MR7.0R 4 4* * 4 5* * This include file defines the official RCP resource types. 4 6* * The array of names is indexed by the corresponding device type. 4 7* * MOD by RAF for MCA 4 8**/ 4 9 4 10 4 11 4 12 /****^ HISTORY COMMENTS: 4 13* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 4 14* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 4 15* Support of MCA. 4 16* END HISTORY COMMENTS */ 4 17 4 18 dcl DEVICE_TYPE (8) char (32) 4 19 internal static options (constant) 4 20 init ("tape_drive", "disk_drive", "console", "printer", "punch", "reader", "special", "mca"); 4 21 4 22 dcl NUM_QUALIFIERS (8) fixed bin /* Number of qualifiers for each device type. */ 4 23 internal static init (3, 0, 0, 2, 0, 0, 0, 0); 4 24 4 25 dcl VOLUME_TYPE (8) char (32) 4 26 internal static options (constant) 4 27 init ("tape_vol", "disk_vol", "", "", "", "", "", ""); 4 28 4 29 dcl TAPE_DRIVE_DTYPEX fixed bin static internal options (constant) init (1); 4 30 dcl DISK_DRIVE_DTYPEX fixed bin static internal options (constant) init (2); 4 31 dcl CONSOLE_DTYPEX fixed bin static internal options (constant) init (3); 4 32 dcl PRINTER_DTYPEX fixed bin static internal options (constant) init (4); 4 33 dcl PUNCH_DTYPEX fixed bin static internal options (constant) init (5); 4 34 dcl READER_DTYPEX fixed bin static internal options (constant) init (6); 4 35 dcl SPECIAL_DTYPEX fixed bin static internal options (constant) init (7); 4 36 dcl MCA_DTYPEX fixed bin static internal options (constant) init (8); 4 37 dcl TAPE_VOL_VTYPEX fixed bin static internal options (constant) init (1); 4 38 dcl DISK_VOL_VTYPEX fixed bin static internal options (constant) init (2); 4 39 4 40 4 41 /* End include file ... rcp_resource_types.incl.pl1 */ 252 253 254 end rcp_operation_access; 255 256 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0807.0 rcp_operation_access.pl1 >spec>install>1111>rcp_operation_access.pl1 246 1 01/30/85 1523.9 access_audit_encoded_op.incl.pl1 >ldd>include>access_audit_encoded_op.incl.pl1 248 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 250 3 03/15/85 0953.1 rcp_ops.incl.pl1 >ldd>include>rcp_ops.incl.pl1 252 4 03/27/86 1120.0 rcp_resource_types.incl.pl1 >ldd>include>rcp_resource_types.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. REW_ACCESS 000001 constant bit(3) initial packed unaligned dcl 2-11 set ref 158* 162* 178* 180* 194* 202* RW_ACCESS 000000 constant bit(3) initial packed unaligned dcl 2-11 set ref 120* 135* 185* R_ACCESS 000002 constant bit(3) initial packed unaligned dcl 2-11 set ref 113* 140* 208* a_effmode parameter bit(3) packed unaligned dcl 33 set ref 19 96 214* a_error_code parameter fixed bin(35,0) dcl 34 set ref 19 217* a_operation parameter bit(36) dcl 30 ref 19 90 a_resource_type parameter char(32) packed unaligned dcl 31 ref 19 94 a_rm_on parameter bit(1) packed unaligned dcl 32 ref 19 95 access_operations_$rcp_add_device 000042 external static bit(36) dcl 82 ref 138 access_operations_$rcp_assign_read 000024 external static bit(36) dcl 68 ref 111 access_operations_$rcp_assign_write 000026 external static bit(36) dcl 70 ref 119 133 access_operations_$rcp_clear 000036 external static bit(36) dcl 78 ref 202 access_operations_$rcp_delete_device 000040 external static bit(36) dcl 80 ref 138 access_operations_$rcp_deregister 000014 external static bit(36) dcl 60 ref 202 access_operations_$rcp_preload 000022 external static bit(36) dcl 66 ref 111 133 access_operations_$rcp_release 000016 external static bit(36) dcl 62 ref 193 access_operations_$rcp_reserve 000020 external static bit(36) dcl 64 ref 111 133 access_operations_$rcp_set 000032 external static bit(36) dcl 74 ref 177 access_operations_$rcp_set_access 000034 external static bit(36) dcl 76 ref 157 access_operations_$rcp_status 000030 external static bit(36) dcl 72 ref 208 acs_path 0(05) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 162 addr builtin function dcl 52 ref 92 93 102 240 aim_range 0(03) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 158 base_op 000104 automatic bit(36) dcl 42 set ref 91* 92 111 111 111 119 133 133 133 138 138 157 177 193 202 202 208 charge_type 0(08) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 180 comment 0(07) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 178 detailed_operation 0(18) based fixed bin(18,0) level 2 in structure "encoded_access_op" packed packed unsigned unaligned dcl 1-3 in procedure "rcp_operation_access" set ref 92* 240* detailed_operation based structure level 1 packed packed unaligned dcl 3-8 in procedure "rcp_operation_access" detailed_operation 0(18) based fixed bin(18,0) level 2 in structure "en_access_op" packed packed unsigned unaligned dcl 50 in procedure "rcp_operation_access" set ref 102 effmode 000102 automatic bit(3) packed unaligned dcl 40 set ref 96* 226 en_access_op based structure level 1 dcl 50 encoded_access_op based structure level 1 dcl 1-3 error_code 000115 automatic fixed bin(35,0) dcl 46 set ref 100* 101* 161* 165* 184* 196* 211* 214 217 228* error_table_$insufficient_access 000010 external static fixed bin(35,0) dcl 56 ref 161 165 184 196 228 error_table_$unsupported_operation 000012 external static fixed bin(35,0) dcl 58 ref 211 given based structure level 2 packed packed unaligned dcl 3-8 is_volume 000100 automatic bit(1) packed unaligned dcl 38 set ref 101* 106 location 0(06) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 180 mode parameter bit(3) packed unaligned dcl 224 ref 221 226 226 oper parameter bit(36) dcl 236 ref 233 239 operation 000103 automatic bit(36) dcl 41 set ref 90* 91* 93 operation_ptr 000116 automatic pointer dcl 48 set ref 93* 102 ops_ptr 000120 automatic pointer dcl 3-6 set ref 102* 158 158 158 162 162 162 178 180 180 180 180 180 180 194 194 owner 0(16) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 162 194 potential_aim_range 0(02) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 158 potential_attributes based bit(1) level 3 packed packed unaligned dcl 3-8 ref 180 priv_gate_call 0(12) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 158 162 180 194 release_lock 0(10) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 180 resource_info_$get_type 000044 constant entry external dcl 85 ref 101 resource_type 000105 automatic char(32) packed unaligned dcl 44 set ref 94* 101* return_arg 000136 automatic bit(36) dcl 237 set ref 239* 240 241 rm_on 000101 automatic bit(1) packed unaligned dcl 39 set ref 95* usage_lock 0(09) based bit(1) level 3 packed packed unaligned dcl 3-8 ref 180 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 CONSOLE_DTYPEX internal static fixed bin(17,0) initial dcl 4-31 DEVICE_TYPE internal static char(32) initial array packed unaligned dcl 4-18 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DISK_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 4-30 DISK_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 4-38 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 MCA_DTYPEX internal static fixed bin(17,0) initial dcl 4-36 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 NUM_QUALIFIERS internal static fixed bin(17,0) initial array dcl 4-22 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 PRINTER_DTYPEX internal static fixed bin(17,0) initial dcl 4-32 PUNCH_DTYPEX internal static fixed bin(17,0) initial dcl 4-33 READER_DTYPEX internal static fixed bin(17,0) initial dcl 4-34 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SPECIAL_DTYPEX internal static fixed bin(17,0) initial dcl 4-35 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TAPE_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 4-29 TAPE_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 4-37 VOLUME_TYPE internal static char(32) initial array packed unaligned dcl 4-25 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 NAMES DECLARED BY EXPLICIT CONTEXT. MAIN_RETURN 000331 constant label dcl 214 ref 114 121 136 141 basic_operation 000362 constant entry internal dcl 233 ref 91 rcp_operation_access 000015 constant entry external dcl 19 require_access 000343 constant entry internal dcl 221 ref 113 120 135 140 158 162 178 180 185 194 202 208 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 630 676 416 640 Length 1164 416 46 252 212 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_operation_access 111 external procedure is an external procedure. require_access internal procedure shares stack frame of external procedure rcp_operation_access. basic_operation internal procedure shares stack frame of external procedure rcp_operation_access. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_operation_access 000100 is_volume rcp_operation_access 000101 rm_on rcp_operation_access 000102 effmode rcp_operation_access 000103 operation rcp_operation_access 000104 base_op rcp_operation_access 000105 resource_type rcp_operation_access 000115 error_code rcp_operation_access 000116 operation_ptr rcp_operation_access 000120 ops_ptr rcp_operation_access 000136 return_arg basic_operation THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. resource_info_$get_type THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$rcp_add_device access_operations_$rcp_assign_read access_operations_$rcp_assign_write access_operations_$rcp_clear access_operations_$rcp_delete_device access_operations_$rcp_deregister access_operations_$rcp_preload access_operations_$rcp_release access_operations_$rcp_reserve access_operations_$rcp_set access_operations_$rcp_set_access access_operations_$rcp_status error_table_$insufficient_access error_table_$unsupported_operation LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000010 90 000022 91 000025 92 000027 93 000031 94 000033 95 000040 96 000045 100 000052 101 000053 102 000074 106 000100 111 000103 113 000113 114 000115 119 000116 120 000120 121 000122 124 000123 133 000124 135 000134 136 000136 138 000137 140 000143 141 000145 157 000146 158 000152 161 000172 162 000175 165 000214 166 000216 177 000217 178 000221 180 000231 184 000264 185 000267 186 000271 193 000272 194 000274 196 000310 197 000312 202 000313 208 000322 211 000327 214 000331 217 000340 219 000342 221 000343 226 000345 228 000356 229 000361 233 000362 239 000364 240 000366 241 000370 ----------------------------------------------------------- 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