old-www/HOWTO/archived/SCSI-Programming-HOWTO/SCSI-Programming-HOWTO-10.html

81 lines
4.2 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux SCSI programming HOWTO: The Sense Buffer</TITLE>
<LINK HREF="SCSI-Programming-HOWTO-11.html" REL=next>
<LINK HREF="SCSI-Programming-HOWTO-9.html" REL=previous>
<LINK HREF="SCSI-Programming-HOWTO.html#toc10" REL=contents>
</HEAD>
<BODY>
<A HREF="SCSI-Programming-HOWTO-11.html">Next</A>
<A HREF="SCSI-Programming-HOWTO-9.html">Previous</A>
<A HREF="SCSI-Programming-HOWTO.html#toc10">Contents</A>
<HR>
<H2><A NAME="s10">10. The Sense Buffer</A></H2>
<P>
<A NAME="sec-sensebuff"></A>
Commands with no output data can give status information via the sense
buffer (which is part of the header structure). Sense data is
available when the previous command has terminated with a CHECK
CONDITION status. In this case the kernel automatically retrieves the
sense data via a REQUEST SENSE command. Its structure is:
<P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
+=====-========-========-========-========-========-========-========-========+
| Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|Byte | | | | | | | | |
|=====+========+==============================================================|
| 0 | Valid | Error Code (70h or 71h) |
|-----+-----------------------------------------------------------------------|
| 1 | Segment Number |
|-----+-----------------------------------------------------------------------|
| 2 |Filemark| EOM | ILI |Reserved| Sense Key |
|-----+-----------------------------------------------------------------------|
| 3 | (MSB) |
|- - -+--- Information ---|
| 6 | (LSB) |
|-----+-----------------------------------------------------------------------|
| 7 | Additional Sense Length (n-7) |
|-----+-----------------------------------------------------------------------|
| 8 | (MSB) |
|- - -+--- Command-Specific Information ---|
| 11 | (LSB) |
|-----+-----------------------------------------------------------------------|
| 12 | Additional Sense Code |
|-----+-----------------------------------------------------------------------|
| 13 | Additional Sense Code Qualifier |
|-----+-----------------------------------------------------------------------|
| 14 | Field Replaceable Unit Code |
|-----+-----------------------------------------------------------------------|
| 15 | SKSV | |
|- - -+------------ Sense-Key Specific ---|
| 17 | |
|-----+-----------------------------------------------------------------------|
| 18 | |
|- - -+--- Additional Sense Bytes ---|
| n | |
+=============================================================================+
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>Note: The most useful fields are Sense Key (see section
<A HREF="SCSI-Programming-HOWTO-21.html#sec-sensekeys">sec-sensekeys</A>
),
Additional Sense Code and Additional Sense Code Qualifier (see
section
<A HREF="SCSI-Programming-HOWTO-22.html#sec-sensecodes">sec-sensecodes</A>
). The latter two are used combined as a pair.
<P>
<P>
<P>
<HR>
<A HREF="SCSI-Programming-HOWTO-11.html">Next</A>
<A HREF="SCSI-Programming-HOWTO-9.html">Previous</A>
<A HREF="SCSI-Programming-HOWTO.html#toc10">Contents</A>
</BODY>
</HTML>