diff options
Diffstat (limited to 'documentation/manual-pages/ja/man4/cd.4')
-rw-r--r-- | documentation/manual-pages/ja/man4/cd.4 | 493 |
1 files changed, 493 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man4/cd.4 b/documentation/manual-pages/ja/man4/cd.4 new file mode 100644 index 0000000000..7d3fefb9a8 --- /dev/null +++ b/documentation/manual-pages/ja/man4/cd.4 @@ -0,0 +1,493 @@ +.\" Copyright (c) 1996 +.\" Julian Elischer <julian@freebsd.org>. 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. +.\" +.\" 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. +.\" +.\" %Id: cd.4,v 1.12 1998/10/12 03:27:51 ken Exp % +.\" $FreeBSD$ +.\" +.Dd October 10, 1998 +.Dt CD 4 +.Os FreeBSD +.Sh 名称 +.Nm cd +.Nd SCSI CD-ROM ドライバ +.Sh 書式 +.Cd device cd +.Cd device cd1 at scbus0 target 4 lun 0 +.Cd options "CHANGER_MIN_BUSY_SECONDS=3" +.Cd options "CHANGER_MAX_BUSY_SECONDS=11" +.Sh 解説 +.Nm cd +ドライバは、 +.Tn SCSI +.Tn CD-ROM +(コンパクトディスク-読み出し専用メモリ) ドライブをサポートします。 +通常ディスクと同じように見せるために、 +.Nm +ドライバは、 +.Tn CD-ROM +全体をカバーする 1 つのパーティションからなる +パーティションテーブルを合成します。 +このパーティションテーブルを +.Xr disklabel 8 +を用いて修正することは可能ですが、 +その修正は +.Tn CD-ROM +をアンマウントするまでの間のみ有効です。 +一般的に、このインタフェースは +.Xr wd 4 +や +.Xr da 4 +で述べられているものと同様です。 +.Pp +.Tn SCSI +アダプタがブート中にプローブされる際、 +.Tn SCSI +バス上のデバイスが走査されます。 +見つかったデバイスのうち、 +タイプ CDROM (タイプ 5) あるいは WORM (タイプ 4) と応答したものは +.Nm +ドライバにアタッチされます。 +.Fx 2.1 +以前のバージョンでは、 +最初に見つかったデバイスは +.Li cd0 +としてアタッチされ、その次が +.Li cd1 +のようになっていました。 +.Fx 2.1 +からは、デバイスが何番の cd ユニットとなるべきか指定できます。 +カーネル設定の詳細については +.Xr scsi 4 +を参照して下さい。 +.Pp +システムユーティリティ +.Xr disklabel 8 +を用いて、合成されたディスクラベル構造体を読み出せます。 +この構造体には、必要となる +.Tn CD-ROM +のサイズに関する正しい値が含まれます。 +.Pp +.Sh カーネル設定 +システム設定に関わらず、任意の数の +.Tn CD-ROM +デバイスをシステムにアタッチできます。 +全てのリソースは動的にアロケートされます。 +.Sh IOCTL +.Tn SCSI +.Tn CD-ROM +ドライブに適用される以下の +.Xr ioctl 2 +呼び出しが、ヘッダファイル +.Aq Pa sys/cdio.h +と +.Aq Pa sys/disklabel.h +で定義されています。 +.Pp +.Bl -tag -width CDIOCREADSUBCHANNEL -compact +.It Dv DIOCGDINFO +.It Dv DIOCSDINFO +.Pq Li "struct disklabel" +当該ドライブに対するディスクラベルのカーネル内コピーを読み書きします。 +ディスクラベルは scsi inquiry コマンドから読み取った情報で初期化されます。 +その値はブート時に表示されたものと同一のはずです。 +この構造体は +.Xr disklabel 5 +で定義されています。 + +.It Dv CDIOCCAPABILITY +.Pq Li "struct ioc_capability" +当該ドライブがサポートしている機能に関する情報を取り出します。 +情報は以下の構造体で返されます。 +.Bd -literal -offset indent +struct ioc_capability { + u_long play_function; +#define CDDOPLAYTRK 0x00000001 + /* tracks/index 指定で再生可能 */ +#define CDDOPLAYMSF 0x00000002 + /* msf (分秒フレーム) 指定で再生可能 */ +#define CDDOPLAYBLOCKS 0x00000004 + /* ブロック指定で再生可能 */ +#define CDDOPAUSE 0x00000100 + /* 出力を一時停止可能 */ +#define CDDORESUME 0x00000200 + /* 出力を再開可能 */ +#define CDDORESET 0x00000400 + /* ドライブを完全にリセット可能 */ +#define CDDOSTART 0x00000800 + /* オーディオ開始可能 */ +#define CDDOSTOP 0x00001000 + /* オーディオ停止可能 */ +#define CDDOPITCH 0x00002000 + /* オーディオピッチ調整可能 */ + + u_long routing_function; +#define CDREADVOLUME 0x00000001 + /* ボリューム設定の読み出し可能 */ +#define CDSETVOLUME 0x00000002 + /* ボリュームの設定可能 */ +#define CDSETMONO 0x00000100 + /* 出力をモノラルに設定可能 */ +#define CDSETSTEREO 0x00000200 + /* 出力をステレオに設定可能 (デフォルト) */ +#define CDSETLEFT 0x00000400 + /* 出力を左のみに設定可能 */ +#define CDSETRIGHT 0x00000800 + /* 出力を右のみに設定可能 */ +#define CDSETMUTE 0x00001000 + /* 出力のミュート可能 */ +#define CDSETPATCH 0x00008000 + /* ダイレクトルーティング制御可能 */ + + u_long special_function; +#define CDDOEJECT 0x00000001 + /* トレーのオープン可能 */ +#define CDDOCLOSE 0x00000002 + /* トレーのクローズ可能 */ +#define CDDOLOCK 0x00000004 + /* トレーのロック可能 */ +#define CDREADHEADER 0x00000100 + /* 目次の読み出し可能 */ +#define CDREADENTRIES 0x00000200 + /* 目次エントリの読み出し可能 */ +#define CDREADSUBQ 0x00000200 + /* サブチャネル情報の読み出し可能 */ +#define CDREADRW 0x00000400 + /* サブコード R-W の読み出し可能 */ +#define CDHASDEBUG 0x00004000 + /* トレーがダイナミックデバッグ機能を持つ */ +}; +.Ed +.It Dv CDIOCPLAYTRACKS +.Pq Li "struct ioc_play_track" +指定されたトラックアドレスおよび長さに基づいてオーディオの再生を開始します。 +この構造体は以下のように定義されます: +.Bd -literal -offset indent +struct ioc_play_track +{ + u_char start_track; + u_char start_index; + u_char end_track; + u_char end_index; +}; +.Ed + +.It Dv CDIOCPLAYBLOCKS +.Pq Li "struct ioc_play_blocks" +指定されたブロックアドレスおよび長さに基づいてオーディオの再生を開始します。 +この構造体は以下のように定義されます: +.Bd -literal -offset indent +struct ioc_play_blocks +{ + int blk; + int len; +}; +.Ed + +.It Dv CDIOCPLAYMSF +.Pq Li "struct ioc_play_msf" +指定された「分-秒-フレーム」と長さに基づいてオーディオの再生を開始します。 +この構造体は以下のように定義されます: +.Bd -literal -offset indent +struct ioc_play_msf +{ + u_char start_m; + u_char start_s; + u_char start_f; + u_char end_m; + u_char end_s; + u_char end_f; +}; +.Ed + +.It Dv CDIOCREADSUBCHANNEL +.Pq Li "struct ioc_read_subchannel" +この構造体で指定されたロケーションのサブチャネルから情報を読み出します。 +.Bd -literal -offset indent +struct ioc_read_subchannel { + u_char address_format; +#define CD_LBA_FORMAT 1 +#define CD_MSF_FORMAT 2 + u_char data_format; +#define CD_SUBQ_DATA 0 +#define CD_CURRENT_POSITION 1 +#define CD_MEDIA_CATALOG 2 +#define CD_TRACK_INFO 3 + u_char track; + int data_len; + struct cd_sub_channel_info *data; +}; +.Ed + +.It Dv CDIOREADTOCHEADER +.Pq Li "struct ioc_toc_header" +マウントされた +.Tn CD-ROM +の目次に関する情報のサマリを返します。 +この情報は以下の構造体に格納して返されます。 +.Bd -literal -offset indent +struct ioc_toc_header { + u_short len; + u_char starting_track; + u_char ending_track; +}; +.Ed + +.It Dv CDIOREADTOCENTRYS +.Pq Li "struct ioc_read_toc_entry" +指定された目次エントリからの情報を返します。 +(そう、このコマンド名のスペルは間違っています。) +引数の構造体は以下のようになります: +.Bd -literal -offset indent +struct ioc_read_toc_entry { + u_char address_format; + u_char starting_track; + u_short data_len; + struct cd_toc_entry *data; +}; +.Ed +要求データは、 +.Li data +が指す大きさ +.Li data_len +の領域に格納されます。 + +.It Dv CDIOCSETPATCH +.Pq Li "struct ioc_patch" +様々なオーディオチャネルを様々な出力チャネルに割り当てます。 +引数の構造体は次のように定義されます: +.Bd -literal -offset indent +struct ioc_patch { + u_char patch[4]; + /* 各チャネルに対し 1 要素が対応 */ +}; +.Ed + +.It Dv CDIOCGETVOL +.It Dv CDIOCSETVOL +.Pq Li "struct ioc_vol" +出力チャネルのボリューム設定に関する情報を取得 (あるいは設定) します。 +引数の構造体は次のとおりです: +.Bd -literal -offset indent +struct ioc_vol +{ + u_char vol[4]; + /* 各チャネルに対し 1 要素が対応 */ +}; +.Ed + +.It Dv CDIOCSETMONO +全ての出力チャネルを全ての入力チャネルに割り当てます。 + +.It Dv CDIOCSETSTEREO +左入力チャネルを左出力チャネルに、右入力チャネルを右出力チャネルに、 +それぞれ割り当てます。 + +.It Dv CDIOCSETMUTE +ボリューム設定を変更せずに出力をミュートします。 + +.It Dv CDIOCSETLEFT +.It Dv CDIOCSETRIGHT +両方の出力チャネルを左 (または右) 入力チャネルに割り当てます。 + +.It Dv CDIOCSETDEBUG +.It Dv CDIOCCLRDEBUG +対応するデバイスに対するデバッグ機能をオン (またはオフ) にします。 + +.It Dv CDIOCPAUSE +.It Dv CDIOCRESUME +オーディオ再生を一時停止 (または再開) します。 +読み出しヘッドの位置はリセットしません。 + +.It Dv CDIOCRESET +ドライブをリセットします。 + +.It Dv CDIOCSTART +.It Dv CDIOCSTOP +ドライブに対し、 +.Tn CD-ROM +の回転開始 (または停止) を指示します。 + +.It Dv CDIOCALLOW +.It Dv CDIOCPREVENT +ドライブに対し、 +.Tn CD-ROM +ディスクの手動による取り出しを許可 (または禁止) します。 +この機能をサポートしないドライブがあります。 + +.It Dv CDIOCEJECT +.Tn CD-ROM +を取り出します。 + +.It Dv CDIOCCLOSE +ドライブに対し、ドアを閉じメディアをロードするよう指示します。 +この機能をサポートしないドライブがあります。 + +.It Dv CDIOCPITCH +.Pq Li "struct ioc_pitch" +この機能をサポートするドライブに対し、 +オーディオを通常より早い速度ないし遅い速度で再生するよう指示します。 +.Li speed +の値が -32767 から -1 までの間なら遅い速度で再生します。 +値が 0 なら通常速度です。値が 1 から 32767 の場合は早い速度で再生します。 +分解能が 16 ビット未満のドライブの場合、エラーを出さず、 +単に下位ビットが無視されます。 +この構造体は次のように定義されます: +.Bd -literal -offset indent +struct ioc_pitch +{ + short speed; +}; +.Ed +.El +.Sh 注意 +.Nm +ドライバで制御されているドライブ中の +.Tn CD-ROM +が入れ換えられた場合、 +メディア交換操作によってカーネル内のディスクラベルと関連情報が +無効化されます。 +データ破損を避けるため、当該デバイスを参照するオープンファイル +デスクリプタがなくなるまで、当該デバイスに対するアクセスは全て破棄されます。 +この間、新たなオープン操作は全て拒否されます。 +当該デバイスを参照するオープンファイルデスクリプタがなくなると、 +後続の最初のオープン操作により、当該ドライブに対する新しい +パラメータ一式 (ディスクラベルを含む) がロードされます。 +.Pp +.Nm +ドライバ中のオーディオコードは +.Tn SCSI-2 +標準のオーディオコマンドのみサポートします。 +多くの +.Tn CD-ROM +製造業者はこの標準規格に従っていないため、 +オーディオが動作しない +.Tn CD-ROM +ドライブが数多く存在します。 +より一般的な「ダメな」 +.Tn CD-ROM +ドライブをサポートする作業も計画されていますが、 +まだ実行に移されていません。 +.Sh チェンジャ操作 +このドライバは LUN ベースの CD チェンジャのサポートを内蔵しています。 +LUN ベースの CD チェンジャとは、2 つ以上の CD を保持できるが、 +CD 再生機構を一組しか持たないドライブです。 +このドライブ内の各 CD は、 +.Tn SCSI +バス上の別々の論理ユニットとして現れます。 +この +.Nm cd +ドライバは自動的に LUN ベースのチェンジャを認識し、 +内部のスケジューラを通してチェンジャに対するコマンドを送り出します。 +このスケジューラは、チェンジャ中の異なる LUN に同時にコマンドを送ることで +引き起こされる、チェンジャの「スラッシング」を防ぎます。 +.Pp +スケジューラは、ドライバが特定の LUN で消費するタイムクァンタムの +最小値と最大値を管理します。 +最小値とは、たとえその LUN に処理中の I/O がない場合でも、 +その LUN で費すことが保証されている最小時間量です。 +最大値とは、他の LUN に処理中の I/O がある場合に、 +ある LUN でチェンジャが費す最大時間量です。 +他の LUN に処理中の I/O がない場合は、 +ドライバはある LUN に対するアクセスに上限を設けません。 +.Pp +最小および最大タイムクァンタムはカーネルオプションや sysctl 変数を +通じて変更できます。カーネルオプションは以下の通り: + +.Bl -tag -width 1234 -compact +.It Cd options "CHANGER_MIN_BUSY_SECONDS=3" +.It Cd options "CHANGER_MAX_BUSY_SECONDS=11" +.El +.Pp +sysctl 変数は以下の通り: +.Pp +.Bl -tag -width 1234 -compact +.It Cd kern.cam.cd.changer.min_busy_seconds +.It Cd kern.cam.cd.changer.max_busy_seconds +.El +.Pp +ユーザは、sysctl 変数を通じて最小および最大タイムアウトを試し、 +自分のチェンジャに最適な値を見つけるとよいでしょう。 +一旦、自分のチェンジャに対する最適タイムアウトが決まれば、 +それをカーネル設定ファイルに記述できます。 +.Pp +自分のシステムに LUN ベースのチェンジャが存在すれば、 +ブートプロセスが進むに従って、そのチェンジャの様々な LUN に対する +プローブメッセージが表示されることに気づくでしょう。 +これは正常であり、チェンジャのスケジューリングコードによって引き起こされます。 +.Sh 関連ファイル +.Bl -tag -width /dev/rcd[0-9][a-h] -compact +.It Pa /dev/cd[0-9][a-h] +ブロックモード +.Tn CD-ROM +デバイス +.It Pa /dev/rcd[0-9][a-h] +raw モード +.Tn CD-ROM +デバイス +.El +.Sh 診断 +ありません。 +.Sh 関連項目 +.Xr scsi 4 , +.Xr da 4 , +.Xr disklabel 5 , +.Xr disklabel 8 , +.Xr cd 9 +.Sh バグ +.Fn ioctl +に対する 3 番目の引数に用いられる構造体の名前は適当ではありません。 +また、 +.Fn ioctl +コマンドの中にはスペルミスがいくつも残っています。 +.Pp +現在のところ、異なる CD チェンジャに対して異なる最小および最大 +タイムアウト値を設定する機構はありません。 +カーネルオプションあるいは sysctl 変数で設定したタイムアウト値は +システムにある LUN ベースの CD チェンジャ全てに適用されます。 +このようなサポートを実装することは可能ですが、 +少なくとも sysctl による実装はあまりエレガントではありません。 +というのは、現在の sysctl コードではコンパイル後のノード追加を +取り扱うことができないためです。 +それゆえ、動的に大きさを決定する sysctl 変数を用意し、 +ユーザレベルのユーティリティを用いてタイムアウト値を取得ないし設定する +ことになるでしょう。 +カーネル設定ファイル中で、異なる CD デバイスに対して +別々のタイムアウトを指定できるようにするには、 +.Xr config 8 +を修正し、 +固定的に記述した +.Nm cd +デバイスに 2 つのタイムアウト値をサポートするようにしなければ +ならないかもしれません。 +.Sh 歴史 +本 +.Nm cd +ドライバは、Julian Ellischer が記述し 386BSD 0.1 に登場した +.Nm cd +ドライバをベースにしています。 +.Nm cd +ドライバの CAM バージョンは Kenneth Merry が記述し、 +.Fx 3.0 +で最初に登場しました。 |