|
|
#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_versionsdi_extended_adrsa_lunsa_bussa_extasa_ctThe members of the scsi_extended_adr structure are:
versionscsi_adrThe members of the scsi_adr structure are:
scsi_ctlscsi_busscsi_targetscsi_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.