SCSI_DEVICE(9S)          Data Structures for Drivers         SCSI_DEVICE(9S)
NAME
       scsi_device - SCSI device structure
SYNOPSIS
       #include <sys/scsi/scsi.h>
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
DESCRIPTION
       The 
scsi_device structure stores common information about each SCSI
       logical unit, including pointers to areas that contain both generic
       and device specific information. There is one 
scsi_device structure
       for each logical unit attached to the system. The host adapter driver
       initializes part of this structure prior to 
probe(9E) and destroys
       this structure after a probe failure or successful 
detach(9E).
STRUCTURE MEMBERS
         struct scsi_address        sd_address; /* Routing info. */
         dev_info_t                 *sd_dev;    /* Cross-ref. to */
                                                /* dev_info_t */
         kmutex_t                   sd_mutex;   /* Mutex for this dev. */
         struct scsi_inquiry        *sd_inq;    /* scsi_inquiry data struc. */
         struct scsi_extended_sense *sd_sense;  /* Optional request */
                                                /* sense buffer ptr */
         caddr_t                    sd_private; /* Target drivers
                                                   private data */       
sd_address contains the routing information that the target driver
       normally copies into a 
scsi_pkt(9S) structure using the collection of       
makecom(9F) functions. The 
SCSA library routines use this information
       to determine which host adapter, 
SCSI bus, and target/logical unit
       number (lun) a command is intended for. This structure is initialized
       by the host adapter driver.       
sd_dev is a pointer to the corresponding 
dev_info structure. This
       pointer is initialized by the host adapter driver.       
sd_mutex is a mutual exclusion lock for this device. It is used to
       serialize access to a device. The host adapter driver initializes
       this mutex.  See 
mutex(9F).       
sd_inq is initially 
NULL (zero). After executing 
scsi_probe(9F), this
       field contains the inquiry data associated with the particular
       device.       
sd_sense is initially 
NULL (zero). If the target driver wants to use
       this field for storing 
REQUEST SENSE data, it should allocate an       
scsi_extended_sense(9S) buffer and set this field to the address of
       this buffer.       
sd_private is reserved for the use of target drivers and should
       generally be used to point to target specific data structures.
SEE ALSO
       detach(9E), 
probe(9E), 
makecom(9F), 
mutex(9F), 
scsi_probe(9F),       
scsi_extended_sense(9S), 
scsi_pkt(9S)       Writing Device Drivers                              February 19, 1993              SCSI_DEVICE(9S)