up | Inhaltsverzeichniss | Kommentar

Manual page for scsi_probe(9F)

scsi_probe - utility for probing a scsi device

SYNOPSIS

#include <sys/scsi/scsi.h>

int scsi_probe(struct scsi_device *devp, int (*waitfunc)());

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

ARGUMENTS

devp
Pointer to a scsi_device.9s structure
waitfunc
NULL_FUNC or SLEEP_FUNC

DESCRIPTION

scsi_probe() determines whether a target/lun is present and sets up the scsi_device structure with inquiry data.

scsi_probe() uses the SCSI Inquiry command to test if the device exists. It may retry the Inquiry command as appropriate. If scsi_probe() is successful, it will allocate space for the scsi_inquiry structure and assign the address to the sd_inq member of the scsi_device.9s structure. scsi_probe() will then fill in this scsi_inquiry.9s structure and return SCSIPROBE_EXISTS.

scsi_unprobe.9f is used to undo the effect of scsi_probe().

If the target is a non-CCS device, SCSIPROBE_NONCCS will be returned.

waitfunc indicates what the allocator routines should do when resources are not available; the valid values are:

NULL_FUNC
Do not wait for resources. Return SCSIPROBE_NOMEM or SCSIPROBE_FAILURE
SLEEP_FUNC
Wait indefinitely for resources.

RETURN VALUES

scsi_probe() returns:
SCSIPROBE_BUSY
Device exists but is currently busy.
SCSIPROBE_EXISTS
Device exists and inquiry data is valid.
SCSIPROBE_FAILURE
Polled command failure.
SCSIPROBE_NOMEM
No space available for structures.
SCSIPROBE_NONCCS
Device exists but inquiry data is not valid.
SCSIPROBE_NORESP
Device does not respond to an INQUIRY.

CONTEXT

scsi_probe() is normally called from the target driver's probe.9e or attach.9e routine. If waitfunc is SLEEP_FUNC, then this routine may only be called from user-level code. Otherwise, it may be called from either user or interrupt level.

EXAMPLE

    switch (scsi_probe(devp, NULL_FUNC)) {
    default:
    case SCSIPROBE_NORESP:
    case SCSIPROBE_NONCCS:
    case SCSIPROBE_NOMEM:
    case SCSIPROBE_FAILURE:
    case SCSIPROBE_BUSY:
            break;

    case SCSIPROBE_EXISTS:
            switch (devp->sd_inq->inq_dtype) {
            case DTYPE_DIRECT:
                    rval = DDI_PROBE_SUCCESS;
                    break;
            case DTYPE_RODIRECT:
                    rval = DDI_PROBE_SUCCESS;
                    break;
            case DTYPE_NOTPRESENT:
            default:
                    break;
            }
    }
    scsi_unprobe(devp);

SEE ALSO

attach.9e probe.9e scsi_slave.9f scsi_unprobe.9f scsi_unslave.9f scsi_device.9s scsi_inquiry.9s

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

NOTES

A waitfunc function other than NULL_FUNC or SLEEP_FUNC is not supported and may have unexpected results.


index | Inhaltsverzeichniss | Kommentar

Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 21/April/97