scsi_command(D3X)
scsi_command - issue a command to a SCSI device
Showing IRIX 6.5.30 (default release). Last changed in IRIX 6.5.5.
NAME scsi_command - issue a command to a SCSI device SYNOPSIS #include <sys/types.h> #include <sys/scsi.h> void (*scsi_command)(struct scsi_request *req); DESCRIPTION The host adapter driver scsi_command function issues a command to a SCSI device. The caller (a kernel level SCSI device driver) fills out a scsi_request structure and passes a pointer to it. There is no kernel object called scsi_command; rather, there is a pointer to each host adapter's scsi_command function in the sci_command field of the scsi_ctlr_info structure, which is attached to the vertex corresponding to the host adapter. The sr_lun_vhdl field of the request structure must contain the vertex handle of the device. A kernel panic will result if this is not done. The sr_notify field (address of call back function) must be filled in. Calls with NULL in sr_notify return with a failure indication in the sr_status field. Earlier versions of IRIX allowed the driver to pass a NULL callback address in sr_notify as a way of asking scsi_command to suspend the caller until the command completed. Now if the driver needs to sleep until the command completes, create a semaphore that is posted from the callback function. Other fields of the request structure are also required in order to make a successful request; see the SCSI chapter of the IRIX Device Driver Programmer's Guide and the comments in the scsi.h header file. Success or failure of the request is indicated by values returned in fields in the request structure. NOTES scsi_command is stored as a function pointer in the information hanging off the vertex handle corresponding to the host adapter in the hwgraph. Given a lun_vhdl (vertex handle of the device) the scsi_command function can be called as follows: scsi_lun_info_t *scsi_lun_info; ... scsi_lun_info = scsi_lun_info_get(lun_vhdl); SLI_COMMAND(scsi_lun_info)(scsi_request); SEE ALSO comments in /usr/include/sys/scsi.h, hwgraph.intro(D4X), scsi_alloc(D3X), scsi_free(D3X), scsi_info(D3X), scsi_ioctl(D3X), scsi_abort(D3X), SCSI chapter of the IRIX Device Driver Programmer's Guide