SCSI_GET_DEVICE_TYPE_SCSI_OPTIONS(9F) Kernel Functions for Drivers SCSI_GET_DEVICE_TYPE_SCSI_OPTIONS(9F)

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

#include <sys/scsi/scsi.h>
int scsi_get_device_type_scsi_options(dev_info_t  *dip,
     struct scsi_device  *devp, int default_scsi_options);

illumos DDI specific (illumos DDI).

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.

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.

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.

This function can be called from kernel or interrupt context.

Writing Device Drivers
November 19, 2001 OmniOS