COMPILATION LISTING OF SEGMENT rcp_access_kernel_ 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 0954.4 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 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 10 rcp_access_kernel_: 11 procedure (a_operation, a_requestor_info_ptr, a_resource_info_ptr, a_effmode, a_code); 12 13 /* This program implements an access kernel for RCP 14* * Created 841024 by Maria M. Pozzo 15* * 16* * The operation argument is used to determine the access rules 17* * to apply when calculating effective access of the user to 18* * the RCP resource. 19**/ 20 21 22 /****^ HISTORY COMMENTS: 23* 1) change(85-07-08,Pozzo), approve(86-02-21,MCR7346), audit(86-07-29,Farley), 24* install(86-08-01,MR12.0-1108): 25* Modified to return the correct error code from rcp_compute_bracket_mode. 26* 2) change(85-07-10,Pozzo), approve(86-02-21,MCR7346), audit(86-07-29,Farley), 27* install(86-08-01,MR12.0-1108): 28* Modified to audit attempt to access a multi-class volume from outside ring 29* 1 or without the rcp privilege turned on. 30* 3) change(86-08-07,Farley), approve(86-08-07,MCR7469), 31* audit(86-10-19,Beattie), install(86-10-28,MR12.0-1200): 32* Added validation level check for MCA attachments. 33* END HISTORY COMMENTS */ 34 35 36 /* ARGUMENT DATA */ 37 38 dcl a_operation bit (36) aligned; /* (I) RCP operation found in rcp_operations.incl.pl1 */ 39 dcl a_requestor_info_ptr ptr; /* (I) Contains information about the user requesting the RCP operation */ 40 dcl a_resource_info_ptr ptr; /* (I) Contains information about the resource being requested */ 41 dcl a_effmode bit (3); /* (O) Effective access mode of the requesting user to the RCP resource */ 42 dcl a_code fixed bin (35); /* (O) Error code */ 43 44 /* AUTOMATIC */ 45 46 dcl rcp_priv bit (1) aligned; /* ON => rcp system_privilege is enabled */ 47 dcl rm_on bit (1) aligned; /* Set if Resource Management is enabled */ 48 dcl (aim_mode, bracket_mode, effmode, raw_mode, temp_effmode) 49 bit (3); /* access modes */ 50 dcl operation bit (36) aligned; 51 dcl base_operation bit (36) aligned; 52 53 dcl acs_path char (168); /* ACS pathname */ 54 dcl owner char (32); /* If RM is enabled this is the resource owner found in the registry */ 55 dcl who_am_i char (32); /* Identifies this program. */ 56 57 dcl operation_ptr ptr; /* RCP operation */ 58 59 dcl error_code fixed bin (35); /* Internal error code */ 60 dcl input_code fixed bin (35); /* Passed in error_code */ 61 dcl rbs (2) fixed bin (3); /* Ring brackets of the ACS if it exists. */ 62 63 dcl 1 en_access_op like encoded_access_op aligned based (operation_ptr); 64 65 dcl addr builtin; 66 67 /* CONSTANTS */ 68 69 dcl RING_1 fixed bin (3) static internal options (constant) init (1); 70 71 /* EXTERNAL */ 72 73 dcl error_table_$bad_ring_brackets 74 fixed bin (35) external; 75 dcl error_table_$unsupported_multi_class_volume 76 fixed bin (35) external; 77 78 /* EXTERNAL ENTRIES */ 79 80 81 dcl rcp_audit entry (char (*), bit (36) aligned, ptr, ptr, char (*), bit (3), bit (3), 82 (2) fixed bin (3), bit (1), fixed bin (35)); 83 dcl rcp_merge_modes entry (bit (3), bit (3), fixed bin (35)) returns (bit (3)); 84 dcl rcp_access_kernel_setup 85 entry (bit (36) aligned, ptr, ptr, bit (1) aligned, char (168), bit (1) aligned, 86 char (32), bit (3), fixed bin (35)); 87 dcl rcp_compute_aim_mode entry (ptr, ptr, bit (3), fixed bin (35)); 88 dcl rcp_compute_bracket_mode 89 entry (char (168), ptr, ptr, bit (3), (2) fixed bin (3), fixed bin (35)); 90 dcl rcp_compute_raw_mode entry (bit (1) aligned, ptr, ptr, char (168), char (32), bit (3), fixed bin (35)); 91 dcl rcp_operation_access entry (bit (36) aligned, char (32), bit (1) aligned, bit (3), fixed bin (35)); 92 dcl access_operations_$rcp_acquire 93 bit (36) aligned external; 94 dcl access_operations_$rcp_register 95 bit (36) aligned external; 96 dcl access_operations_$rcp_register_acquire 97 bit (36) aligned external; 98 99 /* Copy input arguments */ 100 101 operation = a_operation; 102 base_operation = operation; 103 input_code = a_code; 104 addr (base_operation) -> encoded_access_op.detailed_operation = 0; 105 operation_ptr = addr (operation); 106 requestor_info_ptr = a_requestor_info_ptr; 107 resource_info_ptr = a_resource_info_ptr; 108 109 /* Initializer local variables */ 110 111 who_am_i = "rcp_access_kernel_"; 112 rcp_priv, rm_on = "0"b; 113 aim_mode, bracket_mode, effmode, raw_mode = ""b; 114 temp_effmode = REW_ACCESS; 115 owner = ""; 116 ops_ptr = addr (en_access_op.detailed_operation); 117 error_code = 0; 118 rbs = 0; 119 rbs (1) = -1; /* In case they don't exist. */ 120 121 /* Get setup - determine if this is a privileged user */ 122 123 call rcp_access_kernel_setup (operation, requestor_info_ptr, resource_info_ptr, rm_on, acs_path, rcp_priv, 124 owner, effmode, error_code); 125 126 if error_code ^= 0 then 127 if error_code = error_table_$unsupported_multi_class_volume then 128 goto AUDIT; 129 else goto MAIN_RETURN; 130 131 if base_operation = access_operations_$rcp_register | base_operation = access_operations_$rcp_register_acquire 132 | base_operation = access_operations_$rcp_acquire then 133 goto MAIN_RETURN; /* These ops have default access and are audited later. */ 134 135 if effmode ^= ""b then /* Some operations have default access but get audited now. */ 136 goto AUDIT; 137 138 /* If the resource is an MCA, verify that the requestor's validation level is correct. */ 139 140 if resource_info.resource_type = DEVICE_TYPE (MCA_DTYPEX) then 141 if requestor_info.validation_level > RING_1 then do; 142 error_code = error_table_$bad_ring_brackets; 143 goto AUDIT; 144 end; 145 else ; 146 else ; 147 148 /* If this is a privileged gate call (rcp_sys_, rcp_admin_) bypass all discretionary access checks */ 149 150 if ^detailed_operation.priv_gate_call then do; 151 152 /* Calculate the discretionary access mode of the subject to the object */ 153 154 call rcp_compute_raw_mode (rm_on, requestor_info_ptr, resource_info_ptr, acs_path, owner, raw_mode, 155 error_code); 156 157 /* Calculate the ring bracket mode - if the acs path is null then 158* this check is bypassed */ 159 160 if acs_path ^= "" then do; 161 call rcp_compute_bracket_mode (acs_path, requestor_info_ptr, resource_info_ptr, bracket_mode, rbs, 162 error_code); 163 164 /* Determine the temporary effective mode without AIM factored in */ 165 166 temp_effmode = rcp_merge_modes (raw_mode, bracket_mode, error_code); 167 168 end; 169 else temp_effmode = raw_mode; 170 171 end; 172 173 /* If RM is enabled and RCP system privilege is off, must factor in the AIM access mode */ 174 175 if (rm_on & ^rcp_priv) then do; 176 call rcp_compute_aim_mode (requestor_info_ptr, resource_info_ptr, aim_mode, error_code); 177 effmode = rcp_merge_modes (temp_effmode, aim_mode, error_code); 178 end; 179 else effmode = temp_effmode; 180 181 /* Now we know the access, see if we have enough to perform the requested operation */ 182 183 call rcp_operation_access (operation, resource_info.resource_type, rm_on, effmode, error_code); 184 a_code = error_code; 185 186 /* Now let's audit the attempted operation. rcp_audit determines if auditing */ 187 /* is enabled. */ 188 189 AUDIT: 190 /**** If the error code passed in is not zero, then the operation failed due 191* to reasons other than access (such as resource locked) and this call to 192* the access kernel is to determine how much information to return. We 193* want to be sure to audit this as a denial of the operation even though 194* the user may have access. */ 195 if input_code ^= 0 then 196 call rcp_audit (who_am_i, operation, requestor_info_ptr, resource_info_ptr, owner, ("000"b), raw_mode, rbs, 197 (rm_on), (error_code)); 198 else call rcp_audit (who_am_i, operation, requestor_info_ptr, resource_info_ptr, owner, (effmode), raw_mode, 199 rbs, (rm_on), (error_code)); 200 201 MAIN_RETURN: 202 a_operation = operation; 203 a_effmode = effmode; 204 a_code = error_code; 205 return; 206 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 */ 207 208 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 */ 209 210 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 211 212 4 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 4 2 /* Begin include file rcp_resource_info.incl.pl1 4 3* * 4 4* * This include file gives information about the object, 4 5* * or resource for the RCP operation. If RM is enabled this 4 6* * information will provide the registry name and switch pointer 4 7* * for the registry so additional resource information can be 4 8* * determined. If RM is disabled, this information will include 4 9* * the resource name and/or type. 4 10**/ 4 11 4 12 dcl resource_info_ptr ptr; 4 13 4 14 dcl 1 resource_info based (resource_info_ptr), 4 15 2 registry_dir aligned char (64), /* Could be a different if it is reconstruct operation */ 4 16 2 registry_switch_ptr 4 17 ptr, /* Switch to the registry */ 4 18 2 registry_record_ptr 4 19 ptr, /* Pointer to the registry record */ 4 20 2 resource_type char (32), /* Resource type */ 4 21 2 resource_name char (32); /* Resource name */ 4 22 4 23 /* end include file .. rcp_resource_info.incl.pl1 */ 213 214 5 1 /* Begin include file ... rcp_resource_types.incl.pl1 5 2* * 5 3* * Created 3/79 by Michael R. Jordan for MR7.0R 5 4* * 5 5* * This include file defines the official RCP resource types. 5 6* * The array of names is indexed by the corresponding device type. 5 7* * MOD by RAF for MCA 5 8**/ 5 9 5 10 5 11 5 12 /****^ HISTORY COMMENTS: 5 13* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 5 14* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 5 15* Support of MCA. 5 16* END HISTORY COMMENTS */ 5 17 5 18 dcl DEVICE_TYPE (8) char (32) 5 19 internal static options (constant) 5 20 init ("tape_drive", "disk_drive", "console", "printer", "punch", "reader", "special", "mca"); 5 21 5 22 dcl NUM_QUALIFIERS (8) fixed bin /* Number of qualifiers for each device type. */ 5 23 internal static init (3, 0, 0, 2, 0, 0, 0, 0); 5 24 5 25 dcl VOLUME_TYPE (8) char (32) 5 26 internal static options (constant) 5 27 init ("tape_vol", "disk_vol", "", "", "", "", "", ""); 5 28 5 29 dcl TAPE_DRIVE_DTYPEX fixed bin static internal options (constant) init (1); 5 30 dcl DISK_DRIVE_DTYPEX fixed bin static internal options (constant) init (2); 5 31 dcl CONSOLE_DTYPEX fixed bin static internal options (constant) init (3); 5 32 dcl PRINTER_DTYPEX fixed bin static internal options (constant) init (4); 5 33 dcl PUNCH_DTYPEX fixed bin static internal options (constant) init (5); 5 34 dcl READER_DTYPEX fixed bin static internal options (constant) init (6); 5 35 dcl SPECIAL_DTYPEX fixed bin static internal options (constant) init (7); 5 36 dcl MCA_DTYPEX fixed bin static internal options (constant) init (8); 5 37 dcl TAPE_VOL_VTYPEX fixed bin static internal options (constant) init (1); 5 38 dcl DISK_VOL_VTYPEX fixed bin static internal options (constant) init (2); 5 39 5 40 5 41 /* End include file ... rcp_resource_types.incl.pl1 */ 215 216 6 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 2 /* Begin include file rcp_requestor_info.incl.pl1 6 3* * 6 4* * This include file gives information about the subject, 6 5* * or requestor of the RCP operation. In one case, absentee 6 6* * requests, the user is the Initializer, so this piece of 6 7* * information tells us about the real requestor of the RCP 6 8* * operation. 6 9**/ 6 10 6 11 dcl requestor_info_ptr ptr; 6 12 6 13 dcl 1 requestor_info aligned based (requestor_info_ptr), 6 14 2 user_id char (32), 6 15 2 current_authorization bit (72) aligned, 6 16 2 validation_level fixed bin (3); 6 17 6 18 /* end include file .. rcp_requestor_info.incl.pl1 */ 217 218 219 end rcp_access_kernel_; 220 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0804.3 rcp_access_kernel_.pl1 >spec>install>1111>rcp_access_kernel_.pl1 207 1 01/30/85 1523.9 access_audit_encoded_op.incl.pl1 >ldd>include>access_audit_encoded_op.incl.pl1 209 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 211 3 03/15/85 0953.1 rcp_ops.incl.pl1 >ldd>include>rcp_ops.incl.pl1 213 4 03/15/85 0953.1 rcp_resource_info.incl.pl1 >ldd>include>rcp_resource_info.incl.pl1 215 5 03/27/86 1120.0 rcp_resource_types.incl.pl1 >ldd>include>rcp_resource_types.incl.pl1 217 6 03/15/85 0953.1 rcp_requestor_info.incl.pl1 >ldd>include>rcp_requestor_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. DEVICE_TYPE 000000 constant char(32) initial array packed unaligned dcl 5-18 ref 140 MCA_DTYPEX constant fixed bin(17,0) initial dcl 5-36 ref 140 REW_ACCESS constant bit(3) initial packed unaligned dcl 2-11 ref 114 RING_1 constant fixed bin(3,0) initial dcl 69 ref 140 a_code parameter fixed bin(35,0) dcl 42 set ref 10 103 184* 204* a_effmode parameter bit(3) packed unaligned dcl 41 set ref 10 203* a_operation parameter bit(36) dcl 38 set ref 10 101 201* a_requestor_info_ptr parameter pointer dcl 39 ref 10 106 a_resource_info_ptr parameter pointer dcl 40 ref 10 107 access_operations_$rcp_acquire 000032 external static bit(36) dcl 92 ref 131 access_operations_$rcp_register 000034 external static bit(36) dcl 94 ref 131 access_operations_$rcp_register_acquire 000036 external static bit(36) dcl 96 ref 131 acs_path 000111 automatic char(168) packed unaligned dcl 53 set ref 123* 154* 160 161* addr builtin function dcl 65 ref 104 105 116 aim_mode 000102 automatic bit(3) packed unaligned dcl 48 set ref 113* 176* 177* base_operation 000110 automatic bit(36) dcl 51 set ref 102* 104 131 131 131 bracket_mode 000103 automatic bit(3) packed unaligned dcl 48 set ref 113* 161* 166* detailed_operation 0(18) based fixed bin(18,0) level 2 in structure "en_access_op" packed packed unsigned unaligned dcl 63 in procedure "rcp_access_kernel_" set ref 116 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_access_kernel_" set ref 104* detailed_operation based structure level 1 packed packed unaligned dcl 3-8 in procedure "rcp_access_kernel_" effmode 000104 automatic bit(3) packed unaligned dcl 48 set ref 113* 123* 135 177* 179* 183* 198 203 en_access_op based structure level 1 dcl 63 encoded_access_op based structure level 1 dcl 1-3 error_code 000206 automatic fixed bin(35,0) dcl 59 set ref 117* 123* 126 126 142* 154* 161* 166* 176* 177* 183* 184 189 198 204 error_table_$bad_ring_brackets 000010 external static fixed bin(35,0) dcl 73 ref 142 error_table_$unsupported_multi_class_volume 000012 external static fixed bin(35,0) dcl 75 ref 126 input_code 000207 automatic fixed bin(35,0) dcl 60 set ref 103* 189 operation 000107 automatic bit(36) dcl 50 set ref 101* 102 105 123* 183* 189* 198* 201 operation_ptr 000204 automatic pointer dcl 57 set ref 105* 116 ops_ptr 000212 automatic pointer dcl 3-6 set ref 116* 150 owner 000163 automatic char(32) packed unaligned dcl 54 set ref 115* 123* 154* 189* 198* priv_gate_call 0(12) based bit(1) level 2 packed packed unaligned dcl 3-8 ref 150 raw_mode 000105 automatic bit(3) packed unaligned dcl 48 set ref 113* 154* 166* 169 189* 198* rbs 000210 automatic fixed bin(3,0) array dcl 61 set ref 118* 119* 161* 189* 198* rcp_access_kernel_setup 000020 constant entry external dcl 84 ref 123 rcp_audit 000014 constant entry external dcl 81 ref 189 198 rcp_compute_aim_mode 000022 constant entry external dcl 87 ref 176 rcp_compute_bracket_mode 000024 constant entry external dcl 88 ref 161 rcp_compute_raw_mode 000026 constant entry external dcl 90 ref 154 rcp_merge_modes 000016 constant entry external dcl 83 ref 166 177 rcp_operation_access 000030 constant entry external dcl 91 ref 183 rcp_priv 000100 automatic bit(1) dcl 46 set ref 112* 123* 175 requestor_info based structure level 1 dcl 6-13 requestor_info_ptr 000216 automatic pointer dcl 6-11 set ref 106* 123* 140 154* 161* 176* 189* 198* resource_info based structure level 1 unaligned dcl 4-14 resource_info_ptr 000214 automatic pointer dcl 4-12 set ref 107* 123* 140 154* 161* 176* 183 189* 198* resource_type 24 based char(32) level 2 packed packed unaligned dcl 4-14 set ref 140 183* rm_on 000101 automatic bit(1) dcl 47 set ref 112* 123* 154* 175 183* 189 198 temp_effmode 000106 automatic bit(3) packed unaligned dcl 48 set ref 114* 166* 169* 177* 179 validation_level 12 based fixed bin(3,0) level 2 dcl 6-13 ref 140 who_am_i 000173 automatic char(32) packed unaligned dcl 55 set ref 111* 189* 198* 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 5-31 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 5-30 DISK_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 5-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 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 5-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 5-32 PUNCH_DTYPEX internal static fixed bin(17,0) initial dcl 5-33 READER_DTYPEX internal static fixed bin(17,0) initial dcl 5-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 internal static bit(3) initial packed unaligned dcl 2-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 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 5-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 5-29 TAPE_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 5-37 VOLUME_TYPE internal static char(32) initial array packed unaligned dcl 5-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. AUDIT 000465 constant label dcl 189 ref 126 135 143 MAIN_RETURN 000635 constant label dcl 201 set ref 129 131 rcp_access_kernel_ 000125 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1052 1112 647 1062 Length 1430 647 40 301 203 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_access_kernel_ 210 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_access_kernel_ 000100 rcp_priv rcp_access_kernel_ 000101 rm_on rcp_access_kernel_ 000102 aim_mode rcp_access_kernel_ 000103 bracket_mode rcp_access_kernel_ 000104 effmode rcp_access_kernel_ 000105 raw_mode rcp_access_kernel_ 000106 temp_effmode rcp_access_kernel_ 000107 operation rcp_access_kernel_ 000110 base_operation rcp_access_kernel_ 000111 acs_path rcp_access_kernel_ 000163 owner rcp_access_kernel_ 000173 who_am_i rcp_access_kernel_ 000204 operation_ptr rcp_access_kernel_ 000206 error_code rcp_access_kernel_ 000207 input_code rcp_access_kernel_ 000210 rbs rcp_access_kernel_ 000212 ops_ptr rcp_access_kernel_ 000214 resource_info_ptr rcp_access_kernel_ 000216 requestor_info_ptr rcp_access_kernel_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. rcp_access_kernel_setup rcp_audit rcp_compute_aim_mode rcp_compute_bracket_mode rcp_compute_raw_mode rcp_merge_modes rcp_operation_access THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$rcp_acquire access_operations_$rcp_register access_operations_$rcp_register_acquire error_table_$bad_ring_brackets error_table_$unsupported_multi_class_volume LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000120 101 000132 102 000135 103 000136 104 000140 105 000142 106 000144 107 000147 111 000152 112 000155 113 000157 114 000163 115 000165 116 000170 117 000174 118 000175 119 000206 123 000210 126 000237 129 000244 131 000245 135 000255 140 000260 142 000274 143 000276 150 000277 154 000304 160 000326 161 000332 166 000353 168 000370 169 000371 175 000375 176 000403 177 000420 178 000435 179 000436 183 000442 184 000462 189 000465 198 000552 201 000635 203 000640 204 000644 205 000646 ----------------------------------------------------------- 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