COMPILATION LISTING OF SEGMENT resource_info_ 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 0941.3 mst Sat Options: optimize map 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 resource_info_: proc; return; 14 15 /* This subroutine provides an easy way to extract commonly-needed information 16* from an RTDT without the calling program having to parse the RTDT itself. */ 17 /* 18* Written 04/06/78 by C. D. Tavares 19* Modified 6/79 by Michael R. Jordan for MR7.0R to add get_dtypex, get_vtypex, and get_primary_type 20* Modified 12/79 by CDT to prevent lossage during cold boots or when >sc1 is not around. 21**/ 22 23 dcl (null, pointer) builtin, 24 cleanup condition, 25 sysdir char (168) static initial (">system_control_1"); 26 27 dcl get_initial_ring_ ext entry returns (fixed bin), 28 get_group_id_ ext entry returns (char (32)); 29 1 1 /* --------------- BEGIN include file rtdt.incl.pl1 --------------- */ 1 2 1 3 dcl 1 rtdt aligned based (rtdtp), /* resource type description table */ 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 4 1 5 2 version fixed bin, /* version number */ 1 6 2 installed_under_resource_mgt bit (1) aligned, /* resource mgt. was ON when this was installed */ 1 7 2 charge_type_table_ptr offset, /* points to charge_type_table */ 1 8 2 first_resource offset, /* chain for RTDE's */ 1 9 2 rtdt_area area (RTDT_area_len); /* all following items allocated here */ 1 10 1 11 dcl 1 charge_type_table aligned based (cttp), /* describes charges for resource types */ 1 12 2 n_charge_types fixed bin, /* number of distinct charge types */ 1 13 2 charge_types (N_CHARGE_TYPES refer (charge_type_table.n_charge_types)) aligned char (32), 1 14 2 flagword fixed bin (35) aligned; /* this word simply help us set bitcount properly */ 1 15 1 16 dcl 1 rtde aligned based (rtdep), /* describes one resource type */ 1 17 2 fixed_info aligned, 1 18 3 next_resource offset, /* chains to next type, or nullo */ 1 19 3 name char (32), /* name of resource type, e.g. "tape_drive" */ 1 20 3 syn_to char (32), /* if is_synonym this is master syn */ 1 21 3 precanon_proc char (64), /* name of routine to standardize resource name */ 1 22 3 pad_1 (16) fixed bin (35), 1 23 3 flags unaligned, 1 24 4 (valid, /* resource type hasn't been deleted */ 1 25 is_volume, /* specifies volume or device type */ 1 26 manual_clear, /* volumes of this type to be "degaussed" between owners */ 1 27 addition_pending, /* bookkeeping bit for upd_rtdt_ */ 1 28 deletion_pending, 1 29 is_synonym) bit (1) unaligned, /* ditto */ 1 30 4 pad bit (12) unaligned, 1 31 3 (process_limit, /* how many can you assign at one time */ 1 32 default_time, /* implicit reservations are for how many minutes */ 1 33 max_time, /* how long can you reserve it for */ 1 34 advance_notice_time, /* warn operator to prepare mount ahead of time */ 1 35 pad2, 1 36 n_exclusion_specs, /* number of distinct "name=" fields in attributes */ 1 37 n_mates, /* number of mating devs/vols for this vol/dev */ 1 38 n_subtypes, /* number of registration subtypes */ 1 39 n_defined_attributes) fixed bin (17) unaligned, /* number of defined attributes */ 1 40 3 pad_2 (8) fixed bin (35), 1 41 3 attributes_valid bit (72) aligned, /* "1"b if corresp. attribute undeleted */ 1 42 3 attributes_to_match bit (72) aligned, /* potential mate must possess these attributes */ 1 43 3 attribute_names (72) char (12) aligned, /* all possible attributes for this resource */ 1 44 3 exclusion_specs (36) bit (72) aligned, /* each masks all attrributes of the form "key=val" */ 1 45 3 pad_3 (32) fixed bin (35), 1 46 3 registration_defaults aligned, /* applied at reg. time if none given */ 1 47 4 default_flags aligned, 1 48 5 (potential_attributes_given, /* "1"b = there are default potential_attributes */ 1 49 attributes_given, /* and similarly, etc. */ 1 50 aim_range_given, 1 51 charge_type_given) bit (1) unaligned, 1 52 5 pad bit (31) unaligned, 1 53 4 potential_attributes bit (72) aligned, /* for registration, if given */ 1 54 4 attributes bit (72) aligned, /* for registration and also for runtime "I-don't-care" */ 1 55 4 aim_range (2) bit (72) aligned, /* and similarly, etc. */ 1 56 4 charge_type fixed bin, 1 57 4 pad_4 (8) fixed bin (35) aligned, 1 58 2 mates (N_MATES refer (rtde.n_mates)) char (32) aligned, 1 59 /* the volume type that mounts on this device, or vice versa */ 1 60 2 subtypes (N_SUBTYPES refer (rtde.n_subtypes)) aligned, /* named registration default groups */ 1 61 3 subtype_name char (32), /* name of the group */ 1 62 3 subtype_defaults like rtde.registration_defaults aligned; 1 63 1 64 dcl RTDT_version_3 fixed bin static options (constant) initial (3), 1 65 RTDT_version_2 fixed bin static options (constant) initial (2), 1 66 /* same format, but without precanon_proc */ 1 67 (N_MATES, N_SUBTYPES, N_CHARGE_TYPES) fixed bin, 1 68 RTDT_area_len fixed bin (18); 1 69 1 70 dcl (rtdep, rtdtp, cttp) pointer; 1 71 1 72 /* ---------------- END include file rtdt.incl.pl1 ---------------- */ 30 31 3 1 /* --------------- BEGIN include file resource_control_desc.incl.pl1 --------------- */ 3 2 3 3 /* Written by R.J.C. Kissel 3/78. */ 3 4 /* Modified 09/28/78 by C. D. Tavares */ 3 5 3 6 dcl 1 resource_descriptions based (resource_desc_ptr) aligned, 3 7 2 version_no fixed bin, /* caller must set this to resource_desc_version_1 */ 3 8 2 n_items fixed bin, /* Number of resources described by this structure. */ 3 9 2 item (Resource_count refer (resource_descriptions.n_items)) aligned, 3 10 3 type char (32), /* e.g., "tape_drive" */ 3 11 3 name char (32), /* e.g., "tapa_03" */ 3 12 3 uid bit (36), /* The resource unique id. */ 3 13 3 potential_attributes bit (72), /* resource's permissible attributes */ 3 14 3 attributes (2) bit (72), /* RCP attribute description (output) */ 3 15 3 desired_attributes (4) bit (72), /* desired attributes (input) */ 3 16 3 potential_aim_range (2) bit (72), /* Lowest and highest possible AIM bounds for resource */ 3 17 3 aim_range (2) bit (72), /* Current AIM range */ 3 18 3 owner char (32), /* e.g., "Smith.Project" */ 3 19 3 acs_path char (168), /* Access control segment pathname. */ 3 20 3 location char (168), /* String describing location in unusual cases */ 3 21 3 comment char (168), /* User-settable comment string */ 3 22 3 charge_type char (32), /* accounting identifier for this resource */ 3 23 3 rew bit (3) unaligned, /* user's effective access to resource */ 3 24 3 (usage_lock, /* This resource may not be acquired or used. */ 3 25 release_lock, /* The owner is not allowed to release the resource. */ 3 26 awaiting_clear, /* Resource awaiting manual clear */ 3 27 user_alloc) bit (1) unaligned, /* User claims volume contains useful data */ 3 28 3 pad2 bit (29) unaligned, /* Ignored field. */ 3 29 3 given aligned, /* each of these bits says the corresponding */ 3 30 /* item is significant on input */ 3 31 (4 (name, 3 32 uid, 3 33 potential_attributes, 3 34 desired_attributes, 3 35 potential_aim_range, 3 36 aim_range, 3 37 owner, 3 38 acs_path, 3 39 location, 3 40 comment, 3 41 charge_type, 3 42 usage_lock, 3 43 release_lock, 3 44 user_alloc) bit (1), 3 45 4 pad1 bit (22)) unaligned, 3 46 3 state bit (36) aligned, /* For use of resource_control_ only */ 3 47 3 status_code fixed bin (35); /* Standard system status code for this resource. */ 3 48 3 49 3 50 /* Note that the reservation description must always be used with a resource 3 51* description structure. When they are used together the two structures must 3 52* have the same number of entries, i.e. Resource_count is the same for both. */ 3 53 3 54 3 55 dcl 1 reservation_description based (resource_res_ptr) aligned, 3 56 2 version_no fixed bin, /* The version number for this structure. */ 3 57 2 reserved_for char (32), /* Group id of reserved for process. */ 3 58 2 reserved_by char (32), /* Group id of reserved by process. */ 3 59 2 reservation_id fixed bin (71), /* Reservation id of this reservation group. */ 3 60 2 group_starting_time fixed bin (71), /* Starting time for this reservation group. */ 3 61 2 asap_duration fixed bin (71), /* Duration after which as soon as possible is no longer good. */ 3 62 2 flags aligned, 3 63 (3 auto_expire bit (1), /* Should reservation expire when this process terminates. */ 3 64 3 asap bit (1), /* Make this reservation group as soon as possible. */ 3 65 3 rel bit (1), /* Times are relative/absolute. */ 3 66 3 sec bit (1)) unaligned, /* Times are in sec/microsec. */ 3 67 2 n_items fixed bin, /* Number of resources reserved in this group. */ 3 68 2 reservation_group (Resource_count refer (reservation_description.n_items)), 3 69 3 starting_time fixed bin (71), /* When this resource res. starts in the group. */ 3 70 3 duration fixed bin (71); /* Duration of this resource res. in the group. */ 3 71 3 72 dcl (resource_desc_ptr, 3 73 resource_res_ptr) pointer; 3 74 3 75 dcl (resource_desc_version_1 initial (1), 3 76 resource_res_version_1 initial (1)) internal static options (constant); 3 77 3 78 dcl Resource_count fixed bin; /* The number of resources described in the structures. */ 3 79 3 80 /* ---------------- END include file resource_control_desc.incl.pl1 ---------------- */ 32 33 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 */ 34 35 36 get_type: entry (resource_type, is_volume_arg, code); 37 38 dcl (resource_type char (*), 39 is_volume_arg bit (1), 40 code fixed bin (35)) parameter; 41 42 rtdtp = null; 43 44 on cleanup call term_rtdt (0); 45 46 call scan_rtdt (resource_type, code); 47 if code ^= 0 then do; 48 call term_rtdt (0); 49 return; 50 end; 51 52 is_volume_arg = rtde.is_volume; 53 54 call term_rtdt (code); 55 return; 56 57 get_primary_type: entry (resource_type, primary_type, code); 58 59 rtdtp = null (); 60 61 on cleanup call term_rtdt (0); 62 63 call scan_rtdt (resource_type, code); 64 if code ^= 0 then do; 65 call term_rtdt (0); 66 return; 67 end; 68 69 if rtde.flags.is_synonym then primary_type = rtde.syn_to; 70 else primary_type = rtde.name; 71 72 call term_rtdt (code); 73 74 return; 75 76 get_dtypex: entry (resource_type, primary_type, dtypex, code); 77 78 dcl dtypex fixed bin parameter; 79 dcl error_table_$device_type_unknown fixed bin (35) ext; 80 dcl primary_type char (*) parameter; 81 82 rtdtp = null (); 83 84 on cleanup call term_rtdt (0); 85 86 call scan_rtdt (resource_type, code); 87 if code ^= 0 then do; 88 call term_rtdt (0); 89 return; 90 end; 91 92 if rtde.flags.is_synonym then primary_type = rtde.syn_to; 93 else primary_type = rtde.name; 94 95 call term_rtdt (code); 96 97 do dtypex = hbound (DEVICE_TYPE, 1) to 1 by -1 98 while (primary_type ^= DEVICE_TYPE (dtypex)); 99 end; 100 101 if dtypex = 0 then code = error_table_$device_type_unknown; 102 103 return; 104 105 get_vtypex: entry (resource_type, primary_type, vtypex, code); 106 107 dcl error_table_$volume_type_unknown fixed bin (35) ext; 108 dcl vtypex fixed bin parameter; 109 110 rtdtp = null (); 111 112 on cleanup call term_rtdt (0); 113 114 call scan_rtdt (resource_type, code); 115 if code ^= 0 then do; 116 call term_rtdt (0); 117 return; 118 end; 119 120 if rtde.flags.is_synonym then primary_type = rtde.syn_to; 121 else primary_type = rtde.name; 122 123 call term_rtdt (code); 124 125 do vtypex = hbound (VOLUME_TYPE, 1) to 1 by -1 126 while (primary_type ^= VOLUME_TYPE (vtypex)); 127 end; 128 129 if vtypex = 0 then code = error_table_$volume_type_unknown; 130 131 return; 132 133 get_rtypex: entry (resource_type, primary_type, rtypex, is_volume_arg, code); 134 135 dcl rtypex fixed bin; 136 137 rtdtp = null (); 138 139 on cleanup call term_rtdt (0); 140 141 call scan_rtdt (resource_type, code); 142 if code ^= 0 then do; 143 call term_rtdt (0); 144 return; 145 end; 146 147 is_volume_arg = rtde.is_volume; 148 if rtde.flags.is_synonym then primary_type = rtde.syn_to; 149 else primary_type = rtde.name; 150 151 call term_rtdt (code); 152 153 if is_volume_arg then do rtypex = hbound (VOLUME_TYPE, 1) to 1 by -1 154 while (primary_type ^= VOLUME_TYPE (rtypex)); 155 end; 156 else do rtypex = hbound (DEVICE_TYPE, 1) to 1 by -1 157 while (primary_type ^= DEVICE_TYPE (rtypex)); 158 end; 159 160 if rtypex = 0 then code = error_table_$resource_type_unknown; 161 162 163 return; 164 165 limits: entry (resource_type, maxnum_arg, default_arg, time_arg, code); 166 167 dcl (maxnum_arg, default_arg, time_arg) fixed bin parameter; 168 169 rtdtp = null; 170 171 on cleanup call term_rtdt (0); 172 173 call scan_rtdt (resource_type, code); 174 if code ^= 0 then do; 175 call term_rtdt (0); 176 return; 177 end; 178 179 maxnum_arg = rtde.process_limit; 180 default_arg = rtde.default_time; 181 time_arg = rtde.max_time; 182 183 call term_rtdt (code); 184 return; 185 186 mates: entry (resource_type, n_mates_arg, mates_arg, code); 187 188 dcl (n_mates_arg fixed bin, 189 mates_arg char (*) dimension (*)) parameter; 190 191 dcl (i, j) fixed bin, 192 (lbound, dim) builtin, 193 error_table_$improper_data_format ext fixed bin (35) static, 194 error_table_$unimplemented_version ext fixed bin (35) static, 195 error_table_$smallarg ext fixed bin (35) static; 196 197 rtdtp = null; 198 199 on cleanup call term_rtdt (0); 200 201 call scan_rtdt (resource_type, code); 202 if code ^= 0 then do; 203 call term_rtdt (0); 204 return; 205 end; 206 207 n_mates_arg = rtde.n_mates; 208 209 if n_mates_arg > dim (mates_arg, 1) then do; 210 code = error_table_$smallarg; 211 call term_rtdt (0); 212 return; 213 end; 214 215 j = lbound (mates_arg, 1); 216 217 do i = 1 to n_mates_arg; 218 mates_arg (j) = rtde.mates (i); 219 j = j + 1; 220 end; 221 222 call term_rtdt (code); 223 return; 224 225 defaults: entry (resource_type, subtype, resource_desc_ptr, resource_no, code); 226 227 dcl subtype char (*) parameter, 228 resource_no fixed bin parameter; 229 230 dcl 1 master_item aligned like resource_descriptions.item based (mi_ptr); 231 232 dcl mi_ptr pointer, 233 (rno, first, last) fixed bin; 234 235 dcl error_table_$resource_type_unknown ext fixed bin (35) static; 236 237 dcl temp_spec bit (36) aligned; 238 239 240 if resource_descriptions.version_no ^= resource_desc_version_1 then do; 241 code = error_table_$unimplemented_version; 242 return; 243 end; 244 245 rtdtp = null; 246 247 on cleanup call term_rtdt (0); 248 249 if resource_no = 0 then do; 250 first = 1; 251 last = resource_descriptions.n_items; 252 end; 253 254 else first, last = resource_no; 255 256 do rno = first to last; 257 258 mi_ptr = addr (resource_descriptions.item (rno)); 259 260 call scan_rtdt (resource_type, code); 261 if code ^= 0 then do; 262 call term_rtdt (0); 263 return; 264 end; 265 266 master_item.type = resource_type; 267 268 if subtype ^= "" then do; 269 do i = 1 to rtde.n_subtypes while (subtype ^= rtde.subtype_name (i)); 270 end; 271 272 if i > rtde.n_subtypes then do; 273 code = error_table_$resource_type_unknown; 274 call term_rtdt (0); 275 return; 276 end; 277 278 call load_defaults (addr (rtde.subtype_defaults (i))); 279 end; 280 281 call load_defaults (addr (rtde.registration_defaults)); 282 283 if ^master_item.given.desired_attributes then do; 284 call compute_initial_attributes (master_item.potential_attributes, ""b, ""b, master_item.desired_attributes (*)); 285 master_item.given.desired_attributes = "1"b; 286 end; 287 end; 288 289 /* ------------------------- */ 290 291 load_defaults: proc (default_ptr); 292 293 dcl 1 defaults aligned like rtde.registration_defaults based (default_ptr), 294 default_ptr pointer; 295 296 dcl temp_potential_atts bit (72) aligned; 297 298 if ^ master_item.given.potential_attributes then 299 if defaults.potential_attributes_given then do; 300 master_item.potential_attributes = defaults.potential_attributes; 301 master_item.given.potential_attributes = "1"b; 302 temp_potential_atts = defaults.potential_attributes; 303 end; 304 else temp_potential_atts = (72)"1"b; /* this missing default will cause an error later anyway */ 305 else temp_potential_atts = master_item.potential_attributes; 306 307 if ^ master_item.given.desired_attributes then 308 if defaults.attributes_given then do; 309 call compute_initial_attributes (temp_potential_atts, ""b, 310 defaults.attributes, master_item.desired_attributes); 311 312 master_item.given.desired_attributes = "1"b; 313 end; 314 315 if ^ master_item.given.potential_aim_range then 316 if defaults.aim_range_given then do; 317 master_item.potential_aim_range (*) = defaults.aim_range (*); 318 master_item.given.potential_aim_range = "1"b; 319 end; 320 321 if ^ master_item.given.charge_type then 322 if defaults.charge_type_given then do; 323 master_item.charge_type = get_charge_type (defaults.charge_type); 324 master_item.given.charge_type = "1"b; 325 end; 326 327 return; 328 end load_defaults; 329 330 /* ------------------------- */ 331 332 compute_initial_attributes: proc (potential_attributes, required_attributes, suggested_attributes, resultant_attributes); 333 334 dcl (potential_attributes, required_attributes, suggested_attributes) bit (72) aligned parameter, 335 resultant_attributes (4) bit (72) aligned parameter; 336 337 dcl choices bit (72) aligned; 338 339 resultant_attributes (*) = ""b; 340 resultant_attributes (1) = required_attributes; 341 342 do i = 1 to rtde.n_exclusion_specs; 343 choices = rtde.exclusion_specs (i) & potential_attributes; 344 345 temp_spec = choices & required_attributes; 346 /* see if any of this group have been constrained */ 347 348 if temp_spec = ""b then /* if not, then */ 349 temp_spec = choices & suggested_attributes; 350 /* see if any of this group have been suggested */ 351 352 if temp_spec ^= ""b then /* yes, one or the other */ 353 j = index (temp_spec, "1"b); /* choose one at random from suggestion or */ 354 /* constraint (ideally and usually, there is only one) */ 355 else j = index (choices, "1"b); /* no, choose one at random from RTDT */ 356 357 substr (resultant_attributes (1), j, 1) = "1"b; 358 end; 359 360 return; 361 362 end compute_initial_attributes; 363 364 /* ------------------------- */ 365 366 call term_rtdt (code); 367 return; 368 369 set_arbitrary_attributes: entry (resource_type, arg_potential_attributes, arbitrary_attributes, code); 370 371 dcl arg_potential_attributes bit (72) aligned parameter, 372 arbitrary_attributes (2) bit (72) aligned parameter; 373 374 dcl temp_relatts (4) bit (72) aligned; 375 376 rtdtp = null; 377 378 on cleanup call term_rtdt (0); 379 380 call scan_rtdt (resource_type, code); 381 if code ^= 0 then do; 382 call term_rtdt (0); 383 return; 384 end; 385 386 call compute_initial_attributes (arg_potential_attributes, arbitrary_attributes (2), 387 rtde.registration_defaults.attributes, temp_relatts); /* use protected attributes as constraints */ 388 389 arbitrary_attributes (1) = temp_relatts (1); /* return arbitrary attributes */ 390 391 call term_rtdt (code); 392 return; 393 394 lock_on_release: entry (resource_type, lock_sw, code); 395 396 dcl lock_sw bit (1) aligned; 397 398 rtdtp = null; 399 400 on cleanup call term_rtdt (0); 401 402 call scan_rtdt (resource_type, code); 403 if code ^= 0 then do; 404 call term_rtdt (0); 405 return; 406 end; 407 408 lock_sw = rtde.manual_clear; 409 410 call term_rtdt (code); 411 return; 412 413 default_attributes: entry (resource_type, default_attributes, code); 414 415 dcl default_attributes bit (72) aligned parameter; 416 417 rtdtp = null; 418 419 on cleanup call term_rtdt (0); 420 421 call scan_rtdt (resource_type, code); 422 if code ^= 0 then do; 423 call term_rtdt (0); 424 return; 425 end; 426 427 if rtde.registration_defaults.attributes_given then 428 default_attributes = rtde.registration_defaults.attributes; 429 else default_attributes = ""b; 430 431 call term_rtdt (code); 432 return; 433 434 canonicalize_name: entry (resource_type, input_name, output_name, code); 435 436 dcl (input_name, output_name) char (*) parameter; 437 438 dcl name_buffer char (32), 439 entryname_temp char (168); 440 441 dcl cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 442 443 dcl canonicalizer entry (char (*), char (*), pointer, fixed bin (35)) variable; 444 445 /* first, get rid of the canned one */ 446 447 if input_name = "scratch" then do; 448 output_name = "scratch"; 449 if output_name ^= "scratch" then code = error_table_$smallarg; 450 else code = 0; 451 return; 452 end; 453 454 if get_initial_ring_ () = 1 then 455 if get_group_id_ () = "Initializer.SysDaemon.z" then do; 456 output_name = input_name; /* cold boot environment, no cv_entry_ around */ 457 code = 0; 458 return; 459 end; 460 461 rtdtp = null; 462 463 on cleanup call term_rtdt (0); 464 465 call scan_rtdt (resource_type, code); 466 if code ^= 0 then do; 467 call term_rtdt (0); 468 return; 469 end; 470 471 if rtdt.version = RTDT_version_2 then 472 entryname_temp = ""; /* no canon proc in a version 2 RTDT */ 473 else entryname_temp = rtde.precanon_proc; 474 call term_rtdt (code); 475 476 if entryname_temp = "" then name_buffer = input_name; 477 /* no processing desired */ 478 479 else do; 480 canonicalizer = cv_entry_ (rtrim (entryname_temp), null, code); 481 /* if you give the poor dolt trailing blanks he has a breakdown */ 482 if code ^= 0 then return; 483 484 call canonicalizer (input_name, name_buffer, null, code); 485 if code ^= 0 then return; 486 end; 487 488 output_name = name_buffer; 489 490 if output_name ^= name_buffer then code = error_table_$smallarg; 491 else code = 0; 492 493 return; 494 495 test: entry (new_sysdir); 496 497 dcl new_sysdir char (*) parameter; 498 499 if new_sysdir = "" then sysdir = ">system_control_1"; 500 else sysdir = new_sysdir; 501 return; 502 503 scan_rtdt: proc (resource_type_arg, code); 504 505 dcl (resource_type_arg char (*), 506 code fixed bin (35)) parameter; 507 508 dcl resource_type char (32), 509 i fixed bin, 510 found bit (1) aligned; 511 512 dcl hcs_$initiate ext entry (char (*), char (*), char (*), fixed bin, fixed bin, pointer, fixed bin (35)), 513 sub_err_ ext entry options (variable); 514 515 dcl dirname char (168), 516 ename char (32); 517 518 dirname = sysdir; 519 ename = "rtdt"; 520 521 if get_initial_ring_ () = 1 then 522 if get_group_id_ () = "Initializer.SysDaemon.z" then do; /* use the RTDT on the tape to prevent */ 523 dirname = ">system_library_1"; /* linkage faults referencing >sss>cv_entry_ */ 524 ename = "default_rtmf.rtdt"; 525 end; 526 527 call hcs_$initiate (dirname, ename, "", 0, 0, rtdtp, code); 528 if rtdtp = null then do; 529 call sub_err_ (code, "resource_info_", "c", null, 0, "Cannot initiate ^a>^a", dirname, ename); 530 return; 531 end; 532 533 if (rtdt.version ^= RTDT_version_2) & (rtdt.version ^= RTDT_version_3) then do; 534 code = error_table_$unimplemented_version; 535 return; 536 end; 537 code = 0; 538 539 resource_type = resource_type_arg; 540 541 do i = 1 to 2; /* two chances to chase down a synonym */ 542 found = ""b; 543 544 do rtdep = pointer (rtdt.first_resource, rtdt.rtdt_area) 545 repeat (pointer (rtde.next_resource, rtdt.rtdt_area)) 546 while (rtdep ^= null); 547 548 if rtde.valid then 549 if rtde.name = resource_type then 550 if ^rtde.is_synonym then return; 551 else do; 552 resource_type = rtde.syn_to; 553 found = "1"b; 554 end; 555 end; 556 557 if ^found then do; 558 code = error_table_$resource_type_unknown; 559 return; 560 end; 561 end; 562 563 code = error_table_$improper_data_format; 564 return; 565 end scan_rtdt; 566 567 get_charge_type: proc (number) returns (char (32)); 568 569 dcl number fixed bin; 570 571 cttp = pointer (rtdt.charge_type_table_ptr, rtdt.rtdt_area); 572 573 return (charge_type_table.charge_types (number)); 574 end get_charge_type; 575 576 term_rtdt: proc (code); 577 578 dcl code fixed bin (35) parameter; 579 580 dcl hcs_$terminate_noname ext entry (pointer, fixed bin (35)); 581 582 if rtdtp ^= null then 583 call hcs_$terminate_noname (rtdtp, code); 584 rtdtp = null; 585 586 return; 587 end term_rtdt; 588 end resource_info_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0807.1 resource_info_.pl1 >spec>install>1111>resource_info_.pl1 30 1 11/20/79 2015.6 rtdt.incl.pl1 >ldd>include>rtdt.incl.pl1 1-4 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 32 3 02/13/79 1715.0 resource_control_desc.incl.pl1 >ldd>include>resource_control_desc.incl.pl1 34 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. DEVICE_TYPE 000100 constant char(32) initial array packed unaligned dcl 4-18 ref 97 97 156 156 RTDT_version_2 constant fixed bin(17,0) initial dcl 1-64 ref 471 533 RTDT_version_3 constant fixed bin(17,0) initial dcl 1-64 ref 533 VOLUME_TYPE 000000 constant char(32) initial array packed unaligned dcl 4-25 ref 125 125 153 153 aim_range 5 based bit(72) array level 2 dcl 293 ref 317 aim_range_given 0(02) based bit(1) level 3 packed packed unaligned dcl 293 ref 315 arbitrary_attributes parameter bit(72) array dcl 371 set ref 369 386* 389* arg_potential_attributes parameter bit(72) dcl 371 set ref 369 386* attributes 605 based bit(72) level 4 in structure "rtde" dcl 1-16 in procedure "resource_info_" set ref 386* 427 attributes 3 based bit(72) level 2 in structure "defaults" dcl 293 in procedure "load_defaults" set ref 309* attributes_given 602(01) based bit(1) level 5 in structure "rtde" packed packed unaligned dcl 1-16 in procedure "resource_info_" set ref 427 attributes_given 0(01) based bit(1) level 3 in structure "defaults" packed packed unaligned dcl 293 in procedure "load_defaults" ref 307 canonicalizer 000216 automatic entry variable dcl 443 set ref 480* 484 charge_type 11 based fixed bin(17,0) level 2 in structure "defaults" dcl 293 in procedure "load_defaults" set ref 323* charge_type 266(10) based bit(1) level 3 in structure "master_item" packed packed unaligned dcl 230 in procedure "resource_info_" set ref 321 324* charge_type 255 based char(32) level 2 in structure "master_item" dcl 230 in procedure "resource_info_" set ref 323* charge_type_given 0(03) based bit(1) level 3 packed packed unaligned dcl 293 ref 321 charge_type_table based structure level 1 dcl 1-11 charge_type_table_ptr 37 based offset level 2 dcl 1-3 ref 571 charge_types 1 based char(32) array level 2 dcl 1-11 ref 573 choices 000270 automatic bit(72) dcl 337 set ref 343* 345 348 355 cleanup 000100 stack reference condition dcl 23 ref 44 61 84 112 139 171 199 247 378 400 419 463 code parameter fixed bin(35,0) dcl 505 in procedure "scan_rtdt" set ref 503 527* 529* 534* 537* 558* 563* code parameter fixed bin(35,0) dcl 38 in procedure "resource_info_" set ref 36 46* 47 54* 57 63* 64 72* 76 86* 87 95* 101* 105 114* 115 123* 129* 133 141* 142 151* 160* 165 173* 174 183* 186 201* 202 210* 222* 225 241* 260* 261 273* 366* 369 380* 381 391* 394 402* 403 410* 413 421* 422 431* 434 449* 450* 457* 465* 466 474* 480* 482 484* 485 490* 491* code parameter fixed bin(35,0) dcl 578 in procedure "term_rtdt" set ref 576 582* cttp 000112 automatic pointer dcl 1-70 set ref 571* 573 cv_entry_ 000102 constant entry external dcl 441 ref 480 default_arg parameter fixed bin(17,0) dcl 167 set ref 165 180* default_attributes parameter bit(72) dcl 415 set ref 413 427* 429* default_flags 602 based structure level 4 in structure "rtde" dcl 1-16 in procedure "resource_info_" default_flags based structure level 2 in structure "defaults" dcl 293 in procedure "load_defaults" default_ptr parameter pointer dcl 293 ref 291 298 300 302 307 309 315 317 321 323 default_time 62 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 180 defaults based structure level 1 dcl 293 desired_attributes 27 based bit(72) array level 2 in structure "master_item" dcl 230 in procedure "resource_info_" set ref 284* 309* desired_attributes 266(03) based bit(1) level 3 in structure "master_item" packed packed unaligned dcl 230 in procedure "resource_info_" set ref 283 285* 307 312* dim builtin function dcl 191 ref 209 dirname 000336 automatic char(168) packed unaligned dcl 515 set ref 518* 523* 527* 529* dtypex parameter fixed bin(17,0) dcl 78 set ref 76 97* 97* 101 ename 000410 automatic char(32) packed unaligned dcl 515 set ref 519* 524* 527* 529* entryname_temp 000144 automatic char(168) packed unaligned dcl 438 set ref 471* 473* 476 480 480 error_table_$device_type_unknown 000066 external static fixed bin(35,0) dcl 79 ref 101 error_table_$improper_data_format 000072 external static fixed bin(35,0) dcl 191 ref 563 error_table_$resource_type_unknown 000100 external static fixed bin(35,0) dcl 235 ref 160 273 558 error_table_$smallarg 000076 external static fixed bin(35,0) dcl 191 ref 210 449 490 error_table_$unimplemented_version 000074 external static fixed bin(35,0) dcl 191 ref 241 534 error_table_$volume_type_unknown 000070 external static fixed bin(35,0) dcl 107 ref 129 exclusion_specs 432 based bit(72) array level 3 dcl 1-16 ref 343 first 000121 automatic fixed bin(17,0) dcl 232 set ref 250* 254* 256 first_resource 40 based offset level 2 dcl 1-3 ref 544 fixed_info based structure level 2 dcl 1-16 flags 61 based structure level 3 packed packed unaligned dcl 1-16 found 000335 automatic bit(1) dcl 508 set ref 542* 553* 557 get_group_id_ 000064 constant entry external dcl 27 ref 454 521 get_initial_ring_ 000062 constant entry external dcl 27 ref 454 521 given 266 based structure level 2 dcl 230 hcs_$initiate 000104 constant entry external dcl 512 ref 527 hcs_$terminate_noname 000110 constant entry external dcl 580 ref 582 i 000114 automatic fixed bin(17,0) dcl 191 in procedure "resource_info_" set ref 217* 218* 269* 269* 272 278 278 342* 343* i 000334 automatic fixed bin(17,0) dcl 508 in procedure "scan_rtdt" set ref 541* input_name parameter char packed unaligned dcl 436 set ref 434 447 456 476 484* is_synonym 61(05) based bit(1) level 4 packed packed unaligned dcl 1-16 ref 69 92 120 148 548 is_volume 61(01) based bit(1) level 4 packed packed unaligned dcl 1-16 ref 52 147 is_volume_arg parameter bit(1) packed unaligned dcl 38 set ref 36 52* 133 147* 153 item 2 based structure array level 2 dcl 3-6 set ref 258 j 000115 automatic fixed bin(17,0) dcl 191 set ref 215* 218 219* 219 352* 355* 357 last 000122 automatic fixed bin(17,0) dcl 232 set ref 251* 254* 256 lbound builtin function dcl 191 ref 215 lock_sw parameter bit(1) dcl 396 set ref 394 408* manual_clear 61(02) based bit(1) level 4 packed packed unaligned dcl 1-16 ref 408 master_item based structure level 1 dcl 230 mates 624 based char(32) array level 2 dcl 1-16 ref 218 mates_arg parameter char array packed unaligned dcl 188 set ref 186 209 215 218* max_time 62(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 181 maxnum_arg parameter fixed bin(17,0) dcl 167 set ref 165 179* mi_ptr 000116 automatic pointer dcl 232 set ref 258* 266 283 284 284 285 298 300 301 305 307 309 312 315 317 318 321 323 324 n_exclusion_specs 64 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 342 n_items 1 based fixed bin(17,0) level 2 dcl 3-6 ref 251 n_mates 64(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 207 269 278 278 n_mates_arg parameter fixed bin(17,0) dcl 188 set ref 186 207* 209 217 n_subtypes 65 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 269 272 name 1 based char(32) level 3 dcl 1-16 ref 70 93 121 149 548 name_buffer 000134 automatic char(32) packed unaligned dcl 438 set ref 476* 484* 488 490 new_sysdir parameter char packed unaligned dcl 497 ref 495 499 500 next_resource based offset level 3 dcl 1-16 ref 555 null builtin function dcl 23 ref 42 59 82 110 137 169 197 245 376 398 417 461 480 480 484 484 528 529 529 544 582 584 number parameter fixed bin(17,0) dcl 569 ref 567 573 output_name parameter char packed unaligned dcl 436 set ref 434 448* 449 456* 488* 490 pointer builtin function dcl 23 ref 544 555 571 potential_aim_range 266(04) based bit(1) level 3 in structure "master_item" packed packed unaligned dcl 230 in procedure "resource_info_" set ref 315 318* potential_aim_range 37 based bit(72) array level 2 in structure "master_item" dcl 230 in procedure "resource_info_" set ref 317* potential_attributes parameter bit(72) dcl 334 in procedure "compute_initial_attributes" ref 332 343 potential_attributes 266(02) based bit(1) level 3 in structure "master_item" packed packed unaligned dcl 230 in procedure "resource_info_" set ref 298 301* potential_attributes 21 based bit(72) level 2 in structure "master_item" dcl 230 in procedure "resource_info_" set ref 284* 300* 305 potential_attributes 1 based bit(72) level 2 in structure "defaults" dcl 293 in procedure "load_defaults" ref 300 302 potential_attributes_given based bit(1) level 3 packed packed unaligned dcl 293 ref 298 precanon_proc 21 based char(64) level 3 dcl 1-16 ref 473 primary_type parameter char packed unaligned dcl 80 set ref 57 69* 70* 76 92* 93* 97 105 120* 121* 125 133 148* 149* 153 156 process_limit 61(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-16 ref 179 registration_defaults 602 based structure level 3 dcl 1-16 set ref 281 281 required_attributes parameter bit(72) dcl 334 ref 332 340 345 resource_desc_ptr parameter pointer dcl 3-72 ref 225 240 251 258 resource_desc_version_1 constant fixed bin(17,0) initial dcl 3-75 ref 240 resource_descriptions based structure level 1 dcl 3-6 resource_no parameter fixed bin(17,0) dcl 227 ref 225 249 254 resource_type 000324 automatic char(32) packed unaligned dcl 508 in procedure "scan_rtdt" set ref 539* 548 552* resource_type parameter char packed unaligned dcl 38 in procedure "resource_info_" set ref 36 46* 57 63* 76 86* 105 114* 133 141* 165 173* 186 201* 225 260* 266 369 380* 394 402* 413 421* 434 465* resource_type_arg parameter char packed unaligned dcl 505 ref 503 539 resultant_attributes parameter bit(72) array dcl 334 set ref 332 339* 340* 357* rno 000120 automatic fixed bin(17,0) dcl 232 set ref 256* 258* rtde based structure level 1 dcl 1-16 rtdep 000106 automatic pointer dcl 1-70 set ref 52 69 69 70 92 92 93 120 120 121 147 148 148 149 179 180 181 207 218 269 269 272 278 278 281 281 342 343 386 408 427 427 473 544* 544* 548 548 548 552* 555 rtdt based structure level 1 dcl 1-3 rtdt_area 42 based area level 2 dcl 1-3 ref 544 555 571 rtdtp 000110 automatic pointer dcl 1-70 set ref 42* 59* 82* 110* 137* 169* 197* 245* 376* 398* 417* 461* 471 527* 528 533 533 544 544 555 571 571 582 582* 584* rtypex parameter fixed bin(17,0) dcl 135 set ref 133 153* 153* 156* 156* 160 sub_err_ 000106 constant entry external dcl 512 ref 529 subtype parameter char packed unaligned dcl 227 ref 225 268 269 subtype_defaults based structure array level 3 dcl 1-16 set ref 278 278 subtype_name based char(32) array level 3 dcl 1-16 ref 269 subtypes based structure array level 2 dcl 1-16 suggested_attributes parameter bit(72) dcl 334 ref 332 348 syn_to 11 based char(32) level 3 dcl 1-16 ref 69 92 120 148 552 sysdir 000010 internal static char(168) initial packed unaligned dcl 23 set ref 499* 500* 518 temp_potential_atts 000260 automatic bit(72) dcl 296 set ref 302* 304* 305* 309* temp_relatts 000124 automatic bit(72) array dcl 374 set ref 386* 389 temp_spec 000123 automatic bit(36) dcl 237 set ref 345* 348 348* 352 352 time_arg parameter fixed bin(17,0) dcl 167 set ref 165 181* type based char(32) level 2 dcl 230 set ref 266* valid 61 based bit(1) level 4 packed packed unaligned dcl 1-16 ref 548 version 35 based fixed bin(17,0) level 2 dcl 1-3 ref 471 533 533 version_no based fixed bin(17,0) level 2 dcl 3-6 ref 240 vtypex parameter fixed bin(17,0) dcl 108 set ref 105 125* 125* 129 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CONSOLE_DTYPEX internal static fixed bin(17,0) initial dcl 4-31 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 MCA_DTYPEX internal static fixed bin(17,0) initial dcl 4-36 NUM_QUALIFIERS internal static fixed bin(17,0) initial array dcl 4-22 N_CHARGE_TYPES automatic fixed bin(17,0) dcl 1-64 N_MATES automatic fixed bin(17,0) dcl 1-64 N_SUBTYPES automatic fixed bin(17,0) dcl 1-64 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 RTDT_area_len automatic fixed bin(18,0) dcl 1-64 Resource_count automatic fixed bin(17,0) dcl 3-78 SPECIAL_DTYPEX internal static fixed bin(17,0) initial dcl 4-35 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 reservation_description based structure level 1 dcl 3-55 resource_res_ptr automatic pointer dcl 3-72 resource_res_version_1 internal static fixed bin(17,0) initial dcl 3-75 NAMES DECLARED BY EXPLICIT CONTEXT. canonicalize_name 002665 constant entry external dcl 434 compute_initial_attributes 003433 constant entry internal dcl 332 ref 284 309 386 default_attributes 002534 constant entry external dcl 413 defaults 001737 constant entry external dcl 225 get_charge_type 004057 constant entry internal dcl 567 ref 323 get_dtypex 000576 constant entry external dcl 76 get_primary_type 000437 constant entry external dcl 57 get_rtypex 001150 constant entry external dcl 133 get_type 000320 constant entry external dcl 36 get_vtypex 000761 constant entry external dcl 105 limits 001377 constant entry external dcl 165 load_defaults 003301 constant entry internal dcl 291 ref 278 281 lock_on_release 002416 constant entry external dcl 394 mates 001525 constant entry external dcl 186 resource_info_ 000306 constant entry external dcl 13 scan_rtdt 003543 constant entry internal dcl 503 ref 46 63 86 114 141 173 201 260 380 402 421 465 set_arbitrary_attributes 002262 constant entry external dcl 369 term_rtdt 004100 constant entry internal dcl 576 ref 44 48 54 61 65 72 84 88 95 112 116 123 139 143 151 171 175 183 199 203 211 222 247 262 274 366 378 382 391 400 404 410 419 423 431 463 467 474 test 003245 constant entry external dcl 495 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 258 278 278 281 281 hbound builtin function ref 97 125 153 156 index builtin function ref 352 355 rtrim builtin function ref 480 480 substr builtin function ref 357 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4566 4700 4134 4576 Length 5236 4134 112 321 431 52 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME resource_info_ 448 external procedure is an external procedure. on unit on line 44 72 on unit on unit on line 61 72 on unit on unit on line 84 72 on unit on unit on line 112 72 on unit on unit on line 139 72 on unit on unit on line 171 72 on unit on unit on line 199 72 on unit on unit on line 247 72 on unit load_defaults internal procedure shares stack frame of external procedure resource_info_. compute_initial_attributes internal procedure shares stack frame of external procedure resource_info_. on unit on line 378 72 on unit on unit on line 400 72 on unit on unit on line 419 72 on unit on unit on line 463 72 on unit scan_rtdt internal procedure shares stack frame of external procedure resource_info_. get_charge_type internal procedure shares stack frame of external procedure resource_info_. term_rtdt 70 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 sysdir resource_info_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME resource_info_ 000106 rtdep resource_info_ 000110 rtdtp resource_info_ 000112 cttp resource_info_ 000114 i resource_info_ 000115 j resource_info_ 000116 mi_ptr resource_info_ 000120 rno resource_info_ 000121 first resource_info_ 000122 last resource_info_ 000123 temp_spec resource_info_ 000124 temp_relatts resource_info_ 000134 name_buffer resource_info_ 000144 entryname_temp resource_info_ 000216 canonicalizer resource_info_ 000260 temp_potential_atts load_defaults 000270 choices compute_initial_attributes 000324 resource_type scan_rtdt 000334 i scan_rtdt 000335 found scan_rtdt 000336 dirname scan_rtdt 000410 ename scan_rtdt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry pointer_hard index_bs_1_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_entry_ get_group_id_ get_initial_ring_ hcs_$initiate hcs_$terminate_noname sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$device_type_unknown error_table_$improper_data_format error_table_$resource_type_unknown error_table_$smallarg error_table_$unimplemented_version error_table_$volume_type_unknown LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000305 13 000313 36 000314 42 000340 44 000342 46 000367 47 000405 48 000407 49 000416 52 000417 54 000424 55 000432 57 000433 59 000462 61 000464 63 000511 64 000527 65 000531 66 000540 69 000541 70 000554 72 000562 74 000570 76 000571 82 000621 84 000623 86 000650 87 000666 88 000670 89 000677 92 000700 93 000713 95 000721 97 000727 99 000746 101 000751 103 000756 105 000757 110 001004 112 001006 114 001033 115 001051 116 001053 117 001062 120 001063 121 001076 123 001104 125 001112 127 001132 129 001135 131 001142 133 001143 137 001175 139 001177 141 001224 142 001242 143 001244 144 001253 147 001254 148 001261 149 001273 151 001301 153 001307 155 001334 156 001340 158 001360 160 001363 163 001371 165 001372 169 001415 171 001417 173 001444 174 001462 175 001464 176 001473 179 001474 180 001502 181 001505 183 001511 184 001517 186 001520 197 001550 199 001552 201 001577 202 001615 203 001617 204 001626 207 001627 209 001635 210 001646 211 001651 212 001660 215 001661 217 001663 218 001673 219 001720 220 001721 222 001723 223 001731 225 001732 240 001762 241 001767 242 001772 245 001773 247 001775 249 002022 250 002025 251 002027 252 002033 254 002034 256 002036 258 002045 260 002053 261 002070 262 002072 263 002101 266 002102 268 002111 269 002117 270 002152 272 002154 273 002161 274 002164 275 002173 278 002174 281 002211 283 002216 284 002222 285 002241 287 002244 366 002246 367 002254 369 002255 376 002300 378 002302 380 002327 381 002345 382 002347 383 002356 386 002357 389 002376 391 002403 392 002411 394 002412 398 002434 400 002436 402 002463 403 002501 404 002503 405 002512 408 002513 410 002521 411 002527 413 002530 417 002552 419 002554 421 002601 422 002617 423 002621 424 002630 427 002631 429 002644 431 002651 432 002657 434 002660 447 002715 448 002724 449 002731 450 002741 451 002742 454 002743 456 002770 457 003000 458 003001 461 003002 463 003004 465 003031 466 003047 467 003051 468 003060 471 003061 473 003071 474 003075 476 003103 480 003116 482 003165 484 003170 485 003220 488 003222 490 003230 491 003240 493 003241 495 003242 499 003260 500 003274 501 003300 291 003301 298 003303 300 003313 301 003320 302 003322 303 003325 304 003326 305 003331 307 003334 309 003343 312 003362 315 003365 317 003375 318 003401 321 003403 323 003413 324 003430 327 003432 332 003433 339 003435 340 003454 342 003461 343 003473 345 003504 348 003510 352 003517 355 003527 357 003534 358 003540 360 003542 503 003543 518 003554 519 003560 521 003563 523 003607 524 003612 527 003615 528 003660 529 003664 530 003746 533 003747 534 003755 535 003761 537 003762 539 003764 541 003771 542 003777 544 004000 548 004012 552 004026 553 004031 555 004033 557 004041 558 004043 559 004047 561 004050 563 004052 564 004056 567 004057 571 004061 573 004066 576 004077 582 004105 584 004123 586 004126 ----------------------------------------------------------- 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