1
0
Files
irix-657m-src/eoe/man/manD/scsi_command.d3x
2022-09-29 17:59:04 +03:00

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