|
|
The modular design of the SCSI interface allows any SCSI peripheral driver to work with any SCSI host adapter driver. This is accomplished by having a clearly-defined protocol between the SCSI peripheral driver tier and the SCSI host adapter tier.
Information about the I/O request is put into a scsi_io_req(D4osdi) structure that is populated by the SCSI peripheral driver's read(D2osdi), write(D2osdi), or ioctl(D2osdi) routine. This structure is then passed to the SCSI host adapter driver's _entry(D2osdi) routine, which arranges the actual I/O to or from the device. The SCSI host adapter hardware notifies the host adapter driver when the I/O operation is complete. The SCSI host adapter's intr(D2osdi) routine calls the SCSI peripheral driver's intr( ) routine (also called the callback funtion) to notify it that the I/O operation has completed, and the callback function either initiates another I/O operation and/or informs the user-level process that the I/O is completed.