Skip Navigation Links | |
Exit Print View | |
man pages section 9: DDI and DKI Kernel Functions Oracle Solaris 11.1 Information Library |
csx_AccessConfigurationRegister(9F)
csx_Parse_CISTPL_BYTEORDER(9F)
csx_Parse_CISTPL_CFTABLE_ENTRY(9F)
csx_Parse_CISTPL_DEVICEGEO(9F)
csx_Parse_CISTPL_DEVICEGEO_A(9F)
csx_Parse_CISTPL_DEVICE_OA(9F)
csx_Parse_CISTPL_DEVICE_OC(9F)
csx_Parse_CISTPL_LINKTARGET(9F)
csx_Parse_CISTPL_LONGLINK_A(9F)
csx_Parse_CISTPL_LONGLINK_C(9F)
csx_Parse_CISTPL_LONGLINK_MFC(9F)
ddi_get_soft_iblock_cookie(9F)
ddi_intr_get_supported_types(9F)
ddi_prop_lookup_byte_array(9F)
ddi_prop_lookup_int64_array(9F)
ddi_prop_lookup_string_array(9F)
ddi_prop_update_byte_array(9F)
ddi_prop_update_int64_array(9F)
ddi_prop_update_string_array(9F)
ldi_prop_lookup_byte_array(9F)
ldi_prop_lookup_int64_array(9F)
ldi_prop_lookup_string_array(9F)
mac_prop_info_set_default_link_flowctrl(9F)
mac_prop_info_set_default_str(9F)
mac_prop_info_set_default_uint8(9F)
mac_prop_info_set_range_uint32(9F)
net_event_notify_unregister(9F)
net_instance_notify_register(9F)
net_instance_notify_unregister(9F)
net_instance_protocol_unregister(9F)
net_protocol_notify_register(9F)
nvlist_lookup_boolean_array(9F)
nvlist_lookup_boolean_value(9F)
nvlist_lookup_nvlist_array(9F)
nvlist_lookup_string_array(9F)
nvlist_lookup_uint16_array(9F)
nvlist_lookup_uint32_array(9F)
nvlist_lookup_uint64_array(9F)
nvpair_value_boolean_array(9F)
pci_plist_lookup_int16_array(9F)
pci_plist_lookup_int32_array(9F)
pci_plist_lookup_int64_array(9F)
pci_plist_lookup_int8_array(9F)
pci_plist_lookup_string_array(9F)
pci_plist_lookup_uint16_array(9F)
pci_plist_lookup_uint32_array(9F)
pci_plist_lookup_uint64_array(9F)
pci_plist_lookup_uint8_array(9F)
scsi_get_device_type_scsi_options(9F)
scsi_get_device_type_string(9F)
scsi_sense_cmdspecific_uint64(9F)
usb_get_current_frame_number(9F)
usb_get_max_pkts_per_isoc_request(9F)
usb_pipe_get_max_bulk_transfer_size(9F)
usb_pipe_stop_intr_polling(9F)
usb_pipe_stop_isoc_polling(9F)
- display a SCSI request sense message
#include <sys/scsi/scsi.h> void scsi_errmsg(struct scsi_device *devp, struct scsi_pkt *pktp, char *drv_name, int severity, daddr_t blkno, daddr_t err_blkno, struct scsi_key_strings *cmdlist, struct scsi_extended_sense *sensep);
Solaris DDI specific (Solaris DDI).
Pointer to the scsi_device(9S) structure.
Pointer to a scsi_pkt(9S) structure.
String used by scsi_log(9F).
Error severity level, maps to severity strings below.
Requested block number.
Error block number.
An array of SCSI command description strings.
A pointer to a scsi_extended_sense(9S) structure.
The scsi_errmsg() function interprets the request sense information in the sensep pointer and generates a standard message that is displayed using scsi_log(9F). The first line of the message is always a CE_WARN, with the continuation lines being CE_CONT. sensep may be NULL, in which case no sense key or vendor information is displayed.
The driver should make the determination as to when to call this function based on the severity of the failure and the severity level that the driver wants to report.
The scsi_device(9S) structure denoted by devp supplies the identification of the device that requested the display. severity selects which string is used in the “Error Level:” reporting, according to the following table:
|
The cmdlist is described in the structure below:
struct scsi_key_strings { int key; char *message; };
For a basic SCSI disk, the following list is appropriate:
static struct scsi_key_strings scsi_cmds[] = { 0x00, "test unit ready", 0x01, "rezero/rewind", 0x03, "request sense", 0x04, "format", 0x07, "reassign", 0x08, "read", 0x0a, "write", 0x0b, "seek", 0x12, "inquiry", 0x15, "mode select", 0x16, "reserve", 0x17, "release", 0x18, "copy", 0x1a, "mode sense", 0x1b, "start/stop", 0x1e, "door lock", 0x28, "read(10)", 0x2a, "write(10)", 0x2f, "verify", 0x37, "read defect data", 0x3b, "write buffer", –1, NULL };
The scsi_errmsg() function may be called from user, interrupt, or kernel context.
Example 1 Generating error information.
This entry:
scsi_errmsg(devp, pkt, "sd", SCSI_ERR_INFO, bp->b_blkno, err_blkno, sd_cmds, rqsense);
Generates:
WARNING: /sbus@1,f8000000/esp@0,800000/sd@1,0 (sd1): Error for Command: read Error Level: Informational Requested Block: 23936 Error Block: 23936 Vendor: QUANTUM Serial Number: 123456 Sense Key: Unit Attention ASC: 0x29 (reset), ASCQ: 0x0, FRU: 0x0
cmn_err(9F), scsi_log(9F), scsi_device(9S), scsi_extended_sense(9S), scsi_pkt(9S)