COMPILATION LISTING OF SEGMENT disk_init 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 0959.1 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 14 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 15 disk_init: 16 procedure (pvtx, confp); /* here to init disk routines */ 17 18 /* DISK_INIT - Initialize Data Bases for Disk DIMs. 19* recoded 6/19/70 - Noel I. Morris 20* revised 8/17/73 by N. I. Morris for DSU-191 and RSR feature 21* revised 3/27/75 by Noel I. Morris for new storage system 22* revised 4/79 by Michael R. Jordan for MSS0500/1. 23* revised 4/80 by Michael R. Jordan for dual controller MSU0500/1 subsystems. 24* modified June 1981 by C. Hornig for new I/O. 25* Modified February 1982 by C. Hornig for MR10 io_manager. 26* modified March 1982 by J. Bongiovanni for better config card validation 27* modified October 1983 by E. N. Kittlitz to not read off end of dsk card 28* 29* Modified March 1984 by T. Oke to initialize system wide free_q. 30* Modified April 1984 by T. Oke to change channel table initialization 31* algorithm and permit up to dskdcl_chans_per_subsys channels per 32* sub-system. 33* Modified April 1984 by T. Oke to add use of syserr_constants include file. 34* 35* Modified May 1984 by T. Oke to add adaptive optimization initialization. 36* Modified September 1984 by Chris Jones to correct error message. 37* Modified Nov 26, 1984 by Fawcett to support dev 0 and fips. 38* Modified Jan 1985 by Paul Farley to correct a bug in channel counting. 39* Modified Jun 1985 by Paul Farley to correct a bug in checking for 40* shared spindle when dev_array(i) is zero. 41* Modified July 1985 by Paul Farley to include a fix for the channel pick loop 42* done by Tom Oke. 43**/ 44 45 /****^ HISTORY COMMENTS: 46* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 47* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 48* Device zero support 49* for FIPS. 50* 2) change(86-01-20,Fawcett), approve(86-04-11,MCR7383), 51* audit(86-07-07,GDixon), install(86-07-17,MR12.0-1097): 52* Add support for 512_WORD_IO devices, 3380 and 3390. 53* 3) change(86-06-05,GJohnson), approve(86-06-05,MCR7387), 54* audit(86-06-10,Martinson), install(86-07-17,MR12.0-1091): 55* Correct error message documentation. 56* END HISTORY COMMENTS */ 57 58 dcl pvtx fixed bin parameter; /* index to PVT entry for device */ 59 dcl confp ptr parameter; /* config card ptr */ 60 61 dcl sx fixed bin; /* disk subsystem index */ 62 dcl type fixed bin (8); /* disk device type */ 63 dcl name char (4) aligned; /* disk device name */ 64 dcl chx fixed bin (35); /* io_manager index for channel */ 65 dcl idx fixed bin (12); /* channel ID index for disk_interrupt */ 66 dcl i fixed bin; /* logical unit number index */ 67 dcl j fixed bin; /* configuration card unit index */ 68 dcl k fixed bin; /* .. */ 69 dcl ci fixed bin; 70 dcl devt fixed bin; /* device type for this model number */ 71 dcl dev_array (0:63) fixed bin; /* device types indexed by device # */ 72 dcl rcode fixed bin (35); /* error code */ 73 dcl base bit (24) aligned; /* absolute address of DCW list */ 74 dcl fips_disk bit (1); 75 dcl chan_array (dskdcl_chans_per_subsys) char (8) aligned; 76 /* names of channels */ 77 78 /* Channel table. Indicates start channel and count on each adaptor. */ 79 80 dcl adaptor_index fixed bin; 81 dcl adaptor_count fixed bin; 82 83 dcl 1 adaptor (4), /* Can be 4 LA's */ 84 2 channel_start fixed bin, 85 2 chantab_index fixed bin, 86 2 channel_count fixed bin, 87 2 channels_used fixed bin; 88 89 dcl 1 d like devtab; 90 91 /* as dskdcl's number of IO types is increased - so increase the hbound */ 92 93 dcl response (0:6) float bin (27) static options (constant) initial ( 94 /* */ 95 100.0, /* PAGE_READ */ 96 50000.0, /* PAGE_WRITE */ 97 20.0, /* VTOC_READ */ 98 50.0, /* VTOC_WRITE */ 99 1.0, /* TEST */ 100 200.0, /* BOOTLOAD_READ */ 101 100000.0 /* BOOTLOAD_WRITE */ 102 ); 103 104 dcl ME char (16) static options (constant) init ("disk_init"); 105 106 dcl absadr ext entry (ptr, fixed bin (35)) returns (fixed bin (24)); 107 dcl config_$find_2 entry (char (4), char (4) aligned, pointer); 108 dcl dctl$disk_inter entry (bit (36) aligned, fixed bin (3), bit (36) aligned); 109 dcl syserr ext entry options (variable); 110 111 dcl error_table_$io_not_configured 112 fixed bin (35) ext static; 113 114 dcl (addr, addrel, bin, bit, clock, currentsize, divide, float, hbound, mod, null, ptr, rel, size, 115 substr, unspec) builtin; 116 117 prph_dsk_cardp = confp; 118 disksp = addr (disk_seg$); /* Get pointer to disk segment. */ 119 120 if disk_data.free_offset = "0"b then do; /* If never initialized ... */ 121 disk_data.free_offset = bit (bin (currentsize (disk_data), 18)); 122 /* Set offset of first disktab structure. */ 123 statp = addr (disksp -> disk_data.status_mask); 124 /* Get pointer to mask for disk status. */ 125 status.power = "1"b; /* Set up mask to detect error conditions. */ 126 status.major = "1111"b; 127 status.channel_stat = "111"b; 128 status.central_stat = "111"b; 129 130 /* Thread all queue entries into the free list. */ 131 132 unspec (disk_data.free_q) = "0"b; /* clear stats */ 133 do i = 1 to disk_data.free_q_size - 1; /* Step through all queue entries. */ 134 disk_data.free_q_entries (i).next = rel (addr (disk_data.free_q_entries (i + 1))); 135 disk_data.free_q_entries (i + 1).prev = rel (addr (disk_data.free_q_entries (i))); 136 end; /* Make each entry point to the next one. */ 137 138 disk_data.free_q.head = rel (addr (disk_data.free_q_entries (1))); 139 /* The head of the list is the first entry. */ 140 disk_data.free_q.tail = rel (addr (disk_data.free_q_entries (disk_data.free_q_size))); 141 /* The tail of the list is the last entry. */ 142 disk_data.lock = ""b; /* clear the lock */ 143 144 /* Initialize system wide loading information. */ 145 146 unspec (disk_data.sys_info) = "0"b; 147 disk_data.sys_info (PAGE_READ).max_depth = 6.0; 148 disk_data.sys_info (PAGE_READ).depth_map = rel (addr (disk_data.sys_info (PAGE_READ).depth)); 149 150 disk_data.sys_info (PAGE_WRITE).max_depth = float (disk_data.free_q_size) * 0.75; 151 disk_data.sys_info (PAGE_WRITE).depth_map = rel (addr (disk_data.sys_info (PAGE_WRITE).depth)); 152 153 disk_data.sys_info (VTOC_READ).max_depth = 6.0; 154 disk_data.sys_info (VTOC_READ).depth_map = rel (addr (disk_data.sys_info (VTOC_READ).depth)); 155 156 disk_data.sys_info (VTOC_WRITE).max_depth = 12.0; 157 disk_data.sys_info (VTOC_WRITE).depth_map = rel (addr (disk_data.sys_info (VTOC_WRITE).depth)); 158 159 disk_data.sys_info (BOOTLOAD_READ).max_depth = 6.0; 160 disk_data.sys_info (BOOTLOAD_READ).depth_map = rel (addr (disk_data.sys_info (BOOTLOAD_READ).depth)); 161 162 disk_data.sys_info (BOOTLOAD_WRITE).max_depth = 12.0; 163 disk_data.sys_info (BOOTLOAD_WRITE).depth_map = rel (addr (disk_data.sys_info (BOOTLOAD_WRITE).depth)); 164 165 disk_data.sys_info (TEST).max_depth = 1.0; 166 disk_data.sys_info (TEST).depth_map = rel (addr (disk_data.sys_info (TEST).depth)); 167 168 /* Initialize stagnation time limit for optimizer */ 169 170 disk_data.stagnate_time = 5000000; /* 5 seconds */ 171 disk_data.max_depth_reset_time = clock (); 172 end; 173 174 /* Initialize sub-system information. */ 175 176 pvt_arrayp = addr (pvt$array); /* Get pointer to PVT array */ 177 pvtep = addr (pvt_array (pvtx)); /* Get pointer to PVT entry for this device. */ 178 179 type = pvte.device_type; /* Extract device type from PVT entry. */ 180 name = pvte.devname; /* Get name of disk subsytem. */ 181 182 do sx = 1 to disk_data.subsystems while (name ^= disk_data.name (sx)); 183 end; /* Look for this subsystem already initialized. */ 184 185 pvtdip = addr (pvte.dim_info); /* Get pointer to dim_info in PVT entry. */ 186 pvtdi.sx = sx; /* Put sx where disk dim can find it */ 187 188 pvtdi.usable_sect_per_cyl = divide (sect_per_cyl (type), sect_per_rec (type), 17, 0) * sect_per_rec (type); 189 /* Compute # of usable sectors on disk cylinder. */ 190 pvtdi.unused_sect_per_cyl = sect_per_cyl (type) - pvtdi.usable_sect_per_cyl; 191 /* Compute # of unused sectors at end of cylinder. */ 192 193 if sx > disk_data.subsystems then do; /* If not already initialized ... */ 194 disk_data.subsystems = sx; /* Update count of subsystems. */ 195 disk_data.name (sx) = name; 196 disk_data.offset (sx) = disk_data.free_offset; 197 /* Set pointer to place for disk data base. */ 198 199 diskp = ptr (disksp, disk_data.free_offset); /* Get pointer to disk data base. */ 200 call init_disk_database; /* Set up disktab structure. */ 201 202 disk_data.free_offset = rel (addrel (diskp, currentsize (disktab) + disktab.nchan * size (chantab))); 203 end; /* Update first unused location in segment. */ 204 205 else /* If already initialized ... */ 206 diskp = ptr (disksp, disk_data.offset (sx)); /* Get pointer to disk data base. */ 207 208 disktab.pvtx (pvte.logical_area_number) = pvtx; /* Save PVT entry index in device table. */ 209 210 return; 211 212 IS_FIPS: 213 procedure () returns (bit (1)); 214 dcl groupx fixed bin; 215 dcl i fixed bin; 216 217 do groupx = 1 to hbound (prph_dsk_card.group, 1) while (prph_dsk_card.group (groupx).model ^= -1); 218 if prph_dsk_card.group (groupx).model ^= 0 then do; 219 do i = 1 to config_data_$disk_drive_model_names.count; 220 if config_data_$disk_drive_model_names.names (i).model = prph_dsk_card.group (groupx).model then 221 return (config_data_$disk_drive_model_names.names (i).device_0_valid); 222 end; 223 call syserr (CRASH, "^a: Disk model ^d not found in config_data_.", ME, 224 prph_dsk_card.group (groupx).model); 225 end; 226 end; 227 call syserr (CRASH, "^a: No valid disk models found on PRPH ^a card.", ME, prph_dsk_card.name); 228 end IS_FIPS; 229 230 init_disk_database: 231 procedure; 232 233 disktab.abs_mem_addr = absadr (addr (disktab), rcode); 234 if rcode ^= 0 then 235 goto absadr_error; 236 237 /* Find maximum number of devices in disk subsystem. */ 238 239 call check_config_fields (prph_dsk_cardp, addr (prph_dsk_card.group)); 240 241 fips_disk = IS_FIPS (); 242 if fips_disk then 243 disktab.first_dev = 0; 244 else disktab.first_dev = 1; 245 246 j = disktab.first_dev; 247 248 do i = 1 to hbound (prph_dsk_card.group, 1) while (prph_dsk_card.group (i).model ^= -1); 249 /* Count disk drives. */ 250 call check_config_fields (prph_dsk_cardp, addr (prph_dsk_card.group (i).ndrives)); 251 /* Make sure fields are there */ 252 if (j + prph_dsk_card.group (i).ndrives - disktab.first_dev) > hbound (dev_array, 1) then 253 /* Too many drives. */ 254 call syserr (CRASH, "^a: Too many devices configured for ^a. Max device is ^d.", ME, name, 255 hbound (dev_array, 1)); 256 devt = prph_dsk_card.group (i).model; 257 if devt ^= 0 then do; 258 do devt = 1 to hbound (MODEL, 1) while (MODEL (devt) ^= prph_dsk_card.group (i).model); 259 end; 260 if devt > hbound (MODEL, 1) then /* Bad device model number. */ 261 call syserr (CRASH, "^a: Unknown model number ^d on PRPH ^a", ME, prph_dsk_card.group (i).model, 262 name); 263 devt = MODELX (devt); /* Get device type. */ 264 end; 265 do k = j to j + prph_dsk_card.group (i).ndrives - 1; 266 dev_array (k) = devt; /* This can be zero! => no device present. */ 267 end; 268 j = j + prph_dsk_card.group (i).ndrives; 269 end; 270 271 disktab.last_dev, disktab.dev_index = j - 1; /* set max drive and scan index */ 272 273 /* Setup master optimization information. */ 274 275 unspec (d.opt_info) = "0"b; 276 do i = 0 to MAX_IO_TYPE; 277 sysp = addr (disk_data.sys_info (i)); 278 d.opt_info (i).sys_info = rel (addr (sys_info.fraction)); 279 if sys_info.max_depth > 1.0 then do; 280 d.opt_info (i).slope = (response (i) - 1.0) / (sys_info.max_depth - 1.0); 281 d.opt_info (i).intercept = ((response (i) * sys_info.max_depth) - 1.0) / (sys_info.max_depth - 1.0); 282 end; 283 else do; 284 d.opt_info (i).slope = 0.0; 285 d.opt_info (i).intercept = 1.0e10; 286 end; 287 end; 288 289 /* Analyze device configuration for errors. */ 290 291 do i = disktab.first_dev to disktab.last_dev; /* Look at each device configured. */ 292 dp = addr (disktab.devtab (i)); 293 if dev_array (i) > 0 then 294 if shared_spindle (dev_array (i)) then /* This guy has a buddy. */ 295 if mod (i, 2) ^= 0 then do; /* First of a pair. */ 296 if i >= disktab.last_dev then do; 297 /* If this is the last one, the next is missing. */ 298 MISSING_BUDDY: 299 call syserr (CRASH, "^a: ^a ^[^d^s^;^s^d^] must be configured if ^a ^d is configured.", 300 ME, name, mod (i, 2) = 0, i - 1, i + 1, name, i); 301 end; 302 if dev_array (i + 1) ^= dev_array (i) then do; 303 /* Buddies must be the same type. */ 304 BAD_BUDDY: 305 call syserr (CRASH, "^a: Devices ^d and ^d of ^a must have the same model number.", ME, 306 i - 1 + mod (i, 2), i + mod (i, 2), name); 307 end; 308 devtab.buddy = i + 1; /* Next guy has to be buddy. */ 309 devtab.pdi = i; /* Set primary device index. */ 310 end; 311 else do; /* The second of a pair. */ 312 if i <= 1 then 313 goto MISSING_BUDDY; 314 if dev_array (i - 1) ^= dev_array (i) then 315 goto BAD_BUDDY; 316 devtab.buddy, /* Last one is the buddy ... */ 317 devtab.pdi = i - 1; /* ... and the primary device. */ 318 end; 319 else do; /* Not a shared spindle. */ 320 321 devtab.buddy = 0; /* No buddy */ 322 devtab.pdi = i; /* This is the primary device */ 323 end; 324 else ; 325 326 /* setup optimization and queues. */ 327 328 unspec (devtab.opt_info) = unspec (d.opt_info); 329 unspec (devtab.wq) = "0"b; 330 end; 331 332 /* Analyze channel information for disk subsystem. */ 333 334 if prph_dsk_card.nchan > dskdcl_chans_per_subsys then 335 TOO_MANY_CHANNELS: 336 call syserr (CRASH, "^a: Too many channels configured for ^a. Limit is ^d.", ME, name, 337 dskdcl_chans_per_subsys); 338 339 do j = 1 to prph_dsk_card.nchan; /* Determine the channels defined on disk card. */ 340 call io_chnl_util$iom_to_name ((prph_dsk_card.iom), (prph_dsk_card.chan + j - 1), chan_array (j), rcode); 341 if rcode ^= 0 then 342 call syserr (CRASH, "^a: Invalid channel on PRPH ^a card.", ME, prph_dsk_card.name); 343 end; 344 345 /* Store adaptor information. */ 346 347 adaptor_index = 1; 348 adaptor (1).channel_start = 1; 349 adaptor (1).channel_count = prph_dsk_card.nchan; 350 adaptor (1).channels_used = 0; 351 adaptor (1).chantab_index = 1; 352 353 chnl_cardp = null (); 354 call config_$find_2 ("chnl", name, chnl_cardp); /* Look for chnl card for this subsystem. */ 355 if chnl_cardp ^= null () then /* If chnl card found ... */ 356 do i = 1 to 3 while (chnl_card.group (i).iom > 0); 357 /* Look at 3 possible channel groups. */ 358 call check_config_fields (chnl_cardp, addr (chnl_card.group (i).nchan)); 359 /* Make sure fields are all there */ 360 361 adaptor_index = adaptor_index + 1; 362 adaptor (adaptor_index).channel_start = j; 363 adaptor (adaptor_index).channel_count = chnl_card.group (i).nchan; 364 adaptor (adaptor_index).channels_used = 0; 365 adaptor (adaptor_index).chantab_index = j; /* note start */ 366 367 do k = 0 to chnl_card.group (i).nchan - 1; /* Determine channels in each group. */ 368 if j > dskdcl_chans_per_subsys then 369 goto TOO_MANY_CHANNELS; 370 call io_chnl_util$iom_to_name ((chnl_card.group (i).iom), (chnl_card.group (i).chan + k), 371 chan_array (j), rcode); 372 if rcode ^= 0 then 373 call syserr (CRASH, "^a: Invalid channel on CHNL ^a card", ME, chnl_card.name); 374 j = j + 1; /* Step channel index. */ 375 end; 376 end; 377 378 disktab.nchan = j - 1; /* Set total number of channels. */ 379 380 381 /* Calculate start of channel table */ 382 383 disktab.channels = rel (addrel (diskp, currentsize (disktab))); 384 385 /* Tell the iom manager about the disk. */ 386 387 ci = 0; /* No channel entries filled yet. */ 388 adaptor_count = adaptor_index; 389 adaptor_index = 0; 390 do i = 1 to disktab.nchan; /* Iterate for all channels. */ 391 re_scan_adaptor: 392 adaptor_index = mod (adaptor_index, adaptor_count) + 1; 393 if adaptor (adaptor_index).channel_count <= 0 then 394 goto re_scan_adaptor; /* skip empty slot */ 395 else do; 396 adaptor (adaptor_index).channel_count = adaptor (adaptor_index).channel_count - 1; 397 k = adaptor (adaptor_index).channel_start + adaptor (adaptor_index).channels_used; 398 adaptor (adaptor_index).channels_used = adaptor (adaptor_index).channels_used + 1; 399 ci = ci + 1; 400 idx = (sx * dskdcl_chans_per_subsys) + ci - 1; 401 /* Compute channel identification index */ 402 cp = addr (ptr (disksp, disktab.channels) -> disk_channel_table (ci)); 403 /* get pointer to channel info */ 404 chantab.chanid = chan_array (k); /* Save channel name */ 405 406 call io_manager$assign (chx, chan_array (k), dctl$disk_inter, (idx), chantab.statusp, rcode); 407 if rcode ^= 0 then /* If error ... */ 408 if rcode ^= error_table_$io_not_configured then 409 call syserr (CRASH, "^a: Unable to assign ^a for ^a.", ME, chan_array (k), 410 disk_data.name (sx)); 411 else ; 412 else do; 413 chantab.chx = chx; /* Save io_manager index in channel table. */ 414 chantab.in_use = "1"b; /* Indicate it's in use. */ 415 disktab.channels_online = disktab.channels_online + 1; 416 end; 417 418 /* Fill in all constant information in the DCW list. */ 419 420 base = bit (absadr (addr (cp -> chantab.select_data.limit), rcode)); 421 if rcode ^= 0 then /* Get absolute address of base of DCW list. */ 422 absadr_error: 423 call syserr (CRASH, "^a: error ^w from absadr for ^a ^a", ME, rcode, disk_data.name (sx), 424 chan_array (k)); 425 426 idcwp = addr (chantab.rstdcw); /* Get pointer to restore IDCW. */ 427 idcw.command = "42"b3; /* command = 42 (restore access arm) */ 428 idcw.code = "111"b; /* command dcw */ 429 idcw.control = "10"b; /* set control to "proceed" */ 430 idcw.chan_cmd = "02"b3; /* non-data transfer */ 431 idcw.count = "01"b3; /* count of 1 */ 432 433 idcwp = addr (chantab.scdcw); /* Get pointer to seek IDCW. */ 434 idcw.command = seek_command (devt); /* set the correct seek type for the devices on this channel */ 435 idcw.ext = substr (base, 1, 6); /* address extension */ 436 idcw.code = "111"b; /* command dcw */ 437 idcw.ext_ctl = "1"b; /* Turn on address extension bit. */ 438 idcw.control = "10"b; /* set control to proceed */ 439 440 dcwp = addr (chantab.sddcw); /* Get pointer to seek data xfer DCW. */ 441 dcw.address = substr (base, 7); 442 dcw.tally = "0001"b3; 443 444 idcwp = addr (chantab.dcdcw); /* Get pointer to disk read/write IDCW. */ 445 idcw.code = "111"b; /* command dcw */ 446 idcw.ext_ctl = "1"b; /* Turn on address extension bit. */ 447 448 dcwp = addr (chantab.dddcw); /* Get pointer to disk data xfer DCW. */ 449 450 base = bit (absadr (addr (cp -> chantab.detailed_status), rcode)); 451 if rcode ^= 0 then 452 go to absadr_error; /* Get absolute address for detailed status. */ 453 454 idcwp = addr (chantab.dscdcw); /* Get pointer to read status IDCW. */ 455 idcw.command = "22"b3; /* Read Status Register command */ 456 idcw.ext = substr (base, 1, 6); 457 idcw.code = "111"b; 458 idcw.ext_ctl = "1"b; 459 460 dcwp = addr (chantab.dsddcw); /* Get pointer to status data xfer DCW. */ 461 dcw.address = substr (base, 7); 462 dcw.tally = "0004"b3; 463 464 idcwp = addr (chantab.rssdcw); /* Get pointer to reset status IDCW. */ 465 idcw.command = "00"b3; /* Request Status command */ 466 idcw.ext = substr (base, 1, 6); 467 idcw.code = "111"b; 468 idcw.ext_ctl = "1"b; 469 end; 470 end; 471 472 return; 473 474 475 end init_disk_database; 476 477 /* Check that specified fields exist on config card */ 478 479 check_config_fields: 480 proc (cardp, fieldp); 481 482 dcl cardp ptr; /* Pointer to config card */ 483 dcl fieldp ptr; /* Pointer to field within that card */ 484 485 dcl field_inx fixed bin; /* Index of field */ 486 487 field_inx = bin (rel (fieldp)) - bin (rel (cardp)); 488 if field_inx > cardp -> config_card.type_word.n_fields then 489 /* Not there */ 490 call syserr (CRASH, "^a: Invalid format for ^a^[ ^a^;^1s^] card.", ME, cardp -> config_card.word, 491 (cardp -> config_card.type_word.field_type (1) = CONFIG_STRING_TYPE 492 | cardp -> config_card.type_word.field_type (1) = CONFIG_SINGLE_CHAR_TYPE), cardp -> chnl_card.name); 493 494 end check_config_fields; 495 1 1 /* BEGIN INCLUDE FILE ... config_chnl_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 1 2 1 3 dcl chnl_cardp ptr; /* Pointer to a CHNL card. */ 1 4 1 5 dcl 1 chnl_card based (chnl_cardp) aligned, /* CHNL card declaration */ 1 6 2 word char (4), /* "chnl" */ 1 7 2 name char (4), /* subsystem name */ 1 8 2 group (3), /* Channel groups for this subsystem -- 9 fields total */ 1 9 3 iom fixed bin (3), /* IOM number */ 1 10 3 chan fixed bin (8), /* channel number */ 1 11 3 nchan fixed bin, /* number of channels */ 1 12 1 13 2 pad (4) bit (36) aligned, /* pad to 15 fields */ 1 14 1 15 2 type_word aligned, 1 16 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 1 17 3 pad1 bit (4) unaligned, 1 18 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 1 19 1 20 dcl 1 chnl_card_array aligned based (chnl_cardp), /* Overlay for channel group array */ 1 21 2 pad1 (2) bit (36) aligned, 1 22 2 group (min (3, divide (max (0, (chnl_card.n_fields - 1)), 3, 17, 0))), 1 23 3 iom fixed bin (3), /* IOM number */ 1 24 3 chan fixed bin (8), /* Channel number. */ 1 25 3 nchan fixed bin; /* Number of logical channels on this channel. */ 1 26 1 27 dcl CHNL_CARD_WORD char (4) aligned internal static options (constant) init ("chnl"); 1 28 1 29 /* END INCLUDE FILE ... config_chnl_card.incl.pl1 */ 496 497 2 1 /* Begin include file config_data_dcls.incl.pl1 BIM 9/82 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 2 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 2 6* Add changes made to 2 7* config_data_.cds. 2 8* 2) change(86-10-21,Fawcett), approve(86-10-21,PBF7381), 2 9* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200): 2 10* Corrected the number of tape drive models supported. 2 11* END HISTORY COMMENTS */ 2 12 2 13 /* format: style3 */ 2 14 /* Modified 830523 to add console io_type and line_leng fields for different 2 15* operator's consoles and to fix a size bug... -E. A. Ranzenbach */ 2 16 /* Modified 841101 by Paul Farley to add changes made to config_data_.cds */ 2 17 2 18 /* WARNING WARNING */ 2 19 2 20 /* Due to the awful PL/I restriction that prohibits any expressions */ 2 21 /* in external variable extents, the arrays here have integers for */ 2 22 /* extents. Changes to config_data_.cds should be reflected here, */ 2 23 /* Because the declares in config_data_.cds use the "like" attribute. */ 2 24 /* Just in case, though, do NOT use hbound. Use the .count fields */ 2 25 /* in the structures instead. */ 2 26 2 27 declare config_data_$chnl_cardx 2 28 fixed binary external static; 2 29 declare config_data_$clok_cardx 2 30 fixed binary external static; 2 31 declare config_data_$cpu_cardx 2 32 fixed binary external static; 2 33 declare config_data_$fnp_cardx 2 34 fixed binary external static; 2 35 declare config_data_$intk_cardx 2 36 fixed binary external static; 2 37 declare config_data_$iom_cardx 2 38 fixed binary external static; 2 39 declare config_data_$mem_cardx 2 40 fixed binary external static; 2 41 declare config_data_$mpc_msp_cardx 2 42 fixed binary external static; 2 43 declare config_data_$mpc_mtp_cardx 2 44 fixed binary external static; 2 45 declare config_data_$ipc_fips_cardx 2 46 fixed binary external static; 2 47 declare config_data_$mpc_urp_cardx 2 48 fixed binary external static; 2 49 declare config_data_$mpc_cardx 2 50 fixed binary external static; 2 51 declare config_data_$mpcs_msp_cardx 2 52 fixed binary external static; 2 53 declare config_data_$mpcs_mtp_cardx 2 54 fixed binary external static; 2 55 declare config_data_$mpcs_urp_cardx 2 56 fixed binary external static; 2 57 declare config_data_$mpcs_cardx 2 58 fixed binary external static; 2 59 declare config_data_$parm_cardx 2 60 fixed binary external static; 2 61 declare config_data_$part_cardx 2 62 fixed binary external static; 2 63 declare config_data_$prph_dsk_cardx 2 64 fixed binary external static; 2 65 declare config_data_$prph_prt_cardx 2 66 fixed binary external static; 2 67 declare config_data_$prph_rdr_cardx 2 68 fixed binary external static; 2 69 declare config_data_$prph_pun_cardx 2 70 fixed binary external static; 2 71 declare config_data_$prph_ccu_cardx 2 72 fixed binary external static; 2 73 declare config_data_$prph_tap_cardx 2 74 fixed binary external static; 2 75 declare config_data_$prph_opc_cardx 2 76 fixed binary external static; 2 77 declare config_data_$prph_cardx 2 78 fixed binary external static; 2 79 declare config_data_$root_cardx 2 80 fixed binary external static; 2 81 declare config_data_$salv_cardx 2 82 fixed binary external static; 2 83 declare config_data_$schd_cardx 2 84 fixed binary external static; 2 85 declare config_data_$sst_cardx 2 86 fixed binary external static; 2 87 declare config_data_$stok_cardx 2 88 fixed binary external static; 2 89 declare config_data_$tbls_cardx 2 90 fixed binary external static; 2 91 declare config_data_$udsk_cardx 2 92 fixed binary external static; 2 93 2 94 declare 1 config_data_$config_cards 2 95 aligned external static, 2 96 2 count fixed binary, 2 97 2 per_card (32) aligned, 2 98 3 name char (4) aligned, 2 99 3 second_field char (4) aligned, 2 100 3 flags aligned, 2 101 4 match_second bit (1) unaligned, /* PRPH FOO */ 2 102 4 match_only_3 bit (1) unaligned; /* XXXn type */ 2 103 2 104 declare 1 config_data_$mpc_msp_model_names 2 105 aligned external static, 2 106 2 count fixed binary, 2 107 2 names (9) aligned, 2 108 3 model fixed binary, 2 109 3 name character (8), 2 110 3 fw_tag character (16), 2 111 3 valid_drives (16) fixed binary unaligned; 2 112 2 113 declare 1 config_data_$mpc_mtp_model_names 2 114 aligned external static, 2 115 2 count fixed binary, 2 116 2 names (7) aligned, 2 117 3 model fixed binary, 2 118 3 name character (8), 2 119 3 fw_tag character (16), 2 120 3 valid_drives (16) fixed binary unaligned; 2 121 2 122 declare 1 config_data_$mpc_urp_model_names 2 123 aligned external static, 2 124 2 count fixed binary, 2 125 2 names (6) aligned, 2 126 3 model fixed binary, 2 127 3 name character (8), 2 128 3 fw_tag character (16); /* "EURC" for EURC */ 2 129 2 130 declare 1 config_data_$ipc_msp_model_names 2 131 aligned external static, 2 132 2 count fixed binary, 2 133 2 names (1) aligned, 2 134 3 model fixed binary, 2 135 3 name character (8), 2 136 3 fw_tag character (16), 2 137 3 valid_drives (16) fixed binary unaligned; 2 138 2 139 declare 1 config_data_$ipc_mtp_model_names 2 140 aligned external static, 2 141 2 count fixed binary, 2 142 2 names (1) aligned, 2 143 3 model fixed binary, 2 144 3 name character (8), 2 145 3 fw_tag character (16), 2 146 3 valid_drives (16) fixed binary unaligned; 2 147 2 148 declare 1 config_data_$disk_drive_model_names 2 149 aligned external static, 2 150 2 count fixed binary, 2 151 2 names (5) aligned, 2 152 3 model fixed binary, 2 153 3 name character (8), 2 154 3 device_0_valid bit (1); 2 155 2 156 declare 1 config_data_$tape_drive_model_names 2 157 aligned external static, 2 158 2 count fixed binary, 2 159 2 names (9) aligned, 2 160 3 model fixed binary, 2 161 3 name character (8), 2 162 3 device_0_valid bit (1); 2 163 2 164 declare 1 config_data_$printer_model_names 2 165 aligned external static, 2 166 2 count fixed binary, 2 167 2 names (5) aligned, 2 168 3 model fixed binary, 2 169 3 name character (8); 2 170 2 171 declare 1 config_data_$reader_model_names 2 172 aligned external static, 2 173 2 count fixed binary, 2 174 2 names (4) aligned, 2 175 3 model fixed binary, 2 176 3 name character (8); 2 177 2 178 declare 1 config_data_$ccu_model_names 2 179 aligned external static, 2 180 2 count fixed binary, 2 181 2 names (1) aligned, 2 182 3 model fixed binary, 2 183 3 name character (8); 2 184 2 185 declare 1 config_data_$punch_model_names 2 186 aligned external static, 2 187 2 count fixed binary, 2 188 2 names (3) aligned, 2 189 3 model fixed binary, 2 190 3 name character (8); 2 191 2 192 declare 1 config_data_$console_model_names 2 193 aligned external static, 2 194 2 count fixed binary, 2 195 2 names (3) aligned, 2 196 3 model fixed binary, 2 197 3 name character (8), 2 198 3 line_leng fixed bin (17), 2 199 3 io_type character (4); 2 200 2 201 /* End include file config_data_dcls.incl.pl1 */ 498 499 3 1 /* BEGIN INCLUDE FILE ... config_deck.incl.pl1 ... 11/13/80, W. Olin Sibert */ 3 2 3 3 dcl (configp, cardp) pointer; 3 4 dcl config_n_cards fixed bin; /* Number of cards used in config */ 3 5 dcl config_max_cards fixed bin; /* Max number of cards in config */ 3 6 3 7 dcl config_deck$ fixed bin external static; 3 8 3 9 dcl 1 config_deck aligned based (configp), 3 10 2 cards (config_n_cards) aligned like config_card, 3 11 2 pad_cards (config_max_cards - config_n_cards) aligned like config_card; 3 12 3 13 dcl 1 config_card aligned based (cardp), 3 14 2 word char (4) aligned, 3 15 2 data_field (14) bit (36) aligned, 3 16 2 type_word aligned like config_card_type_word; 3 17 3 18 dcl 1 config_card_type_word aligned based, 3 19 2 field_type (14) bit (2) unaligned, 3 20 2 pad1 bit (4) unaligned, 3 21 2 n_fields fixed bin (4) unsigned unaligned; 3 22 3 23 dcl (CONFIG_DECIMAL_TYPE init ("11"b), 3 24 CONFIG_OCTAL_TYPE init ("00"b), 3 25 CONFIG_SINGLE_CHAR_TYPE init ("01"b), 3 26 CONFIG_STRING_TYPE init ("10"b)) bit (2) aligned static options (constant); 3 27 3 28 dcl ZERO_CARD_WORD char (4) aligned internal static options (constant) init (""); 3 29 dcl FREE_CARD_WORD char (4) aligned internal static options (constant) init ("ÿÿÿÿ"); 3 30 3 31 dcl VALID_CARD_WORD_CHARACTERS char (38) internal static options (constant) init 3 32 ("abcdefghijklmnopqrstuvwxyz0123456789_."); /* lowercase letters, digits, period and underscore */ 3 33 3 34 dcl EMPTY_FIELD bit (36) aligned internal static options (constant) init ("777777777777"b3); 3 35 3 36 /* END INCLUDE FILE config_deck.incl.pl1 */ 500 501 4 1 /* BEGIN INCLUDE FILE ... config_prph_dsk_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 4 2 4 3 dcl prph_dsk_cardp ptr; /* Pointer to a PRPH DSKx card. */ 4 4 4 5 dcl 1 prph_dsk_card based (prph_dsk_cardp) aligned, /* PRPH DSKx card declaration */ 4 6 2 word char (4), /* "prph" */ 4 7 2 name char (4), /* "dskX" */ 4 8 2 iom fixed bin (3), /* IOM number */ 4 9 2 chan fixed bin (8), /* channel number */ 4 10 2 nchan fixed bin, /* number of channels */ 4 11 4 12 2 group (5), 4 13 3 model fixed bin, /* model number */ 4 14 3 ndrives fixed bin, /* number of drives */ 4 15 4 16 2 type_word aligned, 4 17 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 4 18 3 pad1 bit (4) unaligned, 4 19 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 4 20 4 21 dcl 1 prph_dsk_card_array aligned based (prph_dsk_cardp), /* Overlay for drive group array */ 4 22 2 pad1 (5) bit (36) aligned, 4 23 2 group (divide (max (0, (prph_dsk_card.n_fields - 4)), 2, 17, 0)), 4 24 3 model fixed bin, /* model number */ 4 25 3 ndrives fixed bin; /* number of drives */ 4 26 4 27 /* END INCLUDE FILE ... config_prph_dsk_card.incl.pl1 */ 502 503 5 1 /* Begin include file ...... dskdcl.incl.pl1 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 5 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 5 6* Support for FIPS dev 0. 5 7* 2) change(88-05-10,Farley), approve(88-06-03,MCR7906), 5 8* audit(88-08-03,Fawcett), install(88-08-08,MR12.2-1080): 5 9* Added reconnect_announce_time to chantab to allow announcement of 5 10* reconnects at a throttled rate. Otherwise only report them in the syserr 5 11* log. Also added IO_TYPE constant array for displaying I/O type. 5 12* END HISTORY COMMENTS */ 5 13 5 14 /* Structures used by the Disk DIM */ 5 15 5 16 /* Modified 84-03-21 by T. Oke for system wide free queue. */ 5 17 /* Modified 84-04-24 by T. Oke for dynamic channel table. */ 5 18 /* Modified 84-05-03 by T. Oke to hold sx for azm analysis. */ 5 19 /* Modified 84-05-14 by T. Oke for larger quentry and adaptive optimization. */ 5 20 /* Modifies 84-11-26 by R. A. Fawcett for device 0 (fips) */ 5 21 5 22 /* format: style4,delnl,insnl,tree,ifthenstmt,indnoniterend */ 5 23 5 24 dcl disk_seg$ ext; /* disk data segment */ 5 25 5 26 dcl disksp ptr, /* pointer to disk subsystem info */ 5 27 diskp ptr, /* pointer to disk DIM info structure */ 5 28 optp ptr, /* pointer to opt_info */ 5 29 sysp ptr; /* pointer to sys_info */ 5 30 5 31 dcl 1 disk_data based (disksp) aligned, /* disk subsystem information */ 5 32 2 subsystems fixed bin, /* number of subsystems */ 5 33 2 free_offset bit (18), /* offset of first unused location in segment */ 5 34 2 status_mask bit (36), /* mask for checking for disk error */ 5 35 2 lock bit (36) unal, /* disk_data lock */ 5 36 2 free_q like qht, /* head/tail offsets */ 5 37 2 free_q_size fixed bin, /* length of queue */ 5 38 2 array (32), /* per subsystem info */ 5 39 ( 5 40 3 offset bit (18), /* location of data for this subsystem */ 5 41 3 mbz bit (18), /* low 18 of old style indirect word */ 5 42 3 name char (4) 5 43 ) unal, /* name of subsystem */ 5 44 2 stagnate_time fixed bin (35), /* stagnatation period */ 5 45 2 bail_outs fixed bin (35), /* times ALM called PL1 */ 5 46 2 pad bit (36), /* double word align */ 5 47 2 max_depth_reset_time fixed bin (71), /* time max_reset done */ 5 48 /* Upper bound is MAX_IO_TYPE, hard coded to avoid dynamic calculation */ 5 49 2 sys_info (0:6) like sys_info, /* MUST BE DOUBLE WORD ALIGNED */ 5 50 2 free_q_entries (2 refer (disk_data.free_q_size)) like quentry; 5 51 5 52 5 53 /* The following system table is used to hold the maximum queue loading 5 54* permitted system-wide for each IO type. From the current loading and 5 55* the maximum loading a multiplier fraction is calculated. These combine 5 56* to produce the final optimization multiplier to derive a Logcial Seek 5 57* from a Physical Seek. */ 5 58 5 59 dcl 1 sys_info aligned based (sysp), 5 60 3 depth float bin (27), /* current load */ 5 61 3 max_depth float bin (27), /* max permissible */ 5 62 3 fraction float bin (27), /* load fraction */ 5 63 3 depth_map bit (18) unaligned, /* which depth counter */ 5 64 3 pad bit (18) unaligned; 5 65 5 66 /* Maximum number of channels per sub-system. Must be a power of two. It must 5 67* be at or below the size of disk_init's chan_array size. Shift factor is for 5 68* dctl's use. */ 5 69 5 70 dcl dskdcl_chans_per_subsys fixed bin static options (constant) initial (32); 5 71 dcl dskdcl_chans_per_subsys_shift fixed bin static options (constant) initial (5); 5 72 5 73 5 74 dcl 1 disktab based (diskp) aligned, /* control structure for DIM's */ 5 75 2 lock bit (36) unal, /* data base lock */ 5 76 2 nchan fixed bin, /* number of disk channels */ 5 77 2 first_dev fixed bin unal, /* frist device number 0 or 1 */ 5 78 2 last_dev fixed bin unal, /* highest disk drive number */ 5 79 2 channels_online fixed bin, /* number of disk channels actually in use */ 5 80 2 dev_busy bit (72), /* busy bit for each device (only 0-63 used) */ 5 81 2 dev_queued bit (72), /* requests queued bit for each device (only 0-63 used) */ 5 82 2 abs_mem_addr fixed bin (26) unsigned, /* absolute memory address of this structure */ 5 83 2 channels bit (18) unal, /* location of chantab for this subsystem */ 5 84 2 dev_index fixed bin (17) unal, /* current device to check */ 5 85 2 errors fixed bin, /* error count */ 5 86 2 ferrors fixed bin, /* fatal error count */ 5 87 2 edac_errors fixed bin, /* count of EDAC correctable errors */ 5 88 2 call_lock_meters like disk_lock_meters, /* lock meters for call side of DIM */ 5 89 2 int_lock_meters like disk_lock_meters, /* lock meters for interrupt side of DIM */ 5 90 2 alloc_wait_meters like disk_lock_meters, /* meters for queue entry allocations */ 5 91 2 run_lock_meters like disk_lock_meters, /* lock meters for run calls */ 5 92 2 devtab (0:0 refer (disktab.last_dev)) like devtab; /* device information table */ 5 93 5 94 dcl 1 disk_channel_table (1 refer (disktab.nchan)) like chantab based aligned; 5 95 5 96 5 97 dcl qp ptr, /* pointer to queue entry */ 5 98 cp ptr; /* pointer to channel information table */ 5 99 5 100 5 101 /* Queue entry, 6 words. Cylinder and sector variables are over-size for 5 102* expansion space. They will always be positive and upper bits can be 5 103* stolen for other fields. 5 104* 5 105* Entries are forward and back linked to permit easy chasing and removal. */ 5 106 5 107 dcl 1 quentry based (qp) aligned, /* queue entry */ 5 108 /* WORD 1 */ 5 109 2 next bit (18) unaligned, /* forward link */ 5 110 2 prev bit (18) unaligned, /* back link */ 5 111 /* WORD 2 */ 5 112 2 intrpt bit (1) unaligned, /* completion interrupt desired */ 5 113 2 used bit (1) unaligned, /* entry in use */ 5 114 2 type fixed bin (4) unsigned unaligned, /* IO type */ 5 115 2 pad bit (6) unaligned, /* future expansion */ 5 116 2 coreadd bit (24) unaligned, /* main memory address */ 5 117 /* WORD 3 */ 5 118 2 pvtx fixed bin (8) unsigned unaligned, /* for AZM/ol_dump */ 5 119 2 pdi fixed bin (6) unsigned unaligned, /* physical device */ 5 120 2 dev fixed bin (6) unsigned unaligned, /* device in sub-sys */ 5 121 2 pad2 bit (5) unaligned, 5 122 2 cylinder fixed bin (11) unsigned unaligned, /* cylinder of request */ 5 123 /* WORD 4 */ 5 124 2 n_sectors fixed bin (6) unsigned unaligned, /* # sectors of IO */ 5 125 2 pad3 bit (9) unaligned, 5 126 2 sector bit (21) unaligned, /* device sector desired */ 5 127 /* WORDS 5&6 */ 5 128 2 time fixed bin (71); /* clock at queue */ 5 129 5 130 5 131 5 132 dcl 1 chantab based (cp) aligned, /* channel information table */ 5 133 2 chx fixed bin (35), /* io_manager channel index */ 5 134 2 ioi_ctx fixed bin (35), /* ioi channel table index */ 5 135 2 statusp ptr, /* pointer to hardware status word */ 5 136 2 chanid char (8), /* channel name */ 5 137 ( 5 138 2 pad0 bit (18), 5 139 2 in_use bit (1), /* non-zero if channel being used */ 5 140 2 active bit (1), /* non-zero if channel active */ 5 141 2 rsr bit (1), /* non-zero if RSR in progress */ 5 142 2 ioi_use bit (1), /* non-zero if channel usurped by IOI */ 5 143 2 inop bit (1), /* non-zero if channel inoperative */ 5 144 2 broken bit (1), /* non-zero if channel broken */ 5 145 2 action_code bit (2), /* saved from status */ 5 146 2 pad1 bit (10) 5 147 ) unal, 5 148 ( 5 149 2 qrp bit (18), /* rel ptr to queue entry */ 5 150 2 pad2 bit (3), 5 151 2 command bit (6), /* peripheral command */ 5 152 2 erct fixed bin (8) 5 153 ) unal, /* error retry count */ 5 154 2 select_data, /* data passed to IOM on select */ 5 155 ( 5 156 3 limit bit (12), /* limit on number of sectors */ 5 157 3 mbz bit (3), 5 158 3 sector bit (21) 5 159 ) unaligned, /* sector address */ 5 160 2 reconnect_announce_time fixed bin (52), /* reconnect announcement throttle */ 5 161 2 connect_time fixed bin (52), /* time of last connect */ 5 162 2 connects fixed bin, /* count of connects performed */ 5 163 2 detailed_status (0:17) bit (8) unal, /* detailed status bytes */ 5 164 2 rstdcw bit (36), /* restore command */ 5 165 2 scdcw bit (36), /* select command */ 5 166 2 sddcw bit (36), /* select data xfer */ 5 167 2 dcdcw bit (36), /* command to read or write */ 5 168 2 dddcw bit (36), /* data xfer DCW */ 5 169 2 dscdcw bit (36), /* RSR command */ 5 170 2 dsddcw bit (36), /* RSR data xfer */ 5 171 2 rssdcw bit (36), /* RSS command */ 5 172 2 status bit (36) aligned, /* saved status */ 5 173 /* Lossage counters for interrupt loss. */ 5 174 2 no_io_terminate fixed bin (35), /* no t bit from io_manager$get_status */ 5 175 2 terminate_not_active fixed bin (35), /* terminate, but not active */ 5 176 2 no_status_terminate fixed bin (35), /* interrupt with no terminate */ 5 177 2 status_from_run fixed bin (35); /* status missed til run called */ 5 178 5 179 dcl 1 qht aligned based, /* queue head/tail structure */ 5 180 2 sum fixed bin (35), /* sum of depths */ 5 181 2 count fixed bin (35), /* allocs */ 5 182 2 max_depth fixed bin (17) unaligned, /* high water mark */ 5 183 2 depth fixed bin (17) unaligned, /* current depth */ 5 184 2 head bit (18) unaligned, /* queue head */ 5 185 2 tail bit (18) unaligned; /* queue tail */ 5 186 5 187 dcl dp ptr, /* pointer to device information table */ 5 188 pvtdip ptr; /* pointer to dim_info in PVT entry */ 5 189 5 190 dcl 1 devtab based (dp) aligned, /* device information table */ 5 191 ( 5 192 2 pvtx fixed bin (8), /* index of PVT entry for device */ 5 193 2 inop bit (1), /* device inoperative */ 5 194 2 was_broken bit (1), /* device previously broken */ 5 195 2 broken bit (1), /* device down */ 5 196 2 abandoned bit (1), /* device lost and gone forever */ 5 197 2 forward bit (1), /* moving low->high */ 5 198 2 pad bit (10), 5 199 2 buddy unsigned fixed bin (6), /* other device on this spindle or 0 */ 5 200 2 pdi unsigned fixed bin (6) 5 201 ) unal, /* primary device index */ 5 202 2 cylinder fixed bin (35), /* current cylinder position */ 5 203 2 comb fixed bin (35), /* number of combs */ 5 204 2 pad1 fixed bin (35), 5 205 2 time_inop fixed bin (52), /* time drive became inoperative */ 5 206 2 wq like qht, /* work queue */ 5 207 /* Upper bound must be MAX_IO_TYPE, constant to avoid dynamic calculation. */ 5 208 2 opt_info (0:6) like opt_info; /* optimizer */ 5 209 5 210 5 211 /* Optimizing table for device. Must be even multiple words long. */ 5 212 /* Slope and intercept define a straight line of y = intercept - slope*x 5 213* Multiplier is calculated from this and current system loading. 5 214* 5 215* sys_info is the offset to the relevant system queue loading fraction. */ 5 216 5 217 dcl 1 opt_info aligned based (optp), 5 218 3 multiplier float bin (27), /* depth mult */ 5 219 3 slope float bin (27), /* slope of line */ 5 220 3 intercept float bin (27), /* Y intercept */ 5 221 3 sys_info bit (18) unaligned, /* offset to sys_info */ 5 222 3 depth fixed bin (17) unaligned, /* elements in queue */ 5 223 3 channel_wait fixed bin (52), /* total channel time waiting */ 5 224 3 queue_wait fixed bin (52), /* total queue time waiting */ 5 225 3 seek_sum fixed bin (35) unaligned, /* sum of seeks */ 5 226 3 seek_count fixed bin (35) unaligned; /* number of seeks */ 5 227 5 228 5 229 dcl 1 pvtdi based (pvtdip) aligned, /* disk DIM info in PVT entry */ 5 230 ( 5 231 2 sx fixed bin (11), /* structure index */ 5 232 2 usable_sect_per_cyl fixed bin (11), /* # of usable sectors on disk cylinder */ 5 233 2 unused_sect_per_cyl fixed bin (11) 5 234 ) unal; /* # of unused sectors at end of cylinder */ 5 235 5 236 dcl 1 disk_lock_meters based aligned, /* lock meters for disk DIM */ 5 237 2 count fixed bin, /* total number of attempts */ 5 238 2 waits fixed bin, /* number of attempts which required waiting */ 5 239 2 wait_time fixed bin (52); /* total time spent waiting */ 5 240 5 241 dcl ( 5 242 RST_LISTX init (1), /* listx for restore */ 5 243 SC_LISTX init (2), /* listx for select */ 5 244 DSC_LISTX init (6), /* listx for RSR */ 5 245 RSS_LISTX init (8) 5 246 ) fixed bin (12) static options (constant); /* listx for RSS */ 5 247 5 248 /* IO types defined. Value is also index of write_map to determine if 5 249* the IO type is a read or a write. */ 5 250 5 251 dcl ( 5 252 PAGE_READ init (0), 5 253 PAGE_WRITE init (1), 5 254 VTOC_READ init (2), 5 255 VTOC_WRITE init (3), 5 256 TEST init (4), 5 257 BOOTLOAD_READ init (5), 5 258 BOOTLOAD_WRITE init (6), 5 259 MAX_IO_TYPE init (6) 5 260 ) fixed bin (4) static options (constant); 5 261 5 262 dcl IO_TYPE (0:6) char (16) 5 263 initial ("Page Read", "Page Write", "VTOC Read", "VTOC Write", "Test", "Bootload Read", "Bootload Write") 5 264 static options (constant); 5 265 5 266 /* Map indexed by IO type to determine if operation is a read or write. */ 5 267 5 268 dcl write_mapping bit (7) initial ("0101001"b) static options (constant); 5 269 dcl write_map (0:6) bit (1) defined (write_mapping); 5 270 5 271 /* Map indexed by IO type to determine if operation is a sector IO. */ 5 272 5 273 dcl sector_mapping bit (7) initial ("0011111"b) static options (constant); 5 274 dcl sector_map (0:6) bit (1) defined (sector_mapping); 5 275 5 276 /* Map indexed by IO type to determine if operation is done on behalf of bce */ 5 277 5 278 dcl bootload_mapping bit (7) initial ("0000011"b) static options (constant); 5 279 dcl bootload_map (0:6) bit (1) defined (bootload_mapping); 5 280 5 281 /* End of include file ...... dskdcl.incl.pl1 */ 504 505 6 1 /* Begin include file ...... fs_dev_types.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 6 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 6 6* Add support for FIPS 6 7* 3380. 6 8* 2) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 6 9* audit(86-05-15,Coppola), install(86-07-18,MR12.0-1098): 6 10* Add the support for subvolumes for the MSU3380 and MSU3390. 6 11* 3) change(86-10-02,Fawcett), approve(86-10-02,PBF7383), 6 12* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200): 6 13* Changed 3390 to 3381, "d338" to "3380" & "d339" to "3381". 6 14* END HISTORY COMMENTS */ 6 15 6 16 /* Modified 5/19/76 by N. I. Morris */ 6 17 /* Modified 12/27/78 by Michael R. Jordan to correct MSS0500 information */ 6 18 /* Modified 4/79 by R.J.C. Kissel to add msu0501 information. */ 6 19 /* Modified '82 by BIM for needs_alt_part */ 6 20 /* Modified 4/84 by Chris Jones for FIPS disks */ 6 21 /* Modified 12/84 by Paul Farley for FIPS disks formatted for 512wd sectors */ 6 22 /* Modified 1/85 by Paul Farley to decrease the size of the 3380, until the 6 23* volmap and record stock can be expanded. */ 6 24 6 25 /* 6 26******************************************************************************** 6 27** * 6 28** WARNING: * 6 29** * 6 30** There exists fs_dev_types.incl.alm that must me updated when a new device * 6 31** type is added. * 6 32** * 6 33** There are other include files that contain arrays indexed by the device * 6 34** index obtained by references to MODELX or MODELN in this include file. * 6 35** These must be modified when a new device type is added: * 6 36** disk_pack.incl.pl1 * 6 37** fs_dev_types_sector.incl.pl1 (included in this include) * 6 38** * 6 39******************************************************************************** 6 40**/ 6 41 6 42 6 43 dcl (maxdevt init (9), /* maximum legal devt */ 6 44 bulkdevt init (1), /* bulk store devt */ 6 45 msu0500devt init (2), /* MSU0500 device type */ 6 46 msu0451devt init (3), /* MSU0451 device type */ 6 47 msu0450devt init (3), /* MSU0450 device type */ 6 48 msu0400devt init (4), /* MSU0400 device type */ 6 49 dsu191devt init (4), /* DSU191 device type */ 6 50 dsu190devt init (5), /* DSU190 device type */ 6 51 dsu181devt init (6), /* DSU181 device type */ 6 52 msu0501devt init (7), /* MSU0501 device type */ 6 53 fips3380devt init (8), /* 3380D FIPS device type */ 6 54 fips3381devt init (9) /* 3380E FIPS device type */ 6 55 ) fixed bin (4) static options (constant); 6 56 6 57 dcl MODEL (12) fixed bin static options (constant) init /* Known device model numbers */ 6 58 (0, 500, 451, 450, 400, 402, 191, 190, 181, 501, 3380, 3381); 6 59 6 60 dcl MODELX (12) fixed bin static options (constant) init /* translation from model number to device type */ 6 61 (1, 2, 3, 3, 4, 4, 4, 5, 6, 7, 8, 9); 6 62 6 63 dcl MODELN (9) fixed bin static options (constant) init /* translation from device type to model number */ 6 64 (0, 500, 451, 400, 190, 181, 501, 3380, 3381); 6 65 6 66 dcl device_names (9) char (4) aligned static options (constant) init /* device names indexed by device type */ 6 67 ("bulk", "d500", "d451", "d400", "d190", "d181", "d501", "3380", "3381"); 6 68 6 69 dcl first_dev_number (9) fixed bin (17) static options (constant) init /* First valid device_number */ 6 70 (1, 1, 1, 1, 1, 1, 1, 0, 0); 6 71 6 72 dcl fips_type_disk (9) bit (1) unal static options (constant) init /* ON => FIPS disk */ 6 73 ("0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"0"b,"1"b,"1"b); 6 74 6 75 dcl media_removable (9) bit (1) static options (constant) init /* ON => demountable pack on device */ 6 76 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 6 77 6 78 dcl shared_spindle (9) bit (1) static options (constant) init /* ON => 2 devices per spindle */ 6 79 ("0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b); 6 80 6 81 dcl needs_alt_part (9) bit (1) static options (constant) init /* ON => needs alternate partition to run alternate tracks */ 6 82 ("0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 6 83 6 84 dcl seek_command (9) bit (6) init /* Seek command: 00 => N/A, 30 => Seek_512, 34 => seek_64 */ 6 85 ("00"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"34"b3,"30"b3, "30"b3); 6 86 6 87 dcl rec_per_dev (9) fixed bin (21) static options (constant) init /* table of # of records on each device */ 6 88 (0, 38258, 38258, 19270, 14760, 4444, 67200, 112395, 224790); 6 89 6 90 dcl rec_per_sv (9) fixed bin static options (constant) init /* table of # of records on each subvol */ 6 91 (0, 38258, 38258, 19270, 14760, 4444, 67200, 56134, 74930); 6 92 6 93 dcl number_of_sv (9) fixed bin static options (constant) init /* table of subvolumes */ 6 94 (0, 0, 0, 0, 0, 0, 0, 2, 3); 6 95 6 96 dcl valid_sv_string char (3) static options (constant) init /* string of valid subvolume names */ 6 97 ("abc"); 6 98 6 99 dcl valid_sv_array (0:2) char (1) static options (constant) /* array of valid subvolume names */ 6 100 init ("a","b","c"); 6 101 6 102 dcl cyl_per_dev (9) fixed bin static options (constant) init /* table of # of cylinders on each device */ 6 103 (0, 814, 814, 410, 410, 202, 840, 885, 1770); 6 104 6 105 dcl cyl_per_sv (9) fixed bin static options (constant) init /* table of # of cylinders on each subvolume */ 6 106 (0, 814, 814, 410, 410, 202, 840, 442, 590); 6 107 6 108 dcl rec_per_cyl (9) fixed bin static options (constant) init /* table of # of records per cylinder on each device */ 6 109 (0, 47, 47, 47, 36, 22, 80, 127, 127); 6 110 6 111 dcl tracks_per_cyl (9) fixed bin static options (constant) init /* table of # of tracks per cylinder on each device */ 6 112 (0, 19, 19, 19, 19, 20, 20, 15, 15); 6 113 6 114 6 115 dcl first_rec_num (9) fixed bin static options (constant) init /* table of # of first record on each device */ 6 116 (0, 0, 0, 0, 0, 0, 0, 0, 0); 6 117 6 118 dcl last_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each device */ 6 119 (0, 38257, 38116, 19128, 14651, 4399, 67199, 112394, 224789); 6 120 6 121 dcl last_sv_rec_num (9) fixed bin (18) static options (constant) init /* table of # of last record on each subvolume */ 6 122 (0, 38257, 38116, 19128, 14651, 4399, 67199, 56133, 74929); 6 123 6 124 dcl first_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector for each device */ 6 125 (0, 0, 0, 0, 0, 0, 0, 0, 0); 6 126 6 127 dcl last_sect_num (9) fixed bin (24) static options (constant) init /* table of # last sector number for each device */ 6 128 (0, 618639, 616359, 309319, 239722, 71999, 1075199, 225674, 451349); 6 129 6 130 dcl first_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of first sector of alt partition */ 6 131 (0, 638400, 616360, 309320, 239723, 72000, 1075200, 225675, 451350); 6 132 6 133 dcl last_alt_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector of alt partition */ 6 134 (0, 639919, 618639, 311599, 241489, 72719, 1077759, 225930, 451605); 6 135 6 136 dcl last_physical_sect_num (9) fixed bin (24) static options (constant) init /* table of # of last sector on device (includes T&D cylinders) */ 6 137 (0, 639919, 619399, 312359, 242249, 72359, 1077759, 225674, 451859); 6 138 6 139 dcl dev_time (9) float bin (27) static options (constant) init /* table of average access times for each device */ 6 140 (384e0, 33187e0, 33187e0, 34722e0, 46935e0, 52631e0, 33187e0, 26260e0, 26260e0); 6 141 7 1 /* Begin fs_dev_types_sector.incl.pl1 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(86-04-21,Fawcett), approve(86-04-21,MCR7383), 7 6* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 7 7* Add the sector differance for devices that do 64 word IO and devices that 7 8* do 512 word IO. 7 9* END HISTORY COMMENTS */ 7 10 7 11 /* Created by R. A. Fawcett for 512 word IO. for procedures that do not 7 12* need all the data in fs_dev_types. This is also included in 7 13* fs_dev_types.incl.pl1 */ 7 14 7 15 dcl sect_per_cyl (9) fixed bin static options (constant) init /* table of # of sectors per cylinder on each device */ 7 16 (0, 760, 760, 760, 589, 360, 1280, 255, 255); 7 17 7 18 dcl sect_per_sv (9) fixed bin (24) static options (constant) init /* table of # of sectors per cylinder on each subvolume */ 7 19 (0, 0, 0, 0, 0, 0, 0, 112710, 150450); 7 20 7 21 dcl sect_per_rec (9) fixed bin static options (constant) init 7 22 /* table of # of sectors per record on each device */ 7 23 /* coresponding array in disk_pack.incl.pl1 called SECTORS_PER_RECORD */ 7 24 (0, 16, 16, 16, 16, 16, 16, 2, 2); 7 25 7 26 dcl sect_per_vtoc (9) fixed bin static options (constant) init 7 27 (0, 3, 3, 3, 3, 3, 3, 1, 1); 7 28 7 29 dcl vtoc_per_rec (9) fixed bin static options (constant) init 7 30 /* corespending array in disk_pack.incl.pl1 named VTOCES_PER_RECORD */ 7 31 (0, 5, 5, 5, 5, 5, 5, 2, 2); 7 32 7 33 dcl sect_per_track (9) fixed bin static options (constant) init /* table of # of sectors per track on each device */ 7 34 (0, 40, 40, 40, 31, 18, 64, 17, 17); 7 35 7 36 dcl words_per_sect (9) fixed bin static options (constant) init /* table of # of words per sector on each device */ 7 37 (0, 64, 64, 64, 64, 64, 64, 512, 512); 7 38 7 39 /* End fs_dev_types_sector.incl.pl1 */ 7 40 6 142 6 143 6 144 /* End of include file ...... fs_dev_types.incl.pl1 */ 506 507 8 1 /* START OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 8 2 8 3 /* Written by Charles Hornig, 1st quarter 1981 */ 8 4 /* Canonicalization entry added by Chris Jones, January 1984 */ 8 5 8 6 /* chanid = canonicalize_chanid (chanid); */ 8 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 8 8 dcl io_chnl_util$canonicalize_chanid 8 9 entry (char (8) aligned) returns (char (8) aligned); 8 10 8 11 /* call iom_to_name (iomno, channo, name, code); */ 8 12 dcl io_chnl_util$iom_to_name 8 13 entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35)); 8 14 8 15 /* call name_to_iom (name, iomno, channo, code); */ 8 16 dcl io_chnl_util$name_to_iom 8 17 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35)); 8 18 8 19 /* END OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 508 509 9 1 /* Begin include file io_manager_dcls.incl.pl1 */ 9 2 9 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 9 4 /* Modified for MR10 interface, February 1982 */ 9 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 9 6 9 7 /* These entries are callable on unwired stacks. */ 9 8 9 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 9 10 dcl io_manager$assign 9 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 9 12 fixed bin (35), ptr, fixed bin (35)); 9 13 9 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 9 15 dcl io_manager$assign_add 9 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 9 17 fixed bin (35), ptr, fixed bin (35)); 9 18 9 19 /* call io_manager$unassign (Chx, Code); */ 9 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 9 21 9 22 /* call io_manager$unassign_delete (Chx, Code); */ 9 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 9 24 9 25 /* call io_manager$connect (Io_manager_arg); */ 9 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 9 27 9 28 /* call io_manager$connect_abs (Io_manager_arg); */ 9 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 9 30 9 31 /* call io_manager$connect_direct (Io_manager_arg); */ 9 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 9 33 9 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 9 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 9 36 9 37 /* call io_manager$mask (Chx); */ 9 38 dcl io_manager$mask entry (fixed bin (35)); 9 39 9 40 /* call io_manager$ignore_interrupt (); */ 9 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 9 42 9 43 /* call io_manager$data_tdcw (Io_manager_arg); 9 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 9 45* 9 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 9 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 9 48 9 49 dcl io_manager_arg_ptr ptr; 9 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 9 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 9 52 2 bound fixed bin (19), /* workspace size */ 9 53 2 pcw bit (36) aligned, /* or IDCW */ 9 54 2 listx fixed bin (18), /* DCW list offset */ 9 55 2 ptp ptr, /* page table pointer */ 9 56 2 listp ptr, /* DCW list pointer */ 9 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 9 58 9 59 /* End include file io_manager_dcls.incl.pl1 */ 510 511 10 1 10 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 10 3 10 4 dcl dcwp ptr, /* pointer to DCW */ 10 5 tdcwp ptr; /* pointer to TDCW */ 10 6 10 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 10 8 (2 address bit (18), /* address for data transfer */ 10 9 2 char_pos bit (3), /* character position */ 10 10 2 m64 bit (1), /* non-zero for mod 64 address */ 10 11 2 type bit (2), /* DCW type */ 10 12 2 tally bit (12)) unal; /* tally for data transfer */ 10 13 10 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 10 15 (2 address bit (18), /* address to transfer to */ 10 16 2 mbz1 bit (4), 10 17 2 type bit (2), /* should be "10"b for TDCW */ 10 18 2 mbz2 bit (9), 10 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 10 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 10 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 10 22 10 23 /* End of include file ...... iom_dcw.incl.pl1 */ 10 24 512 513 11 1 11 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 11 3 11 4 dcl pcwp ptr; /* pointer to PCW */ 11 5 11 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 11 7 (2 command bit (6), /* device command */ 11 8 2 device bit (6), /* device code */ 11 9 2 ext bit (6), /* address extension */ 11 10 2 code bit (3), /* should be "111"b for PCW */ 11 11 2 mask bit (1), /* channel mask bit */ 11 12 2 control bit (2), /* terminate/proceed and marker control bits */ 11 13 2 chan_cmd bit (6), /* type of I/O operation */ 11 14 2 count bit (6), /* record count or control character */ 11 15 2 mbz1 bit (3), 11 16 2 channel bit (6), /* channel number */ 11 17 2 mbz2 bit (27)) unal; 11 18 11 19 dcl idcwp ptr; /* pointer to IDCW */ 11 20 11 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 11 22 (2 command bit (6), /* device command */ 11 23 2 device bit (6), /* device code */ 11 24 2 ext bit (6), /* address extension */ 11 25 2 code bit (3), /* should be "111"b for PCW */ 11 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 11 27 2 control bit (2), /* terminate/proceed and marker control bits */ 11 28 2 chan_cmd bit (6), /* type of I/O operation */ 11 29 2 count bit (6)) unal; /* record count or control character */ 11 30 11 31 /* End include file ...... iom_pcw.incl.pl1 */ 11 32 514 515 12 1 12 2 /* Begin include file ...... iom_stat.incl.pl1 */ 12 3 /* Last modified on 10/31/74 by Noel I. Morris */ 12 4 12 5 dcl statp ptr; /* pointer to status */ 12 6 12 7 dcl 1 status based (statp) aligned, /* IOM status information */ 12 8 (2 t bit (1), /* set to "1"b by IOM */ 12 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 12 10 2 major bit (4), /* major status */ 12 11 2 sub bit (6), /* substatus */ 12 12 2 eo bit (1), /* even/odd bit */ 12 13 2 marker bit (1), /* non-zero if marker status */ 12 14 2 soft bit (2), /* software status */ 12 15 2 initiate bit (1), /* initiate bit */ 12 16 2 abort bit (1), /* software abort bit */ 12 17 2 channel_stat bit (3), /* IOM channel status */ 12 18 2 central_stat bit (3), /* IOM central status */ 12 19 2 mbz bit (6), 12 20 2 rcount bit (6), /* record count residue */ 12 21 2 address bit (18), /* DCW address residue */ 12 22 2 char_pos bit (3), /* character position residue */ 12 23 2 r bit (1), /* non-zero if reading */ 12 24 2 type bit (2), /* type of last DCW */ 12 25 2 tally bit (12)) unal; /* DCW tally residue */ 12 26 12 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 12 28 (2 mbz1 bit (9), 12 29 2 channel bit (9), /* channel number */ 12 30 2 serv_req bit (5), /* service request */ 12 31 2 mbz2 bit (3), 12 32 2 controller_fault bit (4), /* system controller fault code */ 12 33 2 io_fault bit (6)) unal; /* I/O fault code */ 12 34 12 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 12 36 (2 t bit (1), /* entry present bit */ 12 37 2 channel bit (8), /* channel number */ 12 38 2 pad1 bit (3), 12 39 2 device bit (6), /* device address */ 12 40 2 pad2 bit (1), 12 41 2 byte2 bit (8), /* device dependent information */ 12 42 2 pad3 bit (1), 12 43 2 byte3 bit (8)) unal; /* device dependent information */ 12 44 12 45 /* End of include file iom_stat.incl.pl1 */ 12 46 516 517 13 1 /* START OF: pvte.incl.pl1 July 1982 * * * * * * * * * * * * * * * * */ 13 2 13 3 /* Added pc_vacating, Benson Margulies 84-10-17 */ 13 4 13 5 /****^ HISTORY COMMENTS: 13 6* 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 13 7* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 13 8* Add the support for subvolumes 13 9* 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 13 10* audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 13 11* Add root_lv flag to mount RLVs that do not have hardcore partitions. 13 12* 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 13 13* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 13 14* Added inconsistent_dbm bit for determining the status of volume 13 15* dumper bit maps. 13 16* END HISTORY COMMENTS */ 13 17 13 18 dcl pvt$array aligned external; 13 19 dcl pvt$max_n_entries fixed bin external; 13 20 13 21 dcl pvt_arrayp ptr; 13 22 dcl pvtep ptr; 13 23 13 24 dcl 1 pvt_array (pvt$max_n_entries) aligned like pvte based (pvt_arrayp); 13 25 13 26 dcl 1 pvte based (pvtep) aligned, 13 27 13 28 2 pvid bit (36), /* physical volume ID */ 13 29 13 30 2 lvid bit (36), /* logical volume ID */ 13 31 13 32 2 dmpr_in_use (3) bit (1) unaligned, /* physical volume dumper interlock */ 13 33 2 is_sv bit (1) unaligned, /* true if this entry defines a subvolume */ 13 34 2 root_lv bit (1) unaligned, /* true if this is on the root LV */ 13 35 2 removable_pack bit (1) unaligned, /* true if packs are eremoveable */ 13 36 2 inconsistent_dbm bit (1) unaligned, /* true if trouble count is incremented */ 13 37 2 pad3 bit (2) unaligned, 13 38 2 brother_pvtx fixed bin (8) unaligned,/* next pvte in lv chain */ 13 39 2 skip_queue_count fixed bin (18) unsigned unaligned, /* number of times this pv skipped for per-proc allocation due to saturation */ 13 40 13 41 13 42 13 43 2 devname char (4), /* device name */ 13 44 13 45 (2 device_type fixed bin (8), /* device type */ 13 46 2 logical_area_number fixed bin (8), /* disk drive number */ 13 47 2 used bit (1), /* TRUE if this entry is used */ 13 48 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 13 49 2 permanent bit (1), /* TRUE if cannot be demounted */ 13 50 2 testing bit (1), /* Protocol bit for read_disk$test */ 13 51 2 being_mounted bit (1), /* TRUE if the physical volume is being mounted */ 13 52 2 being_demounted bit (1), /* TRUE if the pysical volume is being demounted */ 13 53 2 check_read_incomplete bit (1), /* page control should check read incomplete */ 13 54 2 device_inoperative bit (1), /* TRUE if disk_control decides dev busted */ 13 55 2 rpv bit (1), /* TRUE if this is the root physical volume */ 13 56 2 scav_check_address 13 57 bit (1), /* TRUE is page control should check deposits/withdrawals against scavenger table */ 13 58 2 deposit_to_volmap bit (1), /* TRUE if deposits should got to volume map, not stock */ 13 59 2 being_demounted2 bit (1), /* No more vtoc I/O during demount */ 13 60 2 pc_vacating bit (1), /* No more withdraws from this volume -- for debugging */ 13 61 2 vacating bit (1), /* don't put new segs on this vol */ 13 62 2 hc_part_used bit (1), /* HC part set up by init_pvt */ 13 63 2 volmap_lock_notify bit (1) unal, /* TRUE if notify required when volmap lock is unlocked */ 13 64 2 volmap_idle_notify bit (1) unal, /* TRUE if notify required when volmap state is idle */ 13 65 2 vtoc_map_lock_notify bit (1) unal, /* TRUE if notify required when vtoc map lock is unlocked */ 13 66 13 67 13 68 2 n_free_vtoce fixed bin (17), /* number of free VTOC entries */ 13 69 2 vtoc_size fixed bin (17), /* size of the VTOC part of the disk - in records */ 13 70 13 71 2 dbmrp (2) bit (18), /* rel ptr to dumber bit maps for this volume */ 13 72 13 73 2 nleft fixed bin (17), /* number of records left */ 13 74 2 totrec fixed bin (17)) unaligned, /* Total records in this map */ 13 75 13 76 2 dim_info bit (36), /* Information peculiar to DIM */ 13 77 2 sv_num fixed bin, /* the number of this subvolume starting at 0 */ 13 78 2 num_of_svs fixed bin, /* number of subvolumes for this device */ 13 79 2 records_per_cyl fixed bin, 13 80 2 record_factor fixed bin, /* the record factor for logical to real seek calculation */ 13 81 2 sv_name char (2) aligned, 13 82 2 curn_dmpr_vtocx (3) fixed bin unaligned,/* current vtocx being dumped */ 13 83 2 n_vtoce fixed bin unaligned, /* number of vtoce on this volume */ 13 84 13 85 2 baseadd fixed bin (18) uns unaligned, /* Base of paging region */ 13 86 2 pad2 bit (18) unaligned, 13 87 13 88 2 pad_for_mod_2 fixed bin (35), /* Make volmap_seg_sdw double word aligned */ 13 89 13 90 2 volmap_seg_sdw fixed bin (71), /* SDW describing volmap_seg */ 13 91 13 92 2 volmap_astep ptr unal, /* Packed pointer to ASTE for volmap_seg */ 13 93 13 94 2 volmap_offset bit (18) unal, /* Offset in volmap_seg of volume map */ 13 95 2 vtoc_map_offset bit (18) unal, /* Offset in volmap_seg of VTOC map */ 13 96 13 97 13 98 2 volmap_lock bit (36) aligned, /* Lock on volume map operations */ 13 99 13 100 2 vtoc_map_lock bit (36) aligned, /* Lock on VTOC map operations */ 13 101 13 102 2 volmap_stock_ptr ptr unal, /* Packed pointer to record stock */ 13 103 13 104 2 vtoc_map_stock_ptr ptr unal, /* Packed pointer to VTOCE stock */ 13 105 13 106 2 volmap_async_state fixed bin (17) unaligned, /* Asynchronous update state of Volume Map */ 13 107 2 volmap_async_page fixed bin (17) unaligned, /* Page number for asynchronous update */ 13 108 13 109 2 vol_trouble_count fixed bin (17) unaligned, /* Count of inconsistencies since last salvage */ 13 110 2 scavenger_block_rel bit (18) unaligned; /* Offset to scavenger block, ^0 => scavenging */ 13 111 13 112 13 113 dcl (VOLMAP_ASYNC_IDLE init (0), /* for volmap_async_state */ 13 114 VOLMAP_ASYNC_READ init (1), 13 115 VOLMAP_ASYNC_WRITE init (2)) fixed bin int static options (constant); 13 116 13 117 13 118 /* END OF: pvte.incl.pl1 * * * * * * * * * * * * * * * * */ 518 519 14 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 14 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 14 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 14 4 14 5 /* This include file has an ALM version. Keep 'em in sync! */ 14 6 14 7 dcl ( 14 8 14 9 /* The following constants define the message action codes. This indicates 14 10*how a message is to be handled. */ 14 11 14 12 SYSERR_CRASH_SYSTEM init (1), 14 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 14 14 14 15 SYSERR_TERMINATE_PROCESS init (2), 14 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 14 17 14 18 SYSERR_PRINT_WITH_ALARM init (3), 14 19 BEEP init (3), /* Beep and print the message on the console. */ 14 20 14 21 SYSERR_PRINT_ON_CONSOLE init (0), 14 22 ANNOUNCE init (0), /* Just print the message on the console. */ 14 23 14 24 SYSERR_LOG_OR_PRINT init (4), 14 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 14 26 14 27 SYSERR_LOG_OR_DISCARD init (5), 14 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 14 29 14 30 14 31 /* The following constants are added to the normal severities to indicate 14 32*different sorting classes of messages. */ 14 33 14 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 14 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 14 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 14 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 14 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 14 39 ) fixed bin internal static options (constant); 14 40 14 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 520 521 522 /* BEGIN MESSAGE DOCUMENTATION 523* 524* Message: 525* disk_init: Invalid channel on PRPH DSKx card. 526* 527* S: $crash 528* 529* T: $init 530* 531* M: An invalid channel specification was found on the PRPH DSKx card. 532* 533* 534* 535* Message: 536* disk_init: Invalid channel on CHNL DSKx card. 537* 538* S: $crash 539* 540* T: $init 541* 542* M: An invalid channel specification was found on the CHNL card for DSKx. 543* 544* 545* 546* Message: 547* disk_init: Unable to assign CCCC for DSKx. 548* 549* S: $crash 550* 551* T: $init 552* 553* M: An error has occurred trying to assign an IOM channel 554* for the disk subsystem DSKX. 555* 556* A: $recover 557* Check the configuration deck and the operability of the hardware before rebooting. 558* 559* 560* Message: 561* disk_init: error WWWW from absadr for DSKX iom N, ch ZZ. 562* 563* S: $crash 564* 565* T: $init 566* 567* M: $err 568* 569* A: $recover 570* $boot_tape 571* 572* 573* Message: 574* disk_init: Too many devices configured for DSKn. Max device is N. 575* 576* S: $crash 577* 578* T: $init 579* 580* M: The software limit for devices per subsystem has been exceeded. 581* 582* A: Fix the config deck and reboot. 583* 584* 585* Message: 586* disk_init: Unknown model number NNNN on PRPH dskN. 587* 588* S: $crash 589* 590* T: $init 591* 592* M: The model number NNNN on the prph card for disk subsystem N is invalid. 593* 594* A: Correct the config deck and reboot. 595* 596* 597* Message: 598* disk_init: DSKn D1 must be configured if DSKn D2 is configured. 599* 600* S: $crash 601* 602* T: $init 603* 604* M: Only one of a pair of devices that share a common spindle has been 605* configured. 606* 607* A: Change the config deck to include the missing device and reboot. 608* 609* 610* Message: 611* disk_init: Devices D1 and D2 of DSKn must have the same model number. 612* 613* S: $crash 614* 615* T: $init 616* 617* M: Two devices that share a common spindle have been configured 618* with different model numbers. 619* 620* A: Correct the config deck and reboot. 621* 622* 623* Message: 624* disk_init: Too many channels configured for DSKn. Limit is N. 625* 626* S: $crash 627* 628* T: $init 629* 630* M: The per subsystem software limit for logical channels has been exceeded. 631* 632* A: Fix the config deck and reboot. If more channels are needed, split 633* the configuration into more subsystems in the config deck. 634* 635* 636* Message: 637* disk_init: Invalid format for XXXX card. 638* 639* S: $crash 640* 641* T: $init 642* 643* M: A required field on the XXXX card is not present. 644* 645* A: $recover 646* Fix the configuration deck and reboot. 647* 648* 649* Message: 650* disk_init: Disk model XXXX not found in config_data_. 651* 652* S: $crash 653* 654* T: $init 655* 656* M: $err 657* 658* A: $recover 659* Fix the configuration deck and reboot. 660* 661* 662* Message: 663* disk_init: No valid disk models found on PRPH DSKx card. 664* 665* S: $crash 666* 667* T: $init 668* 669* M: All disk model fields were found to be zero. 670* 671* A: Fix the configuration deck and reboot. 672* 673* 674* END MESSAGE DOCUMENTATION */ 675 676 end disk_init; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0815.7 disk_init.pl1 >spec>install>1112>disk_init.pl1 496 1 05/08/81 1853.6 config_chnl_card.incl.pl1 >ldd>include>config_chnl_card.incl.pl1 498 2 10/30/86 2010.5 config_data_dcls.incl.pl1 >ldd>include>config_data_dcls.incl.pl1 500 3 05/08/81 1853.6 config_deck.incl.pl1 >ldd>include>config_deck.incl.pl1 502 4 05/08/81 1853.7 config_prph_dsk_card.incl.pl1 >ldd>include>config_prph_dsk_card.incl.pl1 504 5 08/11/88 2011.5 dskdcl.incl.pl1 >ldd>include>dskdcl.incl.pl1 506 6 10/30/86 2010.5 fs_dev_types.incl.pl1 >ldd>include>fs_dev_types.incl.pl1 6-142 7 07/24/86 2051.8 fs_dev_types_sector.incl.pl1 >ldd>include>fs_dev_types_sector.incl.pl1 508 8 07/11/84 0937.3 io_chnl_util_dcls.incl.pl1 >ldd>include>io_chnl_util_dcls.incl.pl1 510 9 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 512 10 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 514 11 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 516 12 01/10/75 1343.6 iom_stat.incl.pl1 >ldd>include>iom_stat.incl.pl1 518 13 07/21/88 2036.0 pvte.incl.pl1 >ldd>include>pvte.incl.pl1 520 14 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.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. BOOTLOAD_READ constant fixed bin(4,0) initial dcl 5-251 ref 159 160 160 BOOTLOAD_WRITE constant fixed bin(4,0) initial dcl 5-251 ref 162 163 163 CONFIG_SINGLE_CHAR_TYPE constant bit(2) initial dcl 3-23 ref 488 CONFIG_STRING_TYPE constant bit(2) initial dcl 3-23 ref 488 CRASH 000023 constant fixed bin(17,0) initial dcl 14-7 set ref 223* 227* 252* 260* 298* 304* 334* 341* 372* 407* 421* 488* MAX_IO_TYPE constant fixed bin(4,0) initial dcl 5-251 ref 276 ME 000053 constant char(16) initial packed unaligned dcl 104 set ref 223* 227* 252* 260* 298* 304* 334* 341* 372* 407* 421* 488* MODEL 000037 constant fixed bin(17,0) initial array dcl 6-57 ref 258 258 260 MODELX 000023 constant fixed bin(17,0) initial array dcl 6-60 ref 263 PAGE_READ constant fixed bin(4,0) initial dcl 5-251 ref 147 148 148 PAGE_WRITE constant fixed bin(4,0) initial dcl 5-251 ref 150 151 151 TEST constant fixed bin(4,0) initial dcl 5-251 ref 165 166 166 VTOC_READ constant fixed bin(4,0) initial dcl 5-251 ref 153 154 154 VTOC_WRITE constant fixed bin(4,0) initial dcl 5-251 ref 156 157 157 abs_mem_addr 10 based fixed bin(26,0) level 2 unsigned dcl 5-74 set ref 233* absadr 000010 constant entry external dcl 106 ref 233 420 450 adaptor 000217 automatic structure array level 1 unaligned dcl 83 adaptor_count 000216 automatic fixed bin(17,0) dcl 81 set ref 388* 391 adaptor_index 000215 automatic fixed bin(17,0) dcl 80 set ref 347* 361* 361 362 363 364 365 388 389* 391* 391 393 396 396 397 397 398 398 addr builtin function dcl 114 ref 118 123 134 135 138 140 148 151 154 157 160 163 166 176 177 185 233 233 239 239 250 250 277 278 292 358 358 402 420 420 426 433 440 444 448 450 450 454 460 464 addrel builtin function dcl 114 ref 202 383 address based bit(18) level 2 packed packed unaligned dcl 10-7 set ref 441* 461* array 11 based structure array level 2 dcl 5-31 base 000213 automatic bit(24) dcl 73 set ref 420* 435 441 450* 456 461 466 bin builtin function dcl 114 ref 121 487 487 bit builtin function dcl 114 ref 121 420 450 buddy 0(24) based fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 5-190 set ref 308* 316* 321* cardp parameter pointer dcl 482 ref 479 487 488 488 488 488 488 central_stat 0(21) based bit(3) level 2 packed packed unaligned dcl 12-7 set ref 128* chan 3 based fixed bin(8,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "disk_init" ref 370 chan 3 based fixed bin(8,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" ref 340 chan_array 000215 automatic char(8) array dcl 75 set ref 340* 370* 404 406* 407* 421* chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 11-21 set ref 430* chanid 4 based char(8) level 2 dcl 5-132 set ref 404* channel_count 2 000217 automatic fixed bin(17,0) array level 2 dcl 83 set ref 349* 363* 393 396* 396 channel_start 000217 automatic fixed bin(17,0) array level 2 dcl 83 set ref 348* 362* 397 channel_stat 0(18) based bit(3) level 2 packed packed unaligned dcl 12-7 set ref 127* channels 11 based bit(18) level 2 packed packed unaligned dcl 5-74 set ref 383* 402 channels_online 3 based fixed bin(17,0) level 2 dcl 5-74 set ref 415* 415 channels_used 3 000217 automatic fixed bin(17,0) array level 2 dcl 83 set ref 350* 364* 397 398* 398 chantab based structure level 1 dcl 5-132 set ref 202 chantab_index 1 000217 automatic fixed bin(17,0) array level 2 dcl 83 set ref 351* 365* chnl_card based structure level 1 dcl 1-5 chnl_cardp 000360 automatic pointer dcl 1-3 set ref 353* 354* 355 355 358* 358 358 363 367 370 370 372 chx 000103 automatic fixed bin(35,0) dcl 64 in procedure "disk_init" set ref 406* 413 chx based fixed bin(35,0) level 2 in structure "chantab" dcl 5-132 in procedure "disk_init" set ref 413* ci 000110 automatic fixed bin(17,0) dcl 69 set ref 387* 399* 399 400 402 clock builtin function dcl 114 ref 171 code 0(18) based bit(3) level 2 packed packed unaligned dcl 11-21 set ref 428* 436* 445* 457* 467* command based bit(6) level 2 packed packed unaligned dcl 11-21 set ref 427* 434* 455* 465* config_$find_2 000012 constant entry external dcl 107 ref 354 config_card based structure level 1 dcl 3-13 config_card_type_word based structure level 1 dcl 3-18 config_data_$disk_drive_model_names 000022 external static structure level 1 dcl 2-148 confp parameter pointer dcl 59 ref 15 117 control 0(22) based bit(2) level 2 packed packed unaligned dcl 11-21 set ref 429* 438* count 000022 external static fixed bin(17,0) level 2 in structure "config_data_$disk_drive_model_names" dcl 2-148 in procedure "disk_init" ref 219 count 0(30) based bit(6) level 2 in structure "idcw" packed packed unaligned dcl 11-21 in procedure "disk_init" set ref 431* cp 000372 automatic pointer dcl 5-97 set ref 202 402* 404 406 413 414 420 420 426 433 440 444 448 450 450 454 460 464 currentsize builtin function dcl 114 ref 121 202 383 d 000240 automatic structure level 1 unaligned dcl 89 dcdcw 26 based bit(36) level 2 dcl 5-132 set ref 444 dctl$disk_inter 000014 constant entry external dcl 108 ref 406 406 dcw based structure level 1 dcl 10-7 dcwp 000402 automatic pointer dcl 10-4 set ref 440* 441 442 448* 460* 461 462 dddcw 27 based bit(36) level 2 dcl 5-132 set ref 448 depth 116 based float bin(27) array level 3 dcl 5-31 set ref 148 151 154 157 160 163 166 depth_map 121 based bit(18) array level 3 packed packed unaligned dcl 5-31 set ref 148* 151* 154* 157* 160* 163* 166* detailed_status 17 based bit(8) array level 2 packed packed unaligned dcl 5-132 set ref 450 450 dev_array 000112 automatic fixed bin(17,0) array dcl 71 set ref 252 252 252 266* 293 293 302 302 314 314 dev_index 11(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 5-74 set ref 271* device_0_valid 4 000022 external static bit(1) array level 3 dcl 2-148 ref 220 device_type 4 based fixed bin(8,0) level 2 packed packed unaligned dcl 13-26 ref 179 devname 3 based char(4) level 2 dcl 13-26 ref 180 devt 000111 automatic fixed bin(17,0) dcl 70 set ref 256* 257 258* 258* 260 263* 263 266 434 devtab 36 based structure array level 2 in structure "disktab" dcl 5-74 in procedure "disk_init" set ref 292 devtab based structure level 1 dcl 5-190 in procedure "disk_init" dim_info 10 based bit(36) level 2 dcl 13-26 set ref 185 disk_channel_table based structure array level 1 dcl 5-94 set ref 402 disk_data based structure level 1 dcl 5-31 set ref 121 disk_lock_meters based structure level 1 dcl 5-236 disk_seg$ 000024 external static fixed bin(17,0) dcl 5-24 set ref 118 diskp 000366 automatic pointer dcl 5-26 set ref 199* 202 202 202 205* 208 233 233 233 242 244 246 252 271 271 291 291 292 296 378 383 383 383 390 402 415 415 disksp 000364 automatic pointer dcl 5-26 set ref 118* 120 121 121 123 132 133 134 134 135 135 138 138 140 140 140 142 146 147 148 148 150 150 151 151 153 154 154 156 157 157 159 160 160 162 163 163 165 166 166 170 171 182 182 193 194 195 196 196 199 199 202 205 205 277 402 407 421 disktab based structure level 1 dcl 5-74 set ref 202 233 233 383 divide builtin function dcl 114 ref 188 dp 000374 automatic pointer dcl 5-187 set ref 292* 308 309 316 316 321 322 328 329 dscdcw 30 based bit(36) level 2 dcl 5-132 set ref 454 dsddcw 31 based bit(36) level 2 dcl 5-132 set ref 460 dskdcl_chans_per_subsys 000115 constant fixed bin(17,0) initial dcl 5-70 set ref 75 334 334* 368 400 error_table_$io_not_configured 000020 external static fixed bin(35,0) dcl 111 ref 407 ext 0(12) based bit(6) level 2 packed packed unaligned dcl 11-21 set ref 435* 456* 466* ext_ctl 0(21) based bit(1) level 2 packed packed unaligned dcl 11-21 set ref 437* 446* 458* 468* field_inx 000502 automatic fixed bin(17,0) dcl 485 set ref 487* 488 field_type 17 based bit(2) array level 3 packed packed unaligned dcl 3-13 ref 488 488 fieldp parameter pointer dcl 483 ref 479 487 fips_disk 000214 automatic bit(1) packed unaligned dcl 74 set ref 241* 242 first_dev 2 based fixed bin(17,0) level 2 packed packed unaligned dcl 5-74 set ref 242* 244* 246 252 291 float builtin function dcl 114 ref 150 fraction 2 based float bin(27) level 2 dcl 5-59 set ref 278 free_offset 1 based bit(18) level 2 dcl 5-31 set ref 120 121* 196 199 202* free_q 4 based structure level 2 dcl 5-31 set ref 132* free_q_entries 152 based structure array level 2 dcl 5-31 set ref 134 135 138 140 free_q_size 10 based fixed bin(17,0) level 2 dcl 5-31 ref 121 133 140 150 group 5 based structure array level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" set ref 217 239 239 248 group 2 based structure array level 2 in structure "chnl_card" dcl 1-5 in procedure "disk_init" groupx 000432 automatic fixed bin(17,0) dcl 214 set ref 217* 217* 218 220 223* hbound builtin function dcl 114 ref 217 248 252 252 252 258 260 head 7 based bit(18) level 3 packed packed unaligned dcl 5-31 set ref 138* i 000105 automatic fixed bin(17,0) dcl 66 in procedure "disk_init" set ref 133* 134 134 135 135* 248* 248* 250 250 252 256 258 260 265 268* 276* 277 278 280 280 281 281 284 285* 291* 292 293 293 293 296 298 298 298 298* 302 302 304 304 304 304 308 309 312 314 314 316 322* 355* 355* 358 358 363 367 370 370* 390* i 000433 automatic fixed bin(17,0) dcl 215 in procedure "IS_FIPS" set ref 219* 220 220* idcw based structure level 1 dcl 11-21 idcwp 000404 automatic pointer dcl 11-19 set ref 426* 427 428 429 430 431 433* 434 435 436 437 438 444* 445 446 454* 455 456 457 458 464* 465 466 467 468 idx 000104 automatic fixed bin(12,0) dcl 65 set ref 400* 406 in_use 6(18) based bit(1) level 2 packed packed unaligned dcl 5-132 set ref 414* intercept 14 000240 automatic float bin(27) array level 3 dcl 89 set ref 281* 285* io_chnl_util$iom_to_name 000026 constant entry external dcl 8-12 ref 340 370 io_manager$assign 000030 constant entry external dcl 9-10 ref 406 io_manager_arg based structure level 1 dcl 9-50 iom 2 based fixed bin(3,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" ref 340 iom 2 based fixed bin(3,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "disk_init" ref 355 370 j 000106 automatic fixed bin(17,0) dcl 67 set ref 246* 252 265 265 268* 268 271 339* 340 340* 362 365 368 370 374* 374 378 k 000107 automatic fixed bin(17,0) dcl 68 set ref 265* 266* 367* 370* 397* 404 406 407 421 last_dev 2(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 5-74 set ref 202 271* 291 296 383 limit 10 based bit(12) level 3 packed packed unaligned dcl 5-132 set ref 420 420 lock 3 based bit(36) level 2 packed packed unaligned dcl 5-31 set ref 142* logical_area_number 4(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 13-26 ref 208 major 0(02) based bit(4) level 2 packed packed unaligned dcl 12-7 set ref 126* max_depth 1 based float bin(27) level 2 in structure "sys_info" dcl 5-59 in procedure "disk_init" ref 279 280 281 281 max_depth 117 based float bin(27) array level 3 in structure "disk_data" dcl 5-31 in procedure "disk_init" set ref 147* 150* 153* 156* 159* 162* 165* max_depth_reset_time 114 based fixed bin(71,0) level 2 dcl 5-31 set ref 171* mod builtin function dcl 114 ref 293 298 304 304 391 model 1 000022 external static fixed bin(17,0) array level 3 in structure "config_data_$disk_drive_model_names" dcl 2-148 in procedure "disk_init" ref 220 model 5 based fixed bin(17,0) array level 3 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" set ref 217 218 220 223* 248 256 258 260* n_fields 17(32) based fixed bin(4,0) level 3 packed packed unsigned unaligned dcl 3-13 ref 488 name 000102 automatic char(4) dcl 63 in procedure "disk_init" set ref 180* 182 195 252* 260* 298* 298* 304* 334* 354* name 1 based char(4) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" set ref 227* 341* name 12 based char(4) array level 3 in structure "disk_data" packed packed unaligned dcl 5-31 in procedure "disk_init" set ref 182 195* 407* 421* name 1 based char(4) level 2 in structure "chnl_card" dcl 1-5 in procedure "disk_init" set ref 372* 488* names 1 000022 external static structure array level 2 dcl 2-148 nchan 4 based fixed bin(17,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "disk_init" set ref 358 358 363 367 nchan 1 based fixed bin(17,0) level 2 in structure "disktab" dcl 5-74 in procedure "disk_init" set ref 202 378* 390 nchan 4 based fixed bin(17,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "disk_init" ref 334 339 349 ndrives 6 based fixed bin(17,0) array level 3 dcl 4-5 set ref 250 250 252 265 268 next 152 based bit(18) array level 3 packed packed unaligned dcl 5-31 set ref 134* null builtin function dcl 114 ref 353 355 offset 11 based bit(18) array level 3 packed packed unaligned dcl 5-31 set ref 196* 205 opt_info 12 000240 automatic structure array level 2 in structure "d" unaligned dcl 89 in procedure "disk_init" set ref 275* 328 opt_info based structure level 1 dcl 5-217 in procedure "disk_init" opt_info 12 based structure array level 2 in structure "devtab" dcl 5-190 in procedure "disk_init" set ref 328* pdi 0(30) based fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 5-190 set ref 309* 316* 322* power 0(01) based bit(1) level 2 packed packed unaligned dcl 12-7 set ref 125* prev 152(18) based bit(18) array level 3 packed packed unaligned dcl 5-31 set ref 135* prph_dsk_card based structure level 1 dcl 4-5 prph_dsk_cardp 000362 automatic pointer dcl 4-3 set ref 117* 217 217 218 220 223 227 239* 239 239 248 248 250* 250 250 252 256 258 260 265 268 334 339 340 340 341 349 ptr builtin function dcl 114 ref 199 205 402 pvt$array 000032 external static fixed bin(17,0) dcl 13-18 set ref 176 pvt_array based structure array level 1 dcl 13-24 set ref 177 pvt_arrayp 000410 automatic pointer dcl 13-21 set ref 176* 177 pvtdi based structure level 1 dcl 5-229 pvtdip 000376 automatic pointer dcl 5-187 set ref 185* 186 188 190 190 pvte based structure level 1 dcl 13-26 pvtep 000412 automatic pointer dcl 13-22 set ref 177* 179 180 185 208 pvtx parameter fixed bin(17,0) dcl 58 in procedure "disk_init" ref 15 177 208 pvtx 36 based fixed bin(8,0) array level 3 in structure "disktab" packed packed unaligned dcl 5-74 in procedure "disk_init" set ref 208* qht based structure level 1 dcl 5-179 quentry based structure level 1 dcl 5-107 rcode 000212 automatic fixed bin(35,0) dcl 72 set ref 233* 234 340* 341 370* 372 406* 407 407 420* 421 421* 450* 451 rel builtin function dcl 114 ref 134 135 138 140 148 151 154 157 160 163 166 202 278 383 487 487 response 000057 constant float bin(27) initial array dcl 93 ref 280 281 rssdcw 32 based bit(36) level 2 dcl 5-132 set ref 464 rstdcw 23 based bit(36) level 2 dcl 5-132 set ref 426 scdcw 24 based bit(36) level 2 dcl 5-132 set ref 433 sddcw 25 based bit(36) level 2 dcl 5-132 set ref 440 sect_per_cyl 000011 constant fixed bin(17,0) initial array dcl 7-15 ref 188 190 sect_per_rec 000000 constant fixed bin(17,0) initial array dcl 7-21 ref 188 188 seek_command 000400 automatic bit(6) initial array packed unaligned dcl 6-84 set ref 6-84* 6-84* 6-84* 6-84* 6-84* 6-84* 6-84* 6-84* 6-84* 434 select_data 10 based structure level 2 dcl 5-132 shared_spindle 000022 constant bit(1) initial array packed unaligned dcl 6-78 ref 293 size builtin function dcl 114 ref 202 slope 13 000240 automatic float bin(27) array level 3 dcl 89 set ref 280* 284* stagnate_time 111 based fixed bin(35,0) level 2 dcl 5-31 set ref 170* statp 000406 automatic pointer dcl 12-5 set ref 123* 125 126 127 128 status based structure level 1 dcl 12-7 status_mask 2 based bit(36) level 2 dcl 5-31 set ref 123 statusp 2 based pointer level 2 dcl 5-132 set ref 406* substr builtin function dcl 114 ref 435 441 456 461 466 subsystems based fixed bin(17,0) level 2 dcl 5-31 set ref 182 193 194* sx 000100 automatic fixed bin(17,0) dcl 61 in procedure "disk_init" set ref 182* 182* 186 193 194 195 196 205 400 407 421 sx based fixed bin(11,0) level 2 in structure "pvtdi" packed packed unaligned dcl 5-229 in procedure "disk_init" set ref 186* sys_info based structure level 1 dcl 5-59 in procedure "disk_init" sys_info 116 based structure array level 2 in structure "disk_data" dcl 5-31 in procedure "disk_init" set ref 146* 277 sys_info 15 000240 automatic bit(18) array level 3 in structure "d" packed packed unaligned dcl 89 in procedure "disk_init" set ref 278* syserr 000016 constant entry external dcl 109 ref 223 227 252 260 298 304 334 341 372 407 421 488 sysp 000370 automatic pointer dcl 5-26 set ref 277* 278 279 280 281 281 tail 7(18) based bit(18) level 3 packed packed unaligned dcl 5-31 set ref 140* tally 0(24) based bit(12) level 2 packed packed unaligned dcl 10-7 set ref 442* 462* type 000101 automatic fixed bin(8,0) dcl 62 set ref 179* 188 188 188 190 type_word 17 based structure level 2 dcl 3-13 unspec builtin function dcl 114 set ref 132* 146* 275* 328* 328 329* unused_sect_per_cyl 0(24) based fixed bin(11,0) level 2 packed packed unaligned dcl 5-229 set ref 190* usable_sect_per_cyl 0(12) based fixed bin(11,0) level 2 packed packed unaligned dcl 5-229 set ref 188* 190 word based char(4) level 2 dcl 3-13 set ref 488* wq 6 based structure level 2 dcl 5-190 set ref 329* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANNOUNCE internal static fixed bin(17,0) initial dcl 14-7 BEEP internal static fixed bin(17,0) initial dcl 14-7 CHNL_CARD_WORD internal static char(4) initial dcl 1-27 CONFIG_DECIMAL_TYPE internal static bit(2) initial dcl 3-23 CONFIG_OCTAL_TYPE internal static bit(2) initial dcl 3-23 DSC_LISTX internal static fixed bin(12,0) initial dcl 5-241 EMPTY_FIELD internal static bit(36) initial dcl 3-34 FREE_CARD_WORD internal static char(4) initial dcl 3-29 IO_TYPE internal static char(16) initial array packed unaligned dcl 5-262 JUST_LOG internal static fixed bin(17,0) initial dcl 14-7 LOG internal static fixed bin(17,0) initial dcl 14-7 MODELN internal static fixed bin(17,0) initial array dcl 6-63 RSS_LISTX internal static fixed bin(12,0) initial dcl 5-241 RST_LISTX internal static fixed bin(12,0) initial dcl 5-241 SC_LISTX internal static fixed bin(12,0) initial dcl 5-241 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 14-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 14-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 14-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 14-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 14-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 14-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 14-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 14-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 14-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 14-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 14-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 14-7 VALID_CARD_WORD_CHARACTERS internal static char(38) initial packed unaligned dcl 3-31 VOLMAP_ASYNC_IDLE internal static fixed bin(17,0) initial dcl 13-113 VOLMAP_ASYNC_READ internal static fixed bin(17,0) initial dcl 13-113 VOLMAP_ASYNC_WRITE internal static fixed bin(17,0) initial dcl 13-113 ZERO_CARD_WORD internal static char(4) initial dcl 3-28 bootload_map defined bit(1) array packed unaligned dcl 5-279 bootload_mapping internal static bit(7) initial packed unaligned dcl 5-278 bulkdevt internal static fixed bin(4,0) initial dcl 6-43 cardp automatic pointer dcl 3-3 chnl_card_array based structure level 1 dcl 1-20 config_data_$ccu_model_names external static structure level 1 dcl 2-178 config_data_$chnl_cardx external static fixed bin(17,0) dcl 2-27 config_data_$clok_cardx external static fixed bin(17,0) dcl 2-29 config_data_$config_cards external static structure level 1 dcl 2-94 config_data_$console_model_names external static structure level 1 dcl 2-192 config_data_$cpu_cardx external static fixed bin(17,0) dcl 2-31 config_data_$fnp_cardx external static fixed bin(17,0) dcl 2-33 config_data_$intk_cardx external static fixed bin(17,0) dcl 2-35 config_data_$iom_cardx external static fixed bin(17,0) dcl 2-37 config_data_$ipc_fips_cardx external static fixed bin(17,0) dcl 2-45 config_data_$ipc_msp_model_names external static structure level 1 dcl 2-130 config_data_$ipc_mtp_model_names external static structure level 1 dcl 2-139 config_data_$mem_cardx external static fixed bin(17,0) dcl 2-39 config_data_$mpc_cardx external static fixed bin(17,0) dcl 2-49 config_data_$mpc_msp_cardx external static fixed bin(17,0) dcl 2-41 config_data_$mpc_msp_model_names external static structure level 1 dcl 2-104 config_data_$mpc_mtp_cardx external static fixed bin(17,0) dcl 2-43 config_data_$mpc_mtp_model_names external static structure level 1 dcl 2-113 config_data_$mpc_urp_cardx external static fixed bin(17,0) dcl 2-47 config_data_$mpc_urp_model_names external static structure level 1 dcl 2-122 config_data_$mpcs_cardx external static fixed bin(17,0) dcl 2-57 config_data_$mpcs_msp_cardx external static fixed bin(17,0) dcl 2-51 config_data_$mpcs_mtp_cardx external static fixed bin(17,0) dcl 2-53 config_data_$mpcs_urp_cardx external static fixed bin(17,0) dcl 2-55 config_data_$parm_cardx external static fixed bin(17,0) dcl 2-59 config_data_$part_cardx external static fixed bin(17,0) dcl 2-61 config_data_$printer_model_names external static structure level 1 dcl 2-164 config_data_$prph_cardx external static fixed bin(17,0) dcl 2-77 config_data_$prph_ccu_cardx external static fixed bin(17,0) dcl 2-71 config_data_$prph_dsk_cardx external static fixed bin(17,0) dcl 2-63 config_data_$prph_opc_cardx external static fixed bin(17,0) dcl 2-75 config_data_$prph_prt_cardx external static fixed bin(17,0) dcl 2-65 config_data_$prph_pun_cardx external static fixed bin(17,0) dcl 2-69 config_data_$prph_rdr_cardx external static fixed bin(17,0) dcl 2-67 config_data_$prph_tap_cardx external static fixed bin(17,0) dcl 2-73 config_data_$punch_model_names external static structure level 1 dcl 2-185 config_data_$reader_model_names external static structure level 1 dcl 2-171 config_data_$root_cardx external static fixed bin(17,0) dcl 2-79 config_data_$salv_cardx external static fixed bin(17,0) dcl 2-81 config_data_$schd_cardx external static fixed bin(17,0) dcl 2-83 config_data_$sst_cardx external static fixed bin(17,0) dcl 2-85 config_data_$stok_cardx external static fixed bin(17,0) dcl 2-87 config_data_$tape_drive_model_names external static structure level 1 dcl 2-156 config_data_$tbls_cardx external static fixed bin(17,0) dcl 2-89 config_data_$udsk_cardx external static fixed bin(17,0) dcl 2-91 config_deck based structure level 1 dcl 3-9 config_deck$ external static fixed bin(17,0) dcl 3-7 config_max_cards automatic fixed bin(17,0) dcl 3-5 config_n_cards automatic fixed bin(17,0) dcl 3-4 configp automatic pointer dcl 3-3 cyl_per_dev internal static fixed bin(17,0) initial array dcl 6-102 cyl_per_sv internal static fixed bin(17,0) initial array dcl 6-105 dev_time internal static float bin(27) initial array dcl 6-139 device_names internal static char(4) initial array dcl 6-66 dskdcl_chans_per_subsys_shift internal static fixed bin(17,0) initial dcl 5-71 dsu181devt internal static fixed bin(4,0) initial dcl 6-43 dsu190devt internal static fixed bin(4,0) initial dcl 6-43 dsu191devt internal static fixed bin(4,0) initial dcl 6-43 faultword based structure level 1 dcl 12-27 fips3380devt internal static fixed bin(4,0) initial dcl 6-43 fips3381devt internal static fixed bin(4,0) initial dcl 6-43 fips_type_disk internal static bit(1) initial array packed unaligned dcl 6-72 first_alt_sect_num internal static fixed bin(24,0) initial array dcl 6-130 first_dev_number internal static fixed bin(17,0) initial array dcl 6-69 first_rec_num internal static fixed bin(17,0) initial array dcl 6-115 first_sect_num internal static fixed bin(24,0) initial array dcl 6-124 io_chnl_util$canonicalize_chanid 000000 constant entry external dcl 8-8 io_chnl_util$name_to_iom 000000 constant entry external dcl 8-16 io_manager$assign_add 000000 constant entry external dcl 9-15 io_manager$connect 000000 constant entry external dcl 9-26 io_manager$connect_abs 000000 constant entry external dcl 9-29 io_manager$connect_direct 000000 constant entry external dcl 9-32 io_manager$get_status 000000 constant entry external dcl 9-35 io_manager$ignore_interrupt 000000 constant entry external dcl 9-41 io_manager$mask 000000 constant entry external dcl 9-38 io_manager$unassign 000000 constant entry external dcl 9-20 io_manager$unassign_delete 000000 constant entry external dcl 9-23 io_manager$workspace_tdcw 000000 constant entry external dcl 9-47 io_manager_arg_ptr automatic pointer dcl 9-49 last_alt_sect_num internal static fixed bin(24,0) initial array dcl 6-133 last_physical_sect_num internal static fixed bin(24,0) initial array dcl 6-136 last_rec_num internal static fixed bin(18,0) initial array dcl 6-118 last_sect_num internal static fixed bin(24,0) initial array dcl 6-127 last_sv_rec_num internal static fixed bin(18,0) initial array dcl 6-121 maxdevt internal static fixed bin(4,0) initial dcl 6-43 media_removable internal static bit(1) initial array packed unaligned dcl 6-75 msu0400devt internal static fixed bin(4,0) initial dcl 6-43 msu0450devt internal static fixed bin(4,0) initial dcl 6-43 msu0451devt internal static fixed bin(4,0) initial dcl 6-43 msu0500devt internal static fixed bin(4,0) initial dcl 6-43 msu0501devt internal static fixed bin(4,0) initial dcl 6-43 needs_alt_part internal static bit(1) initial array packed unaligned dcl 6-81 number_of_sv internal static fixed bin(17,0) initial array dcl 6-93 optp automatic pointer dcl 5-26 pcw based structure level 1 dcl 11-6 pcwp automatic pointer dcl 11-4 prph_dsk_card_array based structure level 1 dcl 4-21 pvt$max_n_entries external static fixed bin(17,0) dcl 13-19 qp automatic pointer dcl 5-97 rec_per_cyl internal static fixed bin(17,0) initial array dcl 6-108 rec_per_dev internal static fixed bin(21,0) initial array dcl 6-87 rec_per_sv internal static fixed bin(17,0) initial array dcl 6-90 sect_per_sv internal static fixed bin(24,0) initial array dcl 7-18 sect_per_track internal static fixed bin(17,0) initial array dcl 7-33 sect_per_vtoc internal static fixed bin(17,0) initial array dcl 7-26 sector_map defined bit(1) array packed unaligned dcl 5-274 sector_mapping internal static bit(7) initial packed unaligned dcl 5-273 special_status based structure level 1 dcl 12-35 tdcw based structure level 1 dcl 10-14 tdcwp automatic pointer dcl 10-4 tracks_per_cyl internal static fixed bin(17,0) initial array dcl 6-111 valid_sv_array internal static char(1) initial array packed unaligned dcl 6-99 valid_sv_string internal static char(3) initial packed unaligned dcl 6-96 vtoc_per_rec internal static fixed bin(17,0) initial array dcl 7-29 words_per_sect internal static fixed bin(17,0) initial array dcl 7-36 write_map defined bit(1) array packed unaligned dcl 5-269 write_mapping internal static bit(7) initial packed unaligned dcl 5-268 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_BUDDY 001724 constant label dcl 304 ref 314 IS_FIPS 001053 constant entry internal dcl 212 ref 241 MISSING_BUDDY 001634 constant label dcl 298 ref 312 TOO_MANY_CHANNELS 002047 constant label dcl 334 ref 368 absadr_error 002634 constant label dcl 421 ref 234 451 check_config_fields 003060 constant entry internal dcl 479 ref 239 250 358 disk_init 000351 constant entry external dcl 15 init_disk_database 001223 constant entry internal dcl 230 ref 200 re_scan_adaptor 002430 constant label dcl 391 ref 393 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3350 3404 3204 3360 Length 4070 3204 34 447 144 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME disk_init 526 external procedure is an external procedure. IS_FIPS internal procedure shares stack frame of external procedure disk_init. init_disk_database internal procedure shares stack frame of external procedure disk_init. check_config_fields internal procedure shares stack frame of external procedure disk_init. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME disk_init 000100 sx disk_init 000101 type disk_init 000102 name disk_init 000103 chx disk_init 000104 idx disk_init 000105 i disk_init 000106 j disk_init 000107 k disk_init 000110 ci disk_init 000111 devt disk_init 000112 dev_array disk_init 000212 rcode disk_init 000213 base disk_init 000214 fips_disk disk_init 000215 chan_array disk_init 000215 adaptor_index disk_init 000216 adaptor_count disk_init 000217 adaptor disk_init 000240 d disk_init 000360 chnl_cardp disk_init 000362 prph_dsk_cardp disk_init 000364 disksp disk_init 000366 diskp disk_init 000370 sysp disk_init 000372 cp disk_init 000374 dp disk_init 000376 pvtdip disk_init 000400 seek_command disk_init 000402 dcwp disk_init 000404 idcwp disk_init 000406 statp disk_init 000410 pvt_arrayp disk_init 000412 pvtep disk_init 000432 groupx IS_FIPS 000433 i IS_FIPS 000502 field_inx check_config_fields THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_e_as call_ext_out_desc call_ext_out return_mac alloc_auto_adj mdfx1 signal_op ext_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr config_$find_2 dctl$disk_inter io_chnl_util$iom_to_name io_manager$assign syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. config_data_$disk_drive_model_names disk_seg$ error_table_$io_not_configured pvt$array LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000345 75 000356 6 84 000364 407 000453 117 000455 118 000461 120 000463 121 000465 123 000475 125 000477 126 000501 127 000503 128 000505 132 000507 133 000512 134 000523 135 000532 136 000543 138 000545 140 000552 142 000560 146 000561 147 000564 148 000570 150 000574 151 000603 153 000611 154 000616 156 000624 157 000631 159 000637 160 000644 162 000652 163 000657 165 000665 166 000672 170 000700 171 000703 172 000706 176 000710 177 000713 179 000720 180 000723 182 000725 183 000742 185 000744 186 000747 188 000752 190 000760 193 000767 194 000772 195 000773 196 000777 199 001002 200 001005 202 001006 203 001026 205 001027 208 001036 210 001052 212 001053 217 001055 218 001071 219 001074 220 001105 222 001130 223 001132 226 001164 227 001166 228 001217 230 001223 233 001224 234 001244 239 001246 241 001253 242 001255 244 001264 246 001267 248 001272 250 001305 252 001312 256 001365 257 001372 258 001373 259 001411 260 001413 263 001454 265 001457 266 001475 267 001500 268 001502 269 001507 271 001511 275 001516 276 001521 277 001527 278 001533 279 001541 280 001546 281 001556 282 001563 284 001564 285 001567 287 001571 291 001573 292 001607 293 001613 296 001626 298 001634 302 001720 304 001724 308 001777 309 002004 310 002007 312 002010 314 002013 316 002016 318 002025 321 002026 322 002030 328 002032 329 002036 330 002041 334 002043 339 002102 340 002113 341 002142 343 002175 347 002177 348 002201 349 002202 350 002205 351 002206 353 002210 354 002212 355 002227 358 002246 361 002253 362 002254 363 002261 364 002267 365 002270 367 002272 368 002301 370 002304 372 002335 374 002370 375 002371 376 002373 378 002375 383 002401 387 002413 388 002414 389 002416 390 002417 391 002430 393 002435 396 002441 397 002443 398 002446 399 002447 400 002450 402 002461 404 002472 406 002502 407 002532 411 002577 413 002600 414 002602 415 002605 420 002607 421 002632 426 002703 427 002706 428 002710 429 002712 430 002716 431 002720 433 002722 434 002725 435 002732 436 002735 437 002737 438 002741 440 002745 441 002750 442 002753 444 002755 445 002760 446 002762 448 002764 450 002767 451 003012 454 003014 455 003017 456 003021 457 003025 458 003030 460 003032 461 003035 462 003040 464 003042 465 003045 466 003047 467 003051 468 003053 470 003055 472 003057 479 003060 487 003062 488 003075 494 003153 ----------------------------------------------------------- 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