TARG(4) | FreeBSD Kernel Interfaces Manual | TARG(4) |
名称
targ — SCSI ターゲットエミュレータドライバ書式
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
device targ
解説
targ ドライバは、SCSI ターゲットデバイスをエミュレートするユーザモードプログラムのためのインタフェースを提供します。 ( da(4) に似た) ディスクドライブをエミュレートするサンプルプログラムは /usr/share/examples/scsi_target で見つけることができます。targ ドライバは、制御デバイス /dev/targ を供給します。デバイスをオープンした後に、ファイル記述子を特定のバス/ターゲット/LUN に結合しなければならないし、 TARGIOCENABLE ioctl を使用することでプロセス CCB を利用可能にしなければなりません。そしてプロセスは、CCB を SIM に送信するために write(2) を使用し、応答の準備ができているかどうかを調べるために poll(2) か kqueue(2) を使用します。完了した CCB へのポインタは read(2) によって返されます。 0 コピー IO を通してユーザ CCB が終了することによって任意のデータ転送が要求されます。
IOCTL
次の ioctl(2) 呼び出しはヘッダファイル < cam/scsi/scsi_targetio.h> で定義されます。- TARGIOCENABLE
-
(
struct ioc_enable_lun) 次の構造体によって指定された LUN でターゲットモードを有効にします。
struct ioc_enable_lun { path_id_t path_id; target_id_t target_id; lun_id_t lun_id; int grp6_len; int grp7_len; };
選択されたパス (バス)、ターゲット、LUN が既に使用中であってはなりません。または EADDRINUSE を返します。 grp6_len か grp7_len が 0 でなければ、ベンダ固有のコマンドは受理可能です。
- TARGIOCDISABLE
- ターゲットモードを無効にし、すべての未決の CCB を異常終了します。 CCB はそれらが完了するように任意に読み込むことができます。そして、異なった LUN を動かすために TARGIOCENABLE を呼び出すことができます。複数の無効呼び出しは効果がありません。ターゲットモードが有効であるなら、 close(2) システムコールは自動的にターゲットモードを無効にします。
- TARGIOCDEBUG
- ( int) 引数が 0 でなければ CAM_PERIPH デバッグを有効にし、そうでなければそれを無効にします。
- /dev/targ
- は、制御デバイスです。
関連ファイル
- < cam/scsi/scsi_targetio.h>
- ユーザモードインタフェースの説明。
- /sys/cam/scsi/scsi_target.c
- ドライバのソースファイルです。
- /dev/targ*
- 制御デバイスです。
関連項目
/usr/share/examples/scsi_target, ahc(4), isp(4), scsi(4) FreeBSD Target Information, http://www.root.org/~nate/freebsd/.作者
targ ドライバは、 FreeBSD 3.0 ではじめて登場し、 によって書かれました。それは、 FreeBSD 5.0 のために <nate@root.org>によって書き直されました。December 13, 2011 | FreeBSD |