man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2014
 
 

scsi_get_device_type_scsi_options(9F)

Name

scsi_get_device_type_scsi_options - look up per-device-type scsi-options property

Synopsis

#include <sys/scsi/scsi.h>

int scsi_get_device_type_scsi_options(dev_info_t  *dip, 
     struct scsi_device  *devp, int default_scsi_options);

Interface Level

Solaris DDI specific (Solaris DDI).

Parameters

dip

Pointer to the device info node for this HBA driver.

devp

Pointer to a scsi_device(9S) structure of the target.

default_scsi_options

Value returned if no match is found.

Description

The scsi_get_device_type_scsi_options() function looks up the property device-type-scsi-options-list, which can be specified in the HBA's driver.conf (4) file. This property allows specification of scsi-options on a per-device-type basis.

The formal syntax is:

device-type-scsi-options-list = <duplet> [, <duplet> *];

where:

<duplet> := <vid+pid>, <scsi-options-property-name>

and:

<scsi-options-property-name> = <value>;

The string <vid+pid> is returned by the device on a SCSI inquiry command. This string can contain any character in the range 0x20-0x7e. Characters such as double quote (") or single quote ('), which are not permitted in property value strings, are represented by their octal equivalent (for example, \042 and \047). Trailing spaces can be truncated.

For example:

device-type-scsi-options-list=
        "SEAGATE ST32550W",  "seagate-options",
        "EXABYTE EXB-2501".  "exabyte-options",
        "IBM OEM DFHSS4S",  "ibm-options";

seagate-options = 0x78;
exabyte-options = 0x58;
ibm-options = 0x378;

The scsi_get_device_type_scsi_options() function searches the list of duplets for a matching INQUIRY string. If a match is found, scsi_get_device_type_scsi_options() returns the corresponding value.

Return Values

scsi_get_device_type_scsi_options() returns the scsi-options value found, or if no match is found the default_scsi_options value passed in.

Context

This function can be called from kernel or interrupt context.

See Also

Writing Device Drivers for Oracle Solaris 11.2