xref: /titanic_50/usr/src/man/man9s/scsi_device.9s (revision c10c16dec587a0662068f6e2991c29ed3a9db943)
te
Copyright (c) 2000, 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_device 9S "19 Feb 1993" "SunOS 5.11" "Data Structures for Drivers"
NAME
scsi_device - SCSI device structure
SYNOPSIS

#include <sys/scsi/scsi.h>
INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

DESCRIPTION

The scsi_device structure stores common information about each SCSI logical unit, including pointers to areas that contain both generic and device specific information. There is one scsi_device structure for each logical unit attached to the system. The host adapter driver initializes part of this structure prior to probe(9E) and destroys this structure after a probe failure or successful detach(9E).

STRUCTURE MEMBERS
struct scsi_address sd_address; /* Routing info. */
dev_info_t *sd_dev; /* Cross-ref. to */
 /* dev_info_t */
kmutex_t sd_mutex; /* Mutex for this dev. */
struct scsi_inquiry *sd_inq; /* scsi_inquiry data struc. */
struct scsi_extended_sense *sd_sense; /* Optional request */
 /* sense buffer ptr */
caddr_t sd_private; /* Target drivers 
 private data */

sd_address contains the routing information that the target driver normally copies into a scsi_pkt(9S) structure using the collection of makecom(9F) functions. The SCSA library routines use this information to determine which host adapter, SCSI bus, and target/logical unit number (lun) a command is intended for. This structure is initialized by the host adapter driver.

sd_dev is a pointer to the corresponding dev_info structure. This pointer is initialized by the host adapter driver.

sd_mutex is a mutual exclusion lock for this device. It is used to serialize access to a device. The host adapter driver initializes this mutex. See mutex(9F).

sd_inq is initially NULL (zero). After executing scsi_probe(9F), this field contains the inquiry data associated with the particular device.

sd_sense is initially NULL (zero). If the target driver wants to use this field for storing REQUEST SENSE data, it should allocate an scsi_extended_sense(9S) buffer and set this field to the address of this buffer.

sd_private is reserved for the use of target drivers and should generally be used to point to target specific data structures.

SEE ALSO

detach(9E), probe(9E), makecom(9F), mutex(9F), scsi_probe(9F), scsi_extended_sense(9S), scsi_pkt(9S)

Writing Device Drivers