at" -- Device Driver" "
Drivers for hard-disk partitions
/dev/at* are the COHERENT system's AT
devices for the hard-disk's partitions. Each device is
assigned major-device number 11, and may be accessed as a
block- or character-special device.
at handles two drives with up to four
partitions each:
- +o
- Minor devices 0 through 3 identify the partitions on
drive 0.
- +o
- Minor devices 4 through 7 identify the partitions on
drive 1.
- +o
- Minor device 128 allows access to all of drive 0.
- +o
- Minor device 129 allows access to all of drive 1.
To modify the offsets and sizes of the partitions, use the
command fdisk on the special device for
each drive (minor devices 128 and 129).
To access a disk partition through COHERENT, directory
/dev must contain a device file that has
the appropriate type, major and minor device numbers, and
permissions. To create a special file for this device,
invoke the command mknod as follows:
/etc/mknod /dev/at0a b 11 0 ; : drive 0, partition 0
/etc/mknod /dev/at0b b 11 1 ; : drive 0, partition 1
/etc/mknod /dev/at0c b 11 2 ; : drive 0, partition 2
/etc/mknod /dev/at0d b 11 3 ; : drive 0, partition 3
/etc/mknod /dev/at0x b 11 128 ; : drive 0, partition table
Drive Characteristics
When processing BIOS I/O requests prior to booting COHERENT,
many IDE drives use translation-mode drive parameters:
number of heads, cylinders, and sectors per track. These
numbers are called ``translation-mode'' parameters because
they do not reflect true physical drive geometry. The
translation-mode parameters used by the BIOS code present on
your host adapter can be obtained using the command
info from within the tertiary-boot routine
tboot. (For details on info, see
the Lexicon entry for tboot.) It is often
necessary to patch the at driver with BIOS
values of translation-mode parameters in order to boot
COHERENT on IDE hard drives. In COHERENT versions 3.1.0 and
later, drive parameters are stored in table
atparm in the driver. For the first hard
drive, number of cylinders is a short (two-byte) value at
atparm+0, number of heads is a single byte at
atparm+2, and number of sectors per track is a
single byte at atparm+14. For the second hard
drive, number of cylinders is a short value at
atparm+16, number of heads is a single byte at
atparm+18, and number of sectors per track is
a single byte at atparm+30. For example, if
testcoh is a kernel linked with the
at driver and you want to patch it for a
second hard drive with 829 cylinders, 10 heads, and 26
sectors per track, you can do:
/conf/patch testcoh atparm+16=829:s atparm+18=10:c atparm+30=26:c
To read the characteristics of a hard disk once the
at driver is running, use the call to
ioctl of the following form:
#include <sys/hdioctl.h>
hdparm_t hdparms;
. . .
ioctl(fd, HDGETA, (char *)&hdparms);
where fd is a file descriptor for the hard-disk
device and hdparms receives the disk
characteristics.
Non-Standard and Unsupported Types of Drives
Prior releases of the the COHERENT at hard-
disk driver would not support disk drives whose geometry was
not supported by the BIOS disk parameter tables. COHERENT
adds support for these drives during installation by
``patching'' the disk parameters into the bootstrap and the
/coherent image on the hard disk.
Files
//ddeevv//aatt** -- Block-special files
//ddeevv//rraatt** -- Character-special files
See Also
Notes
The driver at offers two varieties of
polling: normal and alternate. Normal, as its name implies,
is used with most varieties of AT controllers. Alternate
polling is for Perstor controllers and some other older
equipment. Using the wrong type of polling causes frequent
controller timeouts and bad-track messages.
A
at also lets you specify the number of
seconds to wait for a response from the drive after an I/O
request. The default value is six. Some IDE drives
occasionally become unresponsive for long intervals (several
seconds) while control firmware makes adjustments to drive
operation.
A
To set either the type of polling or the default waiting
period, su to the superuser
root; then cd to directory
/etc/conf and run the script
at/mkdev. This script will walk you through
describing your AT controller to COHERENT. Once you have
run this script, execute the command
/etc/conf/bin/idmkcoh -o cohtest
A
to create a test kernel that incorporates your changes; then
reboot your system and invoke the new kernel, as described
in the Lexicon entry booting. Note that the
changes you make to the driver will not be seen by your
COHERENT system until you boot the new kernel.
A
The at driver lets you have up to two AT
hard disks on your system. Note, however, that in our
experience, it is very difficult to combine different brands
of AT hard disks and have both run successfully. This is
especially true with Conner drives, which apparently do not
cooperate with other IDE drives as master and slave.
Caveat utilitor.