The SMD and IPI disk drivers supplied with this release support a set of ioctl(2) requests for diagnostics and bad sector information.
Basic to these ioctl() requests are the definitions in <sys/hdio.h>.
The argument is a pointer to a hdk_type structure (described below). This ioctl() gets specific information from the hard disk.
HDKIOCSTYPE
The argument is a pointer to a hdk_type structure (described below). This ioctl() sets specific information about the hard disk.
/*
* Used for drive info
*/
struct hdk_type {
ushort_t hdkt_hsect; /* hard sector count (read only) */
ushort_t hdkt_promrev; /* prom revision (read only) */
uchar_t hdkt_drtype; /* drive type (ctlr specific) */
uchar_t hdkt_drstat; /* drive status (ctlr specific, ro) */
};
HDKIOCGBAD
The argument is a pointer to a hdk_badmap structure (described below). This ioctl() is used to get the bad sector map from the disk.
HDKIOCSBAD
The argument is a pointer to a hdk_badmap structure (described below). This ioctl() is used to set the bad sector map on the disk.
/*
* Used for bad sector map
*/
struct hdk_badmap {
caddr_t hdkb_bufaddr; /* address of user's map buffer */
};
HDKIOCGDIAG
The argument is a pointer to a hdk_diag structure (described below). This ioctl() gets the most recent command that failed along with the sector and error number
from the hard disk.
/*
* Used for disk diagnostics
*/
struct hdk_diag {
ushort_t hdkd_errcmd; /* most recent command in error */
daddr_t hdkd_errsect; /* most recent sector in error */
uchar_t hdkd_errno; /* most recent error number */
uchar_t hdkd_severe; /* severity of most recent error */
};