81 lines
4.2 KiB
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>
|