Kernel Functions for Drivers scsi_ext_sense_fields(9F)
NAME
scsi_ext_sense_fields, scsi_sense_info_uint64,
scsi_sense_cmdspecific_uint64 - retrieve fields from SCSI
sense dataSYNOPSIS
#include
void scsi_ext_sense_fields(uint8_t *sense_buffer, int *sense_buf_len,
uint8_t **information, uint8_t **cmd_spec_info, uint8_t **fru_code,
uint8_t **sk_specific, uint8_t **stream_flags);
boolean_t scsi_sense_info_uint64(uint8_t *sense_buffer, int sense_buf_len,
uint64_t *information);
boolean_t scsi_sense_cmdspecific_uint64(uint8_t *sense_buffer,
int sense_buf_len, uint64_t *cmd_spec_info);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
sense_buffer Pointer to a buffer containing SCSI sense
data. The sense data is expected in wire format starting at the response code. Itcan be in either a fixed or descriptor for-
mat.information For scsi_ext_sense_fields(), this is a
call-by-reference pointer to uint8_t. A
pointer to the INFORMATION field in thesense data may be returned in this parame-
ter.The scsi_sense_info_uint64() function
requires a pointer to uint64_t. The data in
the information field is returned as a 64 bit integer. If the sense data information field is 32 bits, fixed format, the mostsignificant 32-bits are 0.
cmd_spec_info For scsi_ext_sense_fields(), this is a
call-by-reference pointer to uint8_t. A
pointer to the COMMAND_SPECIFIC INFORMATION
field in the sense data can be returned inSunOS 5.11 Last change: 29 Jun 2006 1
Kernel Functions for Drivers scsi_ext_sense_fields(9F)
this parameter.The scsi_sense_cmdspecific_uint64() func-
tion requires a pointer to uint64_t. The
data in the command specific information field is returned as a 64 bit integer. If the sense data command specific information field is 32 bits, fixed format, the mostsignificant 32-bits are 0.
fru_code Call-by-reference pointer to uint8_t. A
pointer to the FIELD REPLACEABLE UNIT CODE field in the sense data can be returned in this parameter.sk_specific Call-by-reference pointer to uint8_t. A
pointer to the SENSE KEY SPECIFIC field in the sense data can be returned in this parameter.stream_flags Call-by-reference pointer to uint8_t. A
pointer to the byte containing the ILI, EOM, and FILEMARK flags can be returned in this parameter.DESCRIPTION
The scsi_ext_sense_fields() function can be used to retrieve
any of the extended sense data fields from a sense data buffer, regardless of whether the sense data is in fixed format or in descriptor format.The information, cmd_spec_info, fru_code, sk_specific, and
stream_specific parameters are all call-by-reference output
parameters. Each parameter corresponds to one or more of the extended sense data fields. Any of these parameters can bepassed as NULL if the caller is not interested in the asso-
ciated data. If the requested data is present and valid for each output parameter, the pointer passed in is set to point to the relevant location in the sense buffer. If the data is not present or invalid, the pointer is set to NULL. For example, a caller that requests a pointer to the information field would get NULL when an information descriptor is not present for descriptor format sense data or when the valid bit is not set for fixed format sense data.SunOS 5.11 Last change: 29 Jun 2006 2
Kernel Functions for Drivers scsi_ext_sense_fields(9F)
The information and command specific information fields can be 4 bytes or 8 bytes in length, depending on whether the sense data is in fixed or descriptor format respectively.Drivers can use scsi_validate_sense(9F) to determine the
sense data format and, by extension, the length of the information and command specific information fields. A driver can determine whether integer data is included in the information or command specific information fields based on the asc and ascq sense keys, such as the LBA of a faileddisk request. The scsi_sense_info_uint64() function
retrieves the contents of the information field as a 64 bitinteger and the scsi_sense_cmdspecific_uint64() retrieves
the command specific information field as a 64 bit integer.Drivers should use scsi_validate_sense(9F) to ensure that
the sense buffer contains valid sense data.RETURN VALUES
The scsi_sense_info_uint64() function returns TRUE if the
information field is present and valid. Otherwise it returns FALSE.The scsi_sense_cmdspecific_uint64() function returns TRUE if
the command specific information field is present and valid. Otherwise it returns FALSE.CONTEXT
The scsi_ext_sense_fields(), scsi_sense_info_uint64() and
scsi_sense_cmdspecific_uint64()() functions can be called
from user or interrupt context.SEE ALSO
scsi_find_sense_descr(9F), scsi_sense_asc(9F),
scsi_sense_ascq(9F), scsi_sense_key(9F),
scsi_validate_sense(9F)
SunOS 5.11 Last change: 29 Jun 2006 3