|
|
#include <sys/sdi.h>
The scsi_ad structure points to the sdi_extended_adr structure, which is used for HBA s that use the extended addressing scheme that is supported for SCO SVR5 2.X and SVR5.
The sdi_extended_adr structure points to the scsi_adr structure, which contains information about the controller, target, bus, and logical unit numbers for devices that use the extended address scheme. This information is accessed only through a set of macros defined later on this page.
int pdi_adr_version; struct sdi_extended_adr unsigned char sa_lun; unsigned char sa_bus: 3; unsigned char sa_exta: 5; short sa_ct;
The sdi_extended_adr structure is defined as follows:
int version; major_t major; minor_t minor; struct scsi_adr scsi_adr;
The scsi_adr structure is defined as follows:
int scsi_ctl; int scsi_bus; int scsi_target; int scsi_lun;
pdi_adr_version
sdi_extended_adr
sa_lun
sa_bus
sa_exta
sa_ct
The members of the scsi_extended_adr structure are:
version
scsi_adr
The members of the scsi_adr structure are:
scsi_ctl
scsi_bus
scsi_target
scsi_lun
In the current structure definition,
there are no limitations regarding the maximum number of devices.
The former address model
supported 32 devices with 32 Logical Units per device.
This is replaced by a simple integer
(providing 2^32 unique addresses
and can be translated by SDI into whatever
address is appropriate for the given HBA).
For compatibility,
a default translation for the simple SCSI addresses
is provided by using the
sa_lun
, sa_bus
,
sa_exta
, and sa_ct
members.
Drivers written for HBAs
that use the extended addressing scheme
must set the flag HBA_EXT_ADDRESS
in the version_num
member of the
hba_idata_v5(D4sdi)
structure and use
these macros to retrieve the controller,
target, bus, and logical unit numbers:
#define SDI_HAN_32(x) ((x)->extended_address->scsi_adr.scsi_ctl) #define SDI_TCN_32(x) ((x)->extended_address->scsi_adr.scsi_target) #define SDI_LUN_32(x) ((x)->extended_address->scsi_adr.scsi_lun) #define SDI_BUS_32(x) ((x)->extended_address->scsi_adr.scsi_bus)
long sa_major; long sa_minor; unsigned char sa_lun; unsigned char sa_exlun; short sa_fill;
For DDI 7 and earlier versions, the SDI_* macros take the minor number returned by geteminor(D3) as an argument.