scsi_command(D3X)scsi_command(D3X)NAMEscsi_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.
NOTESscsi_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);
Page 1
scsi_command(D3X)scsi_command(D3X)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
Page 2