|
|
coherent
aatt -- Device Driver
/ddeevv/aatt* 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.
aatt handles two drives with up to four partitions each. Minor devices 0
through 3 identify the partitions on drive 0. Minor devices 4 through 7
identify the partitions on drive 1. Minor device 128 allows access to all
of drive 0. Minor device 129 allows access to all of drive 1. To modify
the offsets and sizes of the partitions, use the command ffddiisskk on the
special device for each drive (minor devices 128 and 129).
To access a disk partition through COHERENT, directory /ddeevv 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 mmkknnoodd 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
_K_e_r_n_e_l _V_a_r_i_a_b_l_e_s
Please note that the COHERENT 286 kernel references variables with a
trailing underscore character; for example, aattppaarrmm_. The COHERENT 386
kernel, however, does _n_o_t use a trailing underscore; for example, aattppaarrmm.
The following descriptions apply to both COHERENT 286 and COHERENT 386, but
the notation will be in the COHERENT-386 form.
_D_r_i_v_e _C_h_a_r_a_c_t_e_r_i_s_t_i_c_s
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 iinnffoo command from ttbboooott. It is often
necessary to patch the aatt 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 aattppaarrmm in
the driver. For the first hard drive, number of cylinders is a short (two-
byte) value at aattppaarrmm+00, number of heads is a single byte at aattppaarrmm+22, and
number of sectors per track is a single byte at aattppaarrmm+1144. For the second
hard drive, number of cylinders is a short value at aattppaarrmm+1166, number of
heads is a single byte at aattppaarrmm+1188, and number of sectors per track is a
single byte at aattppaarrmm+3300. For example, if tteessttccoohh is a kernel linked with
the aatt 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 aatt driver is running,
use the call to iiooccttll of the following form:
#include <sys/hdioctl.h>
hdparm_t hdparms;
. . .
ioctl(fd, HDGETA, (char *)&hdparms);
where _f_d is a file descriptor for the hard disk device and _h_d_p_a_r_m_s receives
the disk characteristics.
_N_o_n-_S_t_a_n_d_a_r_d _a_n_d _U_n_s_u_p_p_o_r_t_e_d _T_y_p_e_s _o_f _D_r_i_v_e_s
Prior releases of the the COHERENT aatt 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 /ccoohheerreenntt image
on the hard disk.
_F_i_l_e_s
/ddeevv/aatt* -- Block-special files
/ddeevv/rraatt* -- Character-special files
_S_e_e _A_l_s_o
ddeevviiccee ddrriivveerrss, ffddiisskk
_N_o_t_e_s
You can patch integer variable AATTSSRREEGG to specify normal or alternate
polling. Use addresss 0x3F6 for normal polling, which works with most
newer drives. Use address 0x1F7 for alternate polling, which is necessary
for Perstor controllers and some other older equipment. The driver is
shipped with a default value of 0x3F6; patching is usually done during
installation as needed. Setting this variable improperly causes frequent
controller timeouts and bad-track messages.
Integer variable AATTSSEECCSS specifies 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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.