カーネルソースにある下記のヘッダファイルが、sg ドライバに関連しています。
/usr/src/linux/include/scsi/sg.h |
Section E.1で指摘した通り、アプリケーションからの利用にあたっては、
#include <linux/../scsi/sg.h> |
ここでは sg.h に定義してある内、ユーザが変更したいと思われるものをいくつか 挙げてあります。現状のデフォルトの値は、右側の{}内に表示してあります。
SG_SCATTER_SZ {32768}
SG_DEF_RESERVED_SIZE {SG_SCATTER_SZ}
SG_DEF_FORCE_LOW_DMA {0}
SG_DEF_FORCE_PACK_ID {0}
SG_DEF_KEP_ORPHAN {0}
SG_MAX_QUEUE {16}
SG_DEFAULT_RETRIES {1} # i.e. don't retry
SG_BIG_BUFF {SG_DEF_RESERVED_SIZE}
SG_DEFAULT_TIMEOUT {60 seconds}
SG_DEF_COMMAND_Q {0 *}
SG_DEF_UNDERRUN_FLAG {0}
* 新しい sg_io_hdr 構造体に基づく write()が検出されると、ファイルごとの
ディスクリプタにおけるコピーは、すぐ 1 に変わります(つまり、コマンド
キューが有効になる)。
|
下記の ioctl()はアルファベット順にリストしてあり、簡単な説明が右側に 書いてあります。(sg のドキュメントを参照)。
SG_EMULATED_HOST [アダプタが ide-scsi かどうかを示す]
SG_GET_COMMAND_Q [コマンドキューフラグの状態]
SG_GET_KEEP_ORPHAN [中断された SG_IO keep orphan フラグの状態]
SG_GET_LOW_DMA [「low dma フラグ」(i386 で <= 16 MB)の状態]
SG_GET_NUM_WAITING [read()待ち応答数]
SG_GET_PACK_ID [次に read()する pack_id 応答(無い場合は -1)]
SG_GET_REQUEST_TABLE [実行されたリクエストの配列を生成]
SG_GET_RESERVED_SIZE [予約バッファの現状の大きさ]
SG_GET_SCSI_ID [中間レベルの SCSI_IOCTL_GET_IDLUN ioctl よりも少し
詳しい情報]
SG_GET_SG_TABLESIZE [ホストの scatter gather テーブルの最大エントリー数]
SG_GET_TIMEOUT [タイムアウトの生成(単位:ジフィー(jyffy。i386 で 10ms)]
SG_GET_TRANSFORM [ide-scsi transform フラグの状態]
SG_IO [SCSI コマンドを送り、応答を待つ]
SG_NEXT_CMD_LEN [次のコマンドのコマンド長を変更]
SG_SCSI_RESET [SCSI バス、デバイス、ホストにリセットを送る]
SG_SET_COMMAND_Q [コマンドキューの状態を設定{old=0, new=1}]
SG_SET_DEBUG [デバックレベルの設定{0}]
SG_SET_KEEP_ORPHAN [SG_IO keep orphan フラグの設定 {0}]
SG_SET_FORCE_LOW_DMA [DMA buffer を low に強制(i386 で <= 16 MB) {0}]
SG_SET_FORCE_PACK_ID [pack_id で read()を実行{0}]
SG_SET_RESERVED_SIZE [デフォルトのバッファサイズを変更
{SG_DEF_RESERVED_SIZE}]
SG_SET_TIMEOUT [現在のタイムアウトを変更{60 secs} ]
SG_SET_TRANSFORM [ide-scsi の ATAPI transform フラグ {0}]
open() [認識する O_ フラグ: O_RDONLY, O_RDWR, O_EXCL, O_NONBLOCK]
close()
read()
write()
ioctl()
poll() [O_NONBLOCK モードの時に使用]
fasync() [read() に対する SIGIO シグナル生成を有効に]
|