USB テープ・クライアント・デバイス・ドライバー
目的
順次アクセス・テープ・デバイス・ドライバー用の USB (Universal Serial Bus) プロトコルをサポートします。
構文
#include <sys/devinfo.h>
#include <sys/usb.h>
#include <sys/tape.h>
#include <sys/usbdi.h>
装置依存のサブルーチン
ほとんどのテープ操作は、 open、 close、 read、および write サブルーチンを使用してインプリメントされます。 ただし、デバイスを Diagnostic モードで開く必要がある場合は、 openx サブルーチンを使用する必要があります。
サブルーチンのオープンとクローズ
openx サブルーチンは、主に診断コマンドおよびユーティリティーに使用されます。 サブルーチンを実行するには、適切な権限が必要です。 を実行するとopenx必要な権限を持たないサブルーチンの場合、サブルーチンは次の値を返します。-1そして、エラーグローバル変数をEPERM。
openx サブルーチンは、デバイス・ドライバーの Diagnostic モードを使用可能にし、コマンド再試行ロジックを使用不可にします。 このアクションにより、診断処理に関連した特殊な機能を実行する ioctl 操作が可能になります。 openx サブルーチンは、オープンを強制し、予約を保持することもできます。
open サブルーチンは、オブジェクト・データ・マネージャー (ODM) reserve_policy 属性に基づく予約ポリシーを適用します。 USB テープ・デバイスは Small Computer System Interface (SCSI) 予約コマンドをサポートしない可能性があるため、これらのコマンドは無視される可能性があります。
openx サブルーチンに渡される ext パラメーターは、ターゲット・デバイスに使用される操作を選択します。 /usr/include/sys/scsi.h ファイルは、 ext パラメーターに指定できる値を定義します。
内線 パラメーターには、以下のフラグ値の任意の論理組み合わせを含めることができます。
| 項目 | 説明 |
|---|---|
| SC_FORCED_OPEN | アクセスを禁止できるデバイス上のすべてのタイプの予約を削除することにより、デバイスへのアクセスを強制します。 予約を削除するアクションのタイプは、設定された予約の特定のタイプによって異なります。 このフラグを指定すると、大容量ストレージ・バルク・デバイスである USB テープに対して大容量ストレージ・リセット・コマンドが発行されます。 |
| SC_診断 | 選択したデバイスを Diagnostic モードにします。 このモードは単独で使用できます。 つまり、デバイスが Diagnostic モードの場合、 open または close 操作中に SCSI 操作が実行され、エラー・ロギングは無効になります。 Diagnostic モードでは、 close 操作と ioctl 操作のみが受け入れられます。 その他のデバイス対応サブルーチンは、-1そして、エラーグローバル変数をEACCES。ターゲット装置が現在オープンされていない場合にのみ、装置を |
ioctl サブルーチン
USB テープ・デバイスでは、以下の ioctl 操作がサポートされます。
| 操作 | 説明 |
|---|---|
| IOCINFO | 呼び出し元によって渡される devinfo 引数に、以下の値を設定します。 |
| スティオクトップ | src/bos/usr/include/sys/tape.h ファイルに定義されている停止構造のアドレスを指定します。 停止構造内の st_op フィールドにある操作は、巻き戻し、消去、および保存の操作を除き、 st_count 回実行されます。この
|
| STIOCTOP (続き) |
|
| STPASSTHRU (標準 RU) | sc_passthru 構造の scsi_cdb セクション内の SCSI コマンドを受け取り、それを USB テープ・ドライバーに発行します。 この操作は STIOCMD ioctl 操作と似ていますが、唯一の例外として、エラーに関する詳細情報を提供する sc_passthru 構造体の追加情報フィールドがあります。以下の例は、 |