カーネルソースにある下記のヘッダファイルが、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 シグナル生成を有効に] |