scsi_slave(9F)
NAME
scsi_slave − utility for SCSI target drivers to establish the presence of a target
SYNOPSIS
#include <sys/scsi/scsi.h>
int scsi_slave(struct scsi_device ∗devp, int (∗callback)(void));
ARGUMENTS
devp Pointer to a scsi_device(9S) structure.
callback Pointer to a callback function, NULL_FUNC or SLEEP_FUNC.
INTERFACE LEVEL
SPARC architecture specific (SPARC DDI).
DESCRIPTION
scsi_slave() checks for the presence of a SCSI device. Target drivers use this function in their probe(9E) routine. scsi_slave() determines if the device is present by using TEST UNIT READYs followed by an INQUIRY. The scsi inquiry data is returned in the sd_inq member of the scsi_device(9S) pointed to by devp. This information can be used to determine if the target driver has probed the correct SCSI device type. callback indicates what the allocator routines should do when DMA resources are not available:
NULL_FUNC Do not wait for resources. Return a NULL pointer.
SLEEP_FUNC
Wait indefinitely for resources.
Other Values callback points to a function which is called when resources may become available. callback must return either 0 (indicating that it attempted to allocate a DMA mapping but failed to do so, again), in which case it is put back on a list to be called again later, or 1 indicating either success in allocating DMA resources or indicating that it no longer cares for a retry.
RETURN VALUES
scsi_slave() returns:
SCSIPROBE_NOMEM No space available for structures.
SCSIPROBE_EXISTS Device exists and inquiry data is valid.
SCSIPROBE_NONCCS Device exists but inquiry data is not valid.
SCSIPROBE_FAILURE Polled command failure.
SCSIPROBE_NORESP No response to TEST UNIT READY.
CONTEXT
Refer to scsi_pktalloc(9F) for details on the usage of callbacks. scsi_slave() is normally called from the target’s probe(9E) routine.
SEE ALSO
probe(9E), ddi_iopb_alloc(9F), makecom(9F), scsi_dmaget(9F), scsi_ifgetcap(9F), scsi_pktalloc(9F), scsi_poll(9F), scsi_device(9S)
ANSI Small Computer System Interface-2 (SCSI-2)
SunOS 5.1 Writing Device Drivers
SunOS 5.1 — Last change: 17 Sep 1992