CH(4) FreeBSD カーネルインタフェースマニュアル CH(4)
名称
ch − SCSI メディアチェンジャ (ジュークボックス) ドライバ |
書式
device ch |
device ch1 target 4 lun 0 |
解説 |
ch ドライバは、 SCSI メディアチェンジャをサポートします。このドライバは、 多くのスロットに存在するメディアを複数のドライブの間で多重化して利用でき るようにします。チェンジャデバイスには、オプションとしてバーコードリーダ を備え付けることもできます。このリーダを使い、メディアに付随する情報を読 み込みます。 SCSI チェンジャをシステムに組み込む前に、SCSI アダプタを別途組み込んでお く必要があります。 ブート時に SCSI アダプタをプローブしているときに、 SCSI バスを走査しデバ イスを探します。‘Changer’ タイプであると応答するデバイスが見つかると、そ れらは ch ドライバに「アタッチ」されます。 2.1 より前のリリースの FreeBSD では、最初に見つかったデバイスが ch0 にアタッチされ、以後見つかったデバイ スは順次、 ch1 などにアタッチされます。 2.1 から、あるデバイスがどの ch ユニットとして接続すべきかを指定できるようになりました。このためのカーネ ル設定については、 scsi(4) を参照して下さい。 |
カーネル設定
設定の際に、オプションとして count を指定した場合、その数だけの SCSI メ ディアチェンジャが設定されます。ドライバの記憶領域のほとんどは、デバイス が見つかった時にのみ割り当てられるので、たくさんのデバイスを設定しても高 くはつきません (ひとたび最初のデバイスがドライバを組み込んだ場合)。 |
IOCTL
ユーザモードプログラムは、次に示す ioctl を使ってチェンジャドライバとデー タのやりとりを行ないます。カーネルとチェンジャデバイスとの間のデータのや りとりで使用される、チェンジャエレメントのアドレスは、 0 から始まる論理ア ドレスに割り当てられます。エレメントのタイプは次のように指定します。 |
CHET_MT
メディア移動エレメント (ピッカ) CHET_ST CHET_IE CHET_DT 次に示す ioctl(2) 呼び出しがチェンジャに適用されます。これらはヘッダファ イル 〈sys/chio.h〉 で定義されます。 CHIOMOVE u_int cm_fromtype; /* 移動元エレメントのタイプ */ |
/* その他フラグ */ |
cm_flags フィールドの CM_INVERT が設定されている場合、メ ディアチェンジャは移動中にメディアを反転させるように指示さ れます。 |
CHIOEXCHANGE
(struct changer_exchange) これは、移動元エレメントにあるメ ディアを最初の移動先エレメントに移動させ、最初の移動先エレ メントにあったメディアを 2 番目の移動先エレメントに移動させ ます。単純な交換の場合、移動元と 2 番目の移動先とは同じであ る必要があります。この操作の遂行に際し現在のピッカが用いら れます。影響を受けるエレメントのアドレス は、changer_exchange 構造体に含めて ioctl に対して指定しま す。この構造体は少なくとも次の要素を持ちます。 u_int ce_srctype; /* 移動元エレメントのタイプ */ |
/* 移動元の論理ユニット */ |
u_int ce_fdsttype; /* 最初の移動先エレメントのタイプ
*/ |
/* その他フラグ */ |
ce_flags の中で、CM_INVERT1 と CM_INVERT2 を設定でき、これ らはそれぞれ、最初のメディアと 2 番目のメディアを移動中に反 転させます。 この機能はテストしていません。 |
CHIOPOSITION
(struct changer_position) これは、現在のピッカを移動させ指 定したエレメントの前に置きます。エレメントは changer_position 構造体で指定します。これは少なくとも次の要 素を持ちます。 u_int cp_type; /* エレメントのタイプ */ cp_flags フィールドで CP_INVERT を設定でき、これは移動中に ピッカを反転させます。 |
CHIOGPICKER
(int) これは、現在のピッカの論理アドレスを返します。 CHIOSPICKER CHIOGPARAMS u_int cp_npickers; /* ピッカの数 */ アプリケーションが CHIGSTATUS ioctl を用いてジュークボック スの状態を調べるに先だって、ジュークボックスの諸元を問い合 わせる際に、この呼び出しを使用できます。 |
CHIOIELEM
これは、メディアチェンジャデバイスに対し、INITIALIZE ELEMENT STATUS 呼び出しを行ないます。これにより、メディア チェンジャは、ロードしているメディアに関する内部状態情報を 更新させられます。チェンジャがラベルリーダを持つ場合、バー コードラベルの走査もあわせて行ないます。この呼び出しでは、 ch ドライバの状態は影響を受けません。 CHIOGSTATUS CHIOGSTATUS の呼び出しごとに、あるタイプの 1 つ以上のエレメ ントの状態が問い合わされます。 アプリケーションは changer_element_status_request 構造体を ch ドライバに渡します。この構造体は次に示すフィールドを持ち ます。 u_int cesr_element_type; ドライバはこの構造体を読み込み、タイプ、論理ベースアドレ ス、エレメント数を決定し、cesr_element_status フィールドが 指す changer_element_status 構造体の配列にどの情報を返すか を知ります。アプリケーションは、 cesr_element_count 個の状 態構造体 (次を見て下さい) を保持するのに十分な大きさのメモ リを割り当てる必要があります。cesr_flags にオプションで CESR_VOLTAGS を設定し、ボリュームタグ (バーコード) 情報を ジュークボックスから読み込んで返す必要があることを通知でき ます。 cesr_element_base フィールドと cesr_element_count フィール ドは、チェンジャの物理的構成に照らして正当な値でなければな りません。もし正当な値でない場合、 CHIOGSTATUS ioctl は EINVAL エラーコードを返します。 エレメントについての情報は、changer_element_status 構造体の 配列の中に返されます。この構造体は少なくとも次に示すフィー ルドを持ちます。 u_int ces_addr; /* メディアチェンジャのエレメントアドレス */ u_char ces_flags; /* 以下の CESTATUS の定義を参照 */ u_char ces_sensecode; /* エレメントの追加センスコード */ u_char ces_sensequal; /* 追加センスコード修飾子 */ u_char ces_invert; /* 反転ビット */ u_char ces_svalid; /* 移動元アドレス (ces_source) が有効 */ u_short ces_source; /* メディアの移動元アドレス */ changer_voltag_t ces_pvoltag; /* プライマリボリュームタグ */ changer_voltag_t ces_avoltag; /* 代替ボリュームタグ */ u_char ces_idvalid; /* ces_scsi_id が有効 */ u_char ces_scsi_id; /* エレメントの SCSI id (ces_idvalid が非 0 の場合) */ u_char ces_lunvalid; /* ces_scsi_lun が有効 */ u_char ces_scsi_lun; /* エレメントの SCSI lun (ces_lunvalid が非 0 の場合) */ ces_addr フィールドは、メディアチェンジャの座標系で表したエ レメントのアドレスを保持します。ドライバはこれを使用しませ ん。診断目的のみで使用して下さい。 ces_flags フィールドに対し、次に示すフラグが定義されます。 |
CESTATUS_FULL
メディアが存在します。 CESTATUS_IMPEXP CESTATUS_EXCEPT CESTATUS_ACCESS CESTATUS_EXENAB CESTATUS_INENAB すべてのエレメントタイプに対しすべてのフラグが有効とは限ら ないことに注意して下さい。 注 |
このバージョンの ch ドライバは、DEC TZ875 (5 スロット、1 DLT ドライブ) と Breece Hill Q47 (60 スロット、4 DLT ドライブ、バーコードリーダ付き) を用 いてテストしてあります。 テストに利用できたデバイスが必要なコマンドをサポートしていないという事実 により、 ch ドライバがサポートする機能の多くは、完全にテストできていませ ん。これは、代替ボリュームタグ、メディア反転、エレメントの持ち込み/持ち出 し操作、複数ピッカ操作、その他の機能があります。 |
作者
ch は、 And Communications, http://www.and.com/ の
Jason R. Thorpe 〈thorpej@and.com〉
が記述しました。これを、その手のデバイスを持っていた |
関連ファイル
/dev/ch[0-9]
デバイスエントリ 診断 |
メディアチェンジャが ch ドライバが要求する機能をサポートしていない場合、 ここで記述した ioctl に対し、コンソールエラーメッセージとエラーリターン コードを生成します。 |
関連項目
歴史
ch は、386BSD 0.1 で現れました。 FreeBSD May 14, 1998 FreeBSD |