xref: /titanic_50/usr/src/man/man9f/scsi_slave.9f (revision cc31cba96d9862a1075a8ec47d6149e04c7ad62d)
te
Copyright (c) 2002, Sun Microsystems, Inc., All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
SCSI_SLAVE 9F "Sep 27, 2002"
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));
INTERFACE LEVEL

The scsi_slave() function is obsolete. This function has been replaced by scsi_probe(9F).

PARAMETERS
devp

Pointer to a scsi_device(9S) structure.

callback

Pointer to a callback function, NULL_FUNC or SLEEP_FUNC.

DESCRIPTION

scsi_slave() checks for the presence of a SCSI device. Target drivers may use this function in their probe(9E) routines. scsi_slave() determines if the device is present by using a Test Unit Ready command followed by an Inquiry command. If scsi_slave() is successful, it will fill in the scsi_inquiry structure, which is the sd_inq member of the scsi_device(9S) structure, and return SCSI_PROBE_EXISTS. 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 have become available. callback must return either 0 (indicating that it attempted to allocate resources but again failed to do so), in which case it is put back on a list to be called again later, or 1 indicating either success in allocating 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

scsi_slave() is normally called from the target driver's probe(9E) or attach(9E) routine. In any case, this routine should not be called from interrupt context, because it can sleep waiting for memory to be allocated.

ATTRIBUTES

See attributes(5) for a description of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Stability Level Obsolete
SEE ALSO

attributes(5), attach(9E), probe(9E), ddi_iopb_alloc(9F), makecom(9F), scsi_dmaget(9F), scsi_ifgetcap(9F), scsi_pktalloc(9F), scsi_poll(9F), scsi_probe(9F), scsi_device(9S)

ANSI Small Computer System Interface-2 (SCSI-2)

Writing Device Drivers

NOTES

The scsi_slave() function is obsolete and will be discontinued in a future release. This function has been replaced by scsi_probe(9F).