81 lines
2.2 KiB
Plaintext
81 lines
2.2 KiB
Plaintext
.TH scsi_command D3X
|
|
.SH NAME
|
|
scsi_command \- issue a command to a SCSI device
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.ft 3
|
|
#include <sys/types.h>
|
|
#include <sys/scsi.h>
|
|
.sp .8v
|
|
void
|
|
(*scsi_command)(struct scsi_request *\f2req\fP);
|
|
.ft 1
|
|
.fi
|
|
.SH DESCRIPTION
|
|
The host adapter driver
|
|
.I 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.
|
|
.P
|
|
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.
|
|
.P
|
|
The
|
|
.I 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.
|
|
.P
|
|
The
|
|
.I sr_notify
|
|
field (address of call back function) must be filled in.
|
|
Calls with NULL in
|
|
.I sr_notify
|
|
return with a failure indication in the
|
|
.I sr_status
|
|
field.
|
|
Earlier versions of IRIX allowed the driver to
|
|
pass a NULL callback address in
|
|
.I sr_notify
|
|
as a way of asking
|
|
.I 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.
|
|
.P
|
|
Other fields of the request structure are also required in order
|
|
to make a successful request;
|
|
see the SCSI chapter of the
|
|
.I "IRIX Device Driver Programmer's Guide"
|
|
and the comments in the scsi.h header file.
|
|
.P
|
|
Success or failure of the request is indicated by values
|
|
returned in fields in the request structure.
|
|
.SH NOTES
|
|
.I 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
|
|
.I lun_vhdl
|
|
(vertex handle of the device)
|
|
the scsi_command function can be called as follows:
|
|
.Ex
|
|
scsi_lun_info_t *scsi_lun_info;
|
|
...
|
|
scsi_lun_info = scsi_lun_info_get(lun_vhdl);
|
|
SLI_COMMAND(scsi_lun_info)(scsi_request);
|
|
.Ee
|
|
.SH 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
|