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;
The members of the scsi_extended_adr structure are:
The members of the scsi_adr structure are:
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).
a default translation for the simple SCSI addresses
is provided by using the
Drivers written for HBAs
that use the extended addressing scheme
must set the flag HBA_EXT_ADDRESS
version_num member of the
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.