diff options
author | Sergio Carlavilla Delgado <carlavilla@FreeBSD.org> | 2021-01-25 23:31:29 +0000 |
---|---|---|
committer | Sergio Carlavilla Delgado <carlavilla@FreeBSD.org> | 2021-01-25 23:31:29 +0000 |
commit | 989d921f5d4ac8d8b7c831c13b8954ad1901be24 (patch) | |
tree | a5d768f9af4b55422fdf5b17064879ae1c7ce032 /documentation/manual-pages/ja/man3/cam.3 | |
parent | 0cff342f42461c5081b98bce7581f43df319e4f4 (diff) |
Diffstat (limited to 'documentation/manual-pages/ja/man3/cam.3')
-rw-r--r-- | documentation/manual-pages/ja/man3/cam.3 | 490 |
1 files changed, 490 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man3/cam.3 b/documentation/manual-pages/ja/man3/cam.3 new file mode 100644 index 0000000000..31b349861b --- /dev/null +++ b/documentation/manual-pages/ja/man3/cam.3 @@ -0,0 +1,490 @@ +.\" +.\" Copyright (c) 1998 Kenneth D. Merry. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" %FreeBSD: src/lib/libcam/cam.3,v 1.5.2.6 2001/12/17 10:08:28 ru Exp % +.\" +.\" $FreeBSD$ +.Dd October 10, 1998 +.Os +.Dt CAM 3 +.Sh 名称 +.Nm cam_open_device , +.Nm cam_open_spec_device , +.Nm cam_open_btl , +.Nm cam_open_pass , +.Nm cam_close_device , +.Nm cam_close_spec_device , +.Nm cam_getccb , +.Nm cam_send_ccb , +.Nm cam_freeccb , +.Nm cam_path_string , +.Nm cam_device_dup , +.Nm cam_device_copy , +.Nm cam_get_device +.Nd CAM ユーザライブラリ +.Sh ライブラリ +.Lb libcam +.Sh 書式 +.In stdio.h +.In camlib.h +.Ft struct cam_device * +.Fo cam_open_device +.Fa "const char *path" +.Fa "int flags" +.Fc +.Ft struct cam_device * +.Fo cam_open_spec_device +.Fa "const char *dev_name" +.Fa "int unit" +.Fa "int flags" +.Fa "struct cam_device *device" +.Fc +.Ft struct cam_device * +.Fo cam_open_btl +.Fa "path_id_t path_id" +.Fa "target_id_t target_id" +.Fa "lun_id_t target_lun" +.Fa "int flags" +.Fa "struct cam_device *device" +.Fc +.Ft struct cam_device * +.Fo cam_open_pass +.Fa "const char *path" +.Fa "int flags" +.Fa "struct cam_device *device" +.Fc +.Ft void +.Fo cam_close_device +.Fa "struct cam_device *dev" +.Fc +.Ft void +.Fo cam_close_spec_device +.Fa "struct cam_device *dev" +.Fc +.Ft union ccb * +.Fo cam_getccb +.Fa "struct cam_device *dev" +.Fc +.Ft int +.Fo cam_send_ccb +.Fa "struct cam_device *device" +.Fa "union ccb *ccb" +.Fc +.Ft void +.Fo cam_freeccb +.Fa "union ccb *ccb" +.Fc +.Ft char * +.Fo cam_path_string +.Fa "struct cam_device *dev" +.Fa "char *str" +.Fa "int len" +.Fc +.Ft struct cam_device * +.Fo cam_device_dup +.Fa "struct cam_device *device" +.Fc +.Ft void +.Fo cam_device_copy +.Fa "struct cam_device *src" +.Fa "struct cam_device *dst" +.Fc +.Ft int +.Fo cam_get_device +.Fa "const char *path" +.Fa "char *dev_name" +.Fa "int devnamelen" +.Fa "int *unit" +.Fc +.Sh 解説 +CAM +ライブラリは、 +CAM +システムでのプログラミングを補助するよう +設計されたいくつかの関数で構成されています。 +このマニュアルページは、 +ライブラリ関数の基本セットについて説明してあります。 +次にリストする +マニュアルページにさらに多くの関数が記載してあります。 +.Pp +多数の +CAM +ライブラリ関数が +.Va cam_device +構造体を使用します。 +.Bd -literal +struct cam_device { + char device_path[MAXPATHLEN+1];/* + * ユーザが指定した + * デバイスのパス名。 + * ユーザがデバイス名 + * とユニット番号を + * 別々に記述すると + * これは NULL に + * なることがあります。 + */ + char given_dev_name[DEV_IDLEN+1];/* + * ユーザが指定した + * デバイス名。 + */ + u_int32_t given_unit_number; /* + * ユーザが指定した + * ユニット番号。 + */ + char device_name[DEV_IDLEN+1];/* + * デバイス名。 + * たとえば 'pass' + */ + u_int32_t dev_unit_num; /* この特定のデバイスに + * 対応する通過デバイスの + * ユニット番号。 + */ + char sim_name[SIM_IDLEN+1];/* + * コントローラ名。 + * たとえば 'ahc' + */ + u_int32_t sim_unit_number; /* コントローラユニット番号 */ + u_int32_t bus_id; /* コントローラバス番号 */ + lun_id_t target_lun; /* 論理ユニット番号 */ + target_id_t target_id; /* ターゲット ID */ + path_id_t path_id; /* システム SCSI バス番号 */ + u_int16_t pd_type; /* 周辺装置のタイプ */ + struct scsi_inquiry_data inq_data; /* SCSI 照会データ */ + u_int8_t serial_num[252]; /* デバイスシリアル番号 */ + u_int8_t serial_num_len; /* シリアル番号の長さ */ + u_int8_t sync_period; /* 調整された同期周期 */ + u_int8_t sync_offset; /* 調整された同期オフセット */ + u_int8_t bus_width; /* 調整されたバス幅 */ + int fd; /* デバイスのファイル記述子 */ +}; +.Ed +.Pp +.Fn cam_open_device +は、引数として、開こうとしているデバイスを記述する文字列、 +および +.Xr open 2 +に渡すのに適切な +.Ar flags +を取ります。 +渡される「パス」は、 +実際には、開くデバイス名とユニット番号が入った任意のタイプの +文字列です。 +文字列は +.Fn cam_get_device +によって解釈されて、 +デバイス名とユニット番号になります。デバイス名とユニット番号が +決定されると、ルックアップが実行されて、指定のデバイスに対応する通過 +デバイスを決定します。 +.Fn cam_open_device +は使用法はかなり簡単ですが、 +現実には一般的な使用に適していません。動作が必ずしも +決定的ではないからです。新しいアプリケーションを作成しているプログラマは、 +以下に説明する他のオープンルーチンの +1 つを使用するようにしてください。 +.Pp +.Fn cam_open_spec_device +は、渡されたデバイス名とユニット番号に対応する +.Xr pass 4 +デバイスを開きます。 +.Ar flags +は、 +.Xr open 2 +に渡すのに適切なフラグである +必要があります。 +.Ar device +引数はオプションです。 +ユーザは、 +.Va cam_device +構造体に +割り振り済みの空間を指定できます。 +.Ar device +引数が +.Va NULL +の場合、 +.Fn cam_open_spec_device +は、 +.Xr malloc 3 +を使用して +.Va cam_device +構造体用の空間を +割り振ります。 +.Pp +.Fn cam_open_btl +は、 +.Fn cam_open_spec_device +に類似していますが、引数として、 +デバイス名とユニット番号の代わりに +.Tn SCSI +バス、ターゲット、および論理 +ユニットを取る点が異なります。 +.Va path_id +引数は、 +.Tn SCSI +バス番号の +CAM +の +同等のものです。これはシステム内の論理バス番号を表します。 +.Ar flags +は、 +.Xr open 2 +に渡すのに適切なフラグである必要があります。 +.Fn cam_open_spec_device +と同じように、 +.Fa device +引数はオプションです。 +.Pp +.Fn cam_open_pass +は、引数として、開く +.Xr pass 4 +デバイスの +.Fa path +を取ります。 +変換もルックアップも行われないので、 +渡されるパスは CAM +.Xr pass 4 +デバイスの +パスでなければなりません。 +.Fa flags +は、 +.Xr open 2 +に渡すのに適したフラグである +必要があります。 +.Fa device +引数は、ユーザが +CAM +ライブラリに +.Va cam_device +構造体用の空間を割り振りさせたい場合は、 +.Fn cam_open_spec_device +および +.Fn cam_open_btl +と同じように、 +NULL +である必要があります。 +.Fn cam_close_device +は、上記の open() 呼び出しの +1 つが割り振った +.Va cam_device +構造体を解放し、通過デバイスへのファイル記述子を閉じます。 +ユーザが +.Va cam_device +構造体用の空間を割り振っている場合は、このルーチンを呼び +出してはなりません。 +代わりに、ユーザは +.Fn cam_close_spec_device +を呼び出すべきです。 +.Pp +.Fn cam_close_spec_device +は、上記の open() ルーチンの +1 つで開かれた +ファイル記述子を閉じるだけです。この関数は、 +.Va cam_device +が +CAM +ライブラリ +ではなく、呼び出し元によって割り振られたときに呼び出す必要があります。 +.Pp +.Fn cam_getccb +は、 +.Xr malloc 3 +を使用して +CCB +を割り振り、 +.Va cam_device +構造の値を使用して +CCB +ヘッダ内にフィールドを設定します。 +.Pp +.Fn cam_send_ccb +は、指定の +.Va ccb +を、 +.Va cam_device +構造体内で記述された +.Fa device +に +送信します。 +.Pp +.Fn cam_freeccb +は、 +.Fn cam_getccb +が割り振った +CCB +を解放します。 +.Pp +.Fn cam_path_string +は、引数として、 +.Va cam_device +構造体、および長さが +.Fa len +のストリングを取ります。 +この関数は、カーネルが使用するのと類似した、コロンで +終了する印刷接頭語ストリングを作成します。 +たとえば、"(cd0:ahc1:0:4:0): " です。 +.Fn cam_path_string +は、多くとも +.Fa len Ns \-1 +キャラクタを +.Ar str +に設定します。 +.Fa len +番めのキャラクタは、終了を示す +.Ql \e0 +です。 +.Pp +.Fn cam_device_dup +は、 +.Xr strdup 3 +と同じように方法で動作します。 +.Va cam_device +構造体用に空間を割り当て、渡された +.Fa device +構造体の内容を、新たに割り振られた +構造体にコピーします。 +.Pp +.Fn cam_device_copy +は +.Fa src +構造体を +.Fa dst +にコピーします。 +.Pp +.Fn cam_get_device +は、デバイス名にユニット番号が続いたストリングの入った +.Fa path +引数を取ります。次に、ストリングをデバイス名とユニット名に分解し、 +それぞれ +.Fa dev_name +と +.Fa unit +に戻します。 +.Fn cam_get_device +は、少なくとも次の +形式のストリングを処理できます。 +.Pp +.Bl -tag -width 1234 -compact +.It /dev/foo0a +.It /dev/foo1s2c +.It foo0 +.It foo0a +.It nfoo0 +.El +.Pp +.Fn cam_get_device +は、 +.Fn cam_open_device +に類似した機能を準備する必要がある +アプリケーション用の便利な関数として備えられています。プログラマは、 +可能であれば、デバイス名とユニット番号を得るもっと決定的な方式を +使用することをお勧めします。 +.Sh 戻り値 +.Fn cam_open_device +、 +.Fn cam_open_spec_device +、 +.Fn cam_open_btl +、および +.Fn cam_open_pass +は、 +.Va cam_device +構造を指すポインタを返します。または、 +エラーがあった場合は +NULL +を返します。 +.Pp +.Fn cam_getccb +は、割り振り済みで部分的に初期化済みの +CCB +を返します。また、 +CCB +の割り振りが処理失敗した場合は +NULL +を返します。 +.Pp +.Fn cam_send_ccb +は、エラーが発生した場合、値 -1 を返し、 +.Va errno +がエラーを +示すように設定されます。 +.Pp +.Fn cam_path_string +は、便宜として記入された印刷接頭語を返します。これは、 +.Fn cam_path_string +に渡されるのと同じ +.Fa str +です。 +.Pp +.Fn cam_device_dup +は、渡された +.Va device +のコピーを返します。または、エラーが +発生した場合は +NULL +を返します。 +.Pp +.Fn cam_get_device +は、処理成功の場合は 0 を返し、 +処理失敗を示す場合は -1 を返します。 +.Pp +ここで説明した基本 CAM ライブラリ関数の 1 つから +エラーが返された場合は、 +エラーの理由が一般にグローバルストリング +.Va cam_errbuf +に印刷されます。 +これの長さは +.Dv CAM_ERRBUF_SIZE +キャラクタです。 +.Sh 関連項目 +.Xr cam_cdbparse 3 , +.Xr pass 4 , +.Xr camcontrol 8 +.Pp +.Sh 歴史 +CAM ライブラリは +.Fx 3.0 +ではじめて登場しました。 +.Sh 作者 +.An Kenneth Merry Aq ken@FreeBSD.org +.Sh バグ +.Fn cam_open_device +は、渡された +.Fa path +が何かへの +symlink +であるかどうか +チェックしません。渡された +.Fa path +が実際の +.Xr pass 4 +デバイスであるかどうかも +チェックしません。前のチェックを実現するのはかなり簡単でしょうが、後の +チェックを実行するためには、 +.Xr pass 4 +デバイスとしてデバイスノードを識別する +決定的な方法が必要でしょう。 +.Pp +おそらく関数には名前が不適切なものや、名前が不十分なものがあります。 |