Filewatcher File Search
FTP Search
  
Directory 
  
Content Search 
   
pkg://SCSI-Programming-HOWTO.tar.gz:32672/SCSI-Programming-HOWTO-11.html  downloads

<!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: センスバッファを用いる例</TITLE>
 <LINK HREF="SCSI-Programming-HOWTO-12.html" REL=next>
 <LINK HREF="SCSI-Programming-HOWTO-10.html" REL=previous>
 <LINK HREF="SCSI-Programming-HOWTO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="SCSI-Programming-HOWTO-12.html">次のページ</A>
<A HREF="SCSI-Programming-HOWTO-10.html">前のページ</A>
<A HREF="SCSI-Programming-HOWTO.html#toc11">目次へ</A>
<HR>
<H2><A NAME="s11">11. センスバッファを用いる例</A></H2>

<P>
<P>ここではメディアが装置に塔載されているかどうかを検査するために TEST
UNIT READY コマンドを使用します。inquiry の例にあるヘッダの宣言と関数 
<CODE>handle_SCSI_cmd</CODE> が同様に必要です。
<P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
                        Table 73: TEST UNIT READY Command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation Code (00h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical Unit Number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+
</PRE>
</CODE></BLOCKQUOTE>
<P>以下がこれを実装した関数です:
<P>
<BLOCKQUOTE><CODE>
<PRE>
#define TESTUNITREADY_CMD 0
#define TESTUNITREADY_CMDLEN 6

#define ADD_SENSECODE 12
#define ADD_SC_QUALIFIER 13
#define NO_MEDIA_SC 0x3a
#define NO_MEDIA_SCQ 0x00

int TestForMedium ( void )
{
  /* request READY status */
  static unsigned char cmdblk [TESTUNITREADY_CMDLEN] = {
      TESTUNITREADY_CMD, /* command */
                      0, /* lun/reserved */
                      0, /* reserved */
                      0, /* reserved */
                      0, /* reserved */
                      0};/* control */

  memcpy( cmd + SCSI_OFF, cmdblk, sizeof(cmdblk) );

  /*
   * +------------------+
   * | struct sg_header | &lt;- cmd
   * +------------------+
   * | copy of cmdblk   | &lt;- cmd + SCSI_OFF
   * +------------------+
   */

  if (handle_SCSI_cmd(sizeof(cmdblk), 0, cmd, 
                            0, NULL)) {
      fprintf (stderr, "Test unit ready failed\n");
      exit(2);
  }

  return
   *(((struct sg_header*)cmd)->sense_buffer +ADD_SENSECODE) != 
                                                        NO_MEDIA_SC ||
   *(((struct sg_header*)cmd)->sense_buffer +ADD_SC_QUALIFIER) != 
                                                        NO_MEDIA_SCQ;
}
</PRE>
</CODE></BLOCKQUOTE>
<P>この<CODE>main</CODE>関数と組み合わせると、チェックを行うことができます。
<P>
<BLOCKQUOTE><CODE>
<PRE>
void main( void )
{
  fd = open(DEVICE, O_RDWR);
  if (fd &lt; 0) {
    fprintf( stderr, "Need read/write permissions for "DEVICE".\n" );
    exit(1);
  }

  /* look if medium is loaded */

  if (!TestForMedium()) {
    printf("device is unloaded\n");
  } else {
    printf("device is loaded\n");
  }
}
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>付録のファイル <CODE>generic_demo.c</CODE> には両方の例が含まれます。
<P>
<HR>
<A HREF="SCSI-Programming-HOWTO-12.html">次のページ</A>
<A HREF="SCSI-Programming-HOWTO-10.html">前のページ</A>
<A HREF="SCSI-Programming-HOWTO.html#toc11">目次へ</A>
</BODY>
</HTML>
Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2009 MARUHN Internet Solutions