The high-level SCSI interface in the kernel manages all of the interaction between the kernel and the low-level SCSI device driver. Because of this layered design, a low-level SCSI driver need only provide a few basic services to the high-level code. The author of a low-level driver does not need to understand the intricacies of the kernel I/O system and, hence, can write a low-level driver in a relatively short amount of time.
Two main structures (
Scsi_Cmnd) are used to
communicate between the high-level code and the low-level code. The next
two sections provide detailed information about these structures and the
requirements of the low-level driver.