Reviewed but uncommited man pages.
Submitted by: Sarumaru Yoshihiko <mistral at imasy or jp>
This commit is contained in:
parent
821092dff6
commit
730eb3d2f8
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=27290
28 changed files with 430 additions and 419 deletions
|
@ -68,7 +68,8 @@
|
||||||
.It Fl r
|
.It Fl r
|
||||||
.Fl c
|
.Fl c
|
||||||
と似ていますが、新しいエントリはアーカイブに追加されます。
|
と似ていますが、新しいエントリはアーカイブに追加されます。
|
||||||
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
|
なおこれは通常ファイルに保存された非圧縮アーカイブに対してのみ
|
||||||
|
動作することに注意してください。
|
||||||
.Fl f
|
.Fl f
|
||||||
オプションが必要です。
|
オプションが必要です。
|
||||||
.It Fl t
|
.It Fl t
|
||||||
|
@ -77,12 +78,13 @@
|
||||||
.Fl r
|
.Fl r
|
||||||
と似ていますが、新しいエントリの変更時刻が、アーカイブ内の対応するエントリ
|
と似ていますが、新しいエントリの変更時刻が、アーカイブ内の対応するエントリ
|
||||||
のものよりも新しい場合のみ、追加されます。
|
のものよりも新しい場合のみ、追加されます。
|
||||||
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
|
なおこれは通常ファイルに保存された非圧縮アーカイブに対してのみ
|
||||||
|
動作することに注意してください。
|
||||||
.Fl f
|
.Fl f
|
||||||
オプションが必要です。
|
オプションが必要です。
|
||||||
.It Fl x
|
.It Fl x
|
||||||
アーカイブからディスクに展開します。
|
アーカイブからディスクに展開します。
|
||||||
もし同名のファイルがアーカイブ内に 2 回以上現れた場合、それぞれのコピーが
|
もし同名のファイルがアーカイブ内に複数回現れた場合、それぞれのコピーが
|
||||||
展開され、後のものがそれ以前のコピーを上書き (置換) します。
|
展開され、後のものがそれ以前のコピーを上書き (置換) します。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
|
@ -93,7 +95,7 @@
|
||||||
指定された順にアーカイブに追加されます。
|
指定された順にアーカイブに追加されます。
|
||||||
デフォルトでは、各ディレクトリ内のファイルもアーカイブされます。
|
デフォルトでは、各ディレクトリ内のファイルもアーカイブされます。
|
||||||
.Pp
|
.Pp
|
||||||
展開またはリストモードにおいて、アーカイブをオープンする前に
|
展開またはリストモードでは、アーカイブをオープンする前に
|
||||||
コマンドライン全体が読み込まれ、解析されます。
|
コマンドライン全体が読み込まれ、解析されます。
|
||||||
コマンドラインのパス名またはパターンは、アーカイブ内の処理対象となる
|
コマンドラインのパス名またはパターンは、アーカイブ内の処理対象となる
|
||||||
アイテムを示します。
|
アイテムを示します。
|
||||||
|
@ -121,14 +123,16 @@
|
||||||
gzip で圧縮した pax フォーマットアーカイブに変換して、標準出力に出力します。
|
gzip で圧縮した pax フォーマットアーカイブに変換して、標準出力に出力します。
|
||||||
このように、
|
このように、
|
||||||
.Nm
|
.Nm
|
||||||
はアーカイブのフォーマットを別のものに変換する為に使うことが出来ます。
|
はアーカイブのフォーマットを別のものに変換するために使用できます。
|
||||||
.It Fl b Ar blocksize
|
.It Fl b Ar blocksize
|
||||||
テープドライブの I/O に対するブロックサイズを、512 バイトレコード単位で
|
テープドライブの I/O に対するブロックサイズを、512 バイトレコード単位で
|
||||||
指定します。
|
指定します。
|
||||||
一般に、本引数はテープドライブに読み書きする時、デフォルトブロックサイズで
|
一般に、本引数はテープドライブに読み書きする場合にのみ必要であり、
|
||||||
ありごく一般的な 20 レコード (10240 バイト) を用いない場合のみに必要となります。
|
たとえその場合であってもデフォルトのブロックサイズである
|
||||||
|
20 レコード (10240 バイト) はとても普遍的な値であるので、
|
||||||
|
通常必要ありません。
|
||||||
.It Fl C Ar directory
|
.It Fl C Ar directory
|
||||||
c および r モードにおいて、続くファイルを追加する前に、ディレクトリを
|
c および r モードにおいては、続くファイルを追加する前に、ディレクトリを
|
||||||
変更します。
|
変更します。
|
||||||
x モードにおいては、アーカイブをオープンした後、エントリをアーカイブから
|
x モードにおいては、アーカイブをオープンした後、エントリをアーカイブから
|
||||||
展開する前にディレクトリを変更します。
|
展開する前にディレクトリを変更します。
|
||||||
|
@ -138,7 +142,8 @@ x
|
||||||
警告メッセージを発行します。
|
警告メッセージを発行します。
|
||||||
.It Fl -exclude Ar pattern ( Fl W Cm exclude Ns = Ns Ar pattern )
|
.It Fl -exclude Ar pattern ( Fl W Cm exclude Ns = Ns Ar pattern )
|
||||||
指定したパターンにマッチするファイルやディレクトリを、処理しません。
|
指定したパターンにマッチするファイルやディレクトリを、処理しません。
|
||||||
なおこれはコマンドラインで指定したパターンやファイル名よりも優先します。
|
なおこれはコマンドラインで指定したパターンやファイル名よりも
|
||||||
|
優先することに注意してください。
|
||||||
.It Fl -format Ar format ( Fl W Cm format Ns = Ns Ar format )
|
.It Fl -format Ar format ( Fl W Cm format Ns = Ns Ar format )
|
||||||
(c モードのみ)
|
(c モードのみ)
|
||||||
作成するアーカイブのフォーマットを指定するのに用います。
|
作成するアーカイブのフォーマットを指定するのに用います。
|
||||||
|
@ -153,7 +158,7 @@ x
|
||||||
.Xr libarchive-formats 5
|
.Xr libarchive-formats 5
|
||||||
を参照してください。
|
を参照してください。
|
||||||
.It Fl f Ar file
|
.It Fl f Ar file
|
||||||
指定されたファイルを、読み書きするアーカイブにします。
|
指定されたファイルに対してアーカイブを読んだり書いたりします。
|
||||||
ファイル名を
|
ファイル名を
|
||||||
.Pa -
|
.Pa -
|
||||||
にすれば、標準入力または標準出力になります。
|
にすれば、標準入力または標準出力になります。
|
||||||
|
@ -167,8 +172,8 @@ x
|
||||||
最初のアーカイブエントリだけを展開またはリスト表示します。
|
最初のアーカイブエントリだけを展開またはリスト表示します。
|
||||||
各パターンまたはファイル名にマッチすれば、すぐに終了します。
|
各パターンまたはファイル名にマッチすれば、すぐに終了します。
|
||||||
同名のエントリが複数存在でき、また慣習として後のエントリがそれ以前のエントリを
|
同名のエントリが複数存在でき、また慣習として後のエントリがそれ以前のエントリを
|
||||||
上書きする為に、デフォルトではアーカイブは常に最後まで読み込まれます。
|
上書きするため、デフォルトではアーカイブは常に最後まで読み込まれます。
|
||||||
本オプションは性能の最適化の為に提供されています。
|
本オプションは性能の最適化のために提供されています。
|
||||||
.It Fl H
|
.It Fl H
|
||||||
(c および r モードのみ)
|
(c および r モードのみ)
|
||||||
コマンドラインで指定されたシンボリックリンクを追跡します。
|
コマンドラインで指定されたシンボリックリンクを追跡します。
|
||||||
|
@ -181,8 +186,8 @@ x
|
||||||
指定したパターンにマッチしたファイルまたはディレクトリのみ処理します。
|
指定したパターンにマッチしたファイルまたはディレクトリのみ処理します。
|
||||||
なおこの指定よりも、
|
なおこの指定よりも、
|
||||||
.Fl -exclude
|
.Fl -exclude
|
||||||
による指定が優先します。
|
による除外指定が優先することに注意してください。
|
||||||
これを明示しなければ、デフォルトで全てのエントリが処理されます。
|
これを明示しなければ、デフォルトでは全てのエントリが処理されます。
|
||||||
この
|
この
|
||||||
.Fl -include
|
.Fl -include
|
||||||
オプションは、アーカイブをフィルタリングするのに特に有用です。
|
オプションは、アーカイブをフィルタリングするのに特に有用です。
|
||||||
|
@ -204,11 +209,11 @@ x
|
||||||
なお他の
|
なお他の
|
||||||
.Nm tar
|
.Nm tar
|
||||||
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
|
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
|
||||||
自動的に判別します。
|
自動的に判別することに注意してください。
|
||||||
.It Fl k
|
.It Fl k
|
||||||
(x モードのみ)
|
(x モードのみ)
|
||||||
既存のファイルを上書きしません。
|
既存のファイルを上書きしません。
|
||||||
特に、アーカイブ内に 2 回以上現れるファイルであっても、後のコピーが
|
特に、アーカイブ内にあるファイルが複数回現れても、後のコピーが
|
||||||
それ以前のコピーを上書きすることはしません。
|
それ以前のコピーを上書きすることはしません。
|
||||||
.It Fl L
|
.It Fl L
|
||||||
(c および r モードのみ)
|
(c および r モードのみ)
|
||||||
|
@ -233,7 +238,7 @@ GNU tar
|
||||||
ディレクトリ内のファイルを再帰的にアーカイブしません。
|
ディレクトリ内のファイルを再帰的にアーカイブしません。
|
||||||
.It Fl -nodump ( Fl W Cm nodump )
|
.It Fl -nodump ( Fl W Cm nodump )
|
||||||
(c および r モードのみ)
|
(c および r モードのみ)
|
||||||
nodump ファイルフラグの立ったファイルをスキップします。
|
nodump ファイルフラグを尊重して、このファイルをスキップします。
|
||||||
.It Fl O
|
.It Fl O
|
||||||
(x, t モードのみ)
|
(x, t モードのみ)
|
||||||
展開 (-x) モードでは、ファイルはディスクに展開されずに標準出力に
|
展開 (-x) モードでは、ファイルはディスクに展開されずに標準出力に
|
||||||
|
@ -242,14 +247,14 @@ nodump
|
||||||
書き込まれます。
|
書き込まれます。
|
||||||
.It Fl o
|
.It Fl o
|
||||||
(x モードのみ)
|
(x モードのみ)
|
||||||
ユーザとグループを、アーカイブが指定したものではなく、
|
ユーザとグループを、アーカイブ中で指定されたものではなく、
|
||||||
本プログラムを実行しているユーザのものを使用します。
|
本プログラムを実行しているユーザのものを使用します。
|
||||||
なおこれは
|
なおこれは
|
||||||
.Fl p
|
.Fl p
|
||||||
を指定しないと意味がありません。
|
を指定し、かつ本プログラムを root ユーザが実行していなければ
|
||||||
また本プログラムを root ユーザが実行している必要があります。
|
意味がないことに注意してください。
|
||||||
この場合、ファイルモードとフラグはアーカイブからリストアされますが、
|
この場合、ファイルモードとフラグはアーカイブからリストアされますが、
|
||||||
ACL や所有者の情報は破棄されます。
|
アーカイブ中の ACL や所有者の情報は破棄されます。
|
||||||
.It Fl P
|
.It Fl P
|
||||||
パス名を保持します。
|
パス名を保持します。
|
||||||
デフォルトでは、アーカイブの作成と展開の両方において、絶対パス名 (/ 文字で
|
デフォルトでは、アーカイブの作成と展開の両方において、絶対パス名 (/ 文字で
|
||||||
|
@ -258,18 +263,18 @@ ACL
|
||||||
.Nm
|
.Nm
|
||||||
は、パス名に
|
は、パス名に
|
||||||
.Pa ..
|
.Pa ..
|
||||||
を含んでいたり、対象ディレクトリをシンボリックリンクで変更する
|
を含んでいたり、対象ディレクトリをシンボリックリンクで変更したりする
|
||||||
アーカイブエントリを展開するのを拒否します。
|
アーカイブエントリの展開を拒否します。
|
||||||
本オプションはこの振舞いを抑制します。
|
本オプションはこれらの振舞いを抑制します。
|
||||||
.It Fl p
|
.It Fl p
|
||||||
(x モードのみ)
|
(x モードのみ)
|
||||||
ファイルパーミッションを保持します。
|
ファイルパーミッションを保持します。
|
||||||
アーカイブから各アイテムを展開する際、可能ならば、所有者、ファイルモード、
|
アーカイブから各アイテムを展開する際、もしあれば、所有者、ファイルモード、
|
||||||
ファイルのフラグと ACL を含む、全てのパーミッションをリストアしようとします。
|
ファイルのフラグと ACL を含む、全てのパーミッションをリストアしようとします。
|
||||||
デフォルトでは、新規作成するファイルの所有者は
|
デフォルトでは、新規作成するファイルの所有者は
|
||||||
.Nm
|
.Nm
|
||||||
を実行するユーザとなり、新規作成する通常ファイルに関してはファイルモードが
|
を実行するユーザとなり、新規作成する通常ファイルに関してはファイルモードが
|
||||||
リストアされ、またこれら以外のタイプのエントリはデフォルトのパーミッションに
|
リストアされ、これら以外のタイプのエントリはデフォルトのパーミッションに
|
||||||
なります。
|
なります。
|
||||||
もし
|
もし
|
||||||
.Nm
|
.Nm
|
||||||
|
@ -288,7 +293,7 @@ ACL
|
||||||
.It Fl U
|
.It Fl U
|
||||||
(x モードのみ)
|
(x モードのみ)
|
||||||
ファイルを作成する前に、いったん削除します。
|
ファイルを作成する前に、いったん削除します。
|
||||||
本オプション無しでは、
|
本オプションなしでは、
|
||||||
.Nm
|
.Nm
|
||||||
は既存のファイルを上書きし、既存のハードリンクを保持します。
|
は既存のファイルを上書きし、既存のハードリンクを保持します。
|
||||||
本オプションにより、既存のハードリンクは破棄され、同様に、
|
本オプションにより、既存のハードリンクは破棄され、同様に、
|
||||||
|
@ -298,6 +303,7 @@ ACL
|
||||||
作成及び展開モードにおいて、
|
作成及び展開モードにおいて、
|
||||||
.Nm
|
.Nm
|
||||||
はアーカイブに書き込み、またはアーカイブから読み出した各ファイルの名前を
|
はアーカイブに書き込み、またはアーカイブから読み出した各ファイルの名前を
|
||||||
|
そのまま
|
||||||
リスト表示します。
|
リスト表示します。
|
||||||
リストモードにおいて、
|
リストモードにおいて、
|
||||||
.Nm
|
.Nm
|
||||||
|
@ -305,17 +311,17 @@ ACL
|
||||||
.Xr ls 1
|
.Xr ls 1
|
||||||
に似た出力を表示します。
|
に似た出力を表示します。
|
||||||
.Fl v
|
.Fl v
|
||||||
オプションを追加することで、付加的な説明を表示します。
|
オプションを追加することで、より詳細に表示します。
|
||||||
.It Fl W Ar longopt=value
|
.It Fl W Ar longopt=value
|
||||||
ロングオプション
|
ロングオプション
|
||||||
.Pf ( Fl -
|
.Pf ( Fl -
|
||||||
が先行する)
|
が先頭につく)
|
||||||
は、
|
は、
|
||||||
.Xr getopt_long 3
|
.Xr getopt_long 3
|
||||||
関数が用意されているシステムでのみ、直接サポートされます。
|
関数が用意されているシステムでのみ、直接サポートされます。
|
||||||
この関数をサポートしないシステムでは、本
|
この関数をサポートしないシステムでは、本
|
||||||
.Fl W
|
.Fl W
|
||||||
オプションを介して、ロングオプションを使うことが出来ます。
|
オプションを介して、ロングオプションを使用できます。
|
||||||
.It Fl w
|
.It Fl w
|
||||||
あらゆる操作に対し、確認を求めます。
|
あらゆる操作に対し、確認を求めます。
|
||||||
.It Fl X Ar filename
|
.It Fl X Ar filename
|
||||||
|
@ -332,7 +338,7 @@ ACL
|
||||||
なお他の
|
なお他の
|
||||||
.Nm tar
|
.Nm tar
|
||||||
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
|
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
|
||||||
自動的に判別します。
|
自動的に判別することに注意してください。
|
||||||
.It Fl z
|
.It Fl z
|
||||||
(c モードのみ)
|
(c モードのみ)
|
||||||
作成するアーカイブを
|
作成するアーカイブを
|
||||||
|
@ -342,7 +348,7 @@ ACL
|
||||||
なお他の
|
なお他の
|
||||||
.Nm tar
|
.Nm tar
|
||||||
実装と異なり、本実装ではアーカイブを読み込む際には、gzip 圧縮を
|
実装と異なり、本実装ではアーカイブを読み込む際には、gzip 圧縮を
|
||||||
自動的に判別します。
|
自動的に判別することに注意してください。
|
||||||
.El
|
.El
|
||||||
.Sh 環境変数
|
.Sh 環境変数
|
||||||
次の環境変数が、
|
次の環境変数が、
|
||||||
|
@ -353,7 +359,7 @@ ACL
|
||||||
使用するロケール。
|
使用するロケール。
|
||||||
詳細は
|
詳細は
|
||||||
.Xr environ 7
|
.Xr environ 7
|
||||||
を参照。
|
を参照してください。
|
||||||
.It Ev POSIXLY_CORRECT
|
.It Ev POSIXLY_CORRECT
|
||||||
この環境変数が定義されると、
|
この環境変数が定義されると、
|
||||||
.Fl l
|
.Fl l
|
||||||
|
@ -363,12 +369,12 @@ ACL
|
||||||
.It Ev TAPE
|
.It Ev TAPE
|
||||||
デフォルトテープデバイス。
|
デフォルトテープデバイス。
|
||||||
.Fl f
|
.Fl f
|
||||||
オプションはこれを無視します。
|
オプションはこれを上書きします。
|
||||||
.It Ev TZ
|
.It Ev TZ
|
||||||
日付を表示する際に使用するタイムゾーン。
|
日付を表示する際に使用するタイムゾーン。
|
||||||
詳細は
|
詳細は
|
||||||
.Xr environ 7
|
.Xr environ 7
|
||||||
を参照。
|
を参照してください。
|
||||||
.El
|
.El
|
||||||
.Sh 関連ファイル
|
.Sh 関連ファイル
|
||||||
.Bl -tag -width ".Ev BLOCKSIZE"
|
.Bl -tag -width ".Ev BLOCKSIZE"
|
||||||
|
@ -376,7 +382,7 @@ ACL
|
||||||
.Ev TAPE
|
.Ev TAPE
|
||||||
環境変数か
|
環境変数か
|
||||||
.Fl f
|
.Fl f
|
||||||
オプションで無視されないなら、
|
オプションで上書きされない限り、
|
||||||
デフォルトのテープデバイスです。
|
デフォルトのテープデバイスです。
|
||||||
.El
|
.El
|
||||||
.Sh 終了ステータス
|
.Sh 終了ステータス
|
||||||
|
@ -399,10 +405,10 @@ ACL
|
||||||
.Pp
|
.Pp
|
||||||
作成モードにおいて、アーカイブされるファイルとディレクトリのリストには、
|
作成モードにおいて、アーカイブされるファイルとディレクトリのリストには、
|
||||||
.Cm -C Ns Pa foo/baz
|
.Cm -C Ns Pa foo/baz
|
||||||
の形式でディレクトリの変更命令を取り込むことが出来ます。
|
の形式でディレクトリの変更命令を取り込めます。
|
||||||
また
|
また
|
||||||
.Cm @ Ns Pa archive-file
|
.Cm @ Ns Pa archive-file
|
||||||
の形式でアーカイブのエントリを取り込むことも出来ます。
|
の形式でアーカイブのエントリを取り込むこともできます。
|
||||||
例えば、次のコマンドライン
|
例えば、次のコマンドライン
|
||||||
.Dl Nm Fl c Fl f Pa new.tar Pa foo1 Cm @ Ns Pa old.tgz Cm -C Ns Pa /tmp Pa foo2
|
.Dl Nm Fl c Fl f Pa new.tar Pa foo1 Cm @ Ns Pa old.tgz Cm -C Ns Pa /tmp Pa foo2
|
||||||
では、新しいアーカイブ
|
では、新しいアーカイブ
|
||||||
|
@ -424,8 +430,8 @@ ACL
|
||||||
まとめオプション形式は、これまでの実装との互換性のためにサポートされています。
|
まとめオプション形式は、これまでの実装との互換性のためにサポートされています。
|
||||||
これには、各文字がオプションである頭文字 (- 文字で始まらない)
|
これには、各文字がオプションである頭文字 (- 文字で始まらない)
|
||||||
が存在します。
|
が存在します。
|
||||||
引数は別々の単語で続きます。
|
引数は別々の単語として続きます。
|
||||||
この引数の順序はまとめオプション文字内の、対応する頭文字の順序と一致している
|
この引数の順序はまとめオプション文字内の、対応する文字の順序と一致している
|
||||||
必要があります。
|
必要があります。
|
||||||
例えば
|
例えば
|
||||||
.Dl Nm Cm tbf 32 Pa file.tar
|
.Dl Nm Cm tbf 32 Pa file.tar
|
||||||
|
@ -450,7 +456,7 @@ ACL
|
||||||
フラグに対する引数です。
|
フラグに対する引数です。
|
||||||
.Pp
|
.Pp
|
||||||
モードオプションの c, r, t, u, x、およびオプションの
|
モードオプションの c, r, t, u, x、およびオプションの
|
||||||
b, f, l, m, o, v, w は、SUSv2 に準じています。
|
b, f, l, m, o, v, w は、SUSv2 に適合しています。
|
||||||
.Pp
|
.Pp
|
||||||
移植性を最大限にするために、
|
移植性を最大限にするために、
|
||||||
.Nm tar
|
.Nm tar
|
||||||
|
@ -465,7 +471,7 @@ b, f, l, m, o, v, w
|
||||||
.Cm m ,
|
.Cm m ,
|
||||||
.Cm v ,
|
.Cm v ,
|
||||||
.Cm w
|
.Cm w
|
||||||
に制限するべきです。
|
に限定するべきです。
|
||||||
.Pp
|
.Pp
|
||||||
getopt_long() をサポートするシステムでは、他の tar 実装との互換性を
|
getopt_long() をサポートするシステムでは、他の tar 実装との互換性を
|
||||||
増すために、ロングオプションが使用できます。
|
増すために、ロングオプションが使用できます。
|
||||||
|
@ -473,30 +479,30 @@ getopt_long()
|
||||||
確実なセキュリティは、
|
確実なセキュリティは、
|
||||||
.Nm
|
.Nm
|
||||||
を含む沢山のアーカイブプログラムに共通の課題です。
|
を含む沢山のアーカイブプログラムに共通の課題です。
|
||||||
特に、細工されたアーカイブは
|
特に、注意深く細工されたアーカイブは
|
||||||
.Nm
|
.Nm
|
||||||
に対して、対象とするディレクトリ以外の場所にファイルを展開するように
|
に対して、対象とするディレクトリ以外の場所にファイルを展開するように
|
||||||
要求することが出来ます。
|
要求できます。
|
||||||
これは不注意なユーザに対し、上書きするつもりの無いファイルを
|
これは不注意なユーザに対し、上書きするつもりのないファイルを
|
||||||
上書きさせるのに使うことが潜在的に可能です。
|
上書きさせられる可能性があります。
|
||||||
アーカイブをスーパユーザが展開している場合は、システム上の
|
アーカイブをスーパユーザが展開している場合は、システム上の
|
||||||
あらゆるファイルが上書きされる潜在的な可能性があります。
|
あらゆるファイルが上書きさせられる可能性があります。
|
||||||
これを引き起こす、三つの手段があります。
|
これを引き起こす、三つの手段があります。
|
||||||
.Nm
|
.Nm
|
||||||
はそれらに対する防御機構を備えていますが、情報通のユーザならば、
|
はそれぞれに対する防御機構を備えていますが、情報通のユーザならば、
|
||||||
それらについて知っておくべきでしょう:
|
それらの意味するところを知っておくべきでしょう:
|
||||||
.Bl -bullet -width indent
|
.Bl -bullet -width indent
|
||||||
.It
|
.It
|
||||||
アーカイブのエントリは、絶対パス名を持つことが出来ます。
|
アーカイブのエントリは、絶対パス名を持つことができます。
|
||||||
デフォルトでは、
|
デフォルトでは、
|
||||||
.Nm
|
.Nm
|
||||||
はこの問題に対する防御策として、これをリストアする前にファイル名の先頭にある
|
はこの問題に対する防御策として、これらをリストアする前にファイル名の先頭にある
|
||||||
.Pa /
|
.Pa /
|
||||||
文字を取り除きます。
|
文字を取り除きます。
|
||||||
.It
|
.It
|
||||||
アーカイブのエントリは、
|
アーカイブのエントリは、
|
||||||
.Pa ..
|
.Pa ..
|
||||||
を含むパス名を持つことが出来ます。
|
を含むパス名を持てます。
|
||||||
デフォルトでは、
|
デフォルトでは、
|
||||||
.Nm
|
.Nm
|
||||||
はパス名に
|
はパス名に
|
||||||
|
@ -504,10 +510,12 @@ getopt_long()
|
||||||
を含んでいるファイルを展開しません。
|
を含んでいるファイルを展開しません。
|
||||||
.It
|
.It
|
||||||
アーカイブのエントリでは、ファイルを別のディレクトリにリストアするように、
|
アーカイブのエントリでは、ファイルを別のディレクトリにリストアするように、
|
||||||
シンボリックリンクを悪用することが出来ます。
|
シンボリックリンクを悪用できます。
|
||||||
アーカイブは別のディレクトリを指すシンボリックリンクをリストアすることが出来、
|
アーカイブは別のディレクトリを指すシンボリックリンクをリストアすることができ、
|
||||||
このリンクを使ってファイルをそのディレクトリにリストアします。
|
このリンクを使ってファイルをそのディレクトリにリストアします。
|
||||||
これを防ぐため、.Nm では毎回、展開されるパスにシンボリックリンクが
|
これを防ぐため、
|
||||||
|
.Nm
|
||||||
|
では毎回、展開されるパスにシンボリックリンクが
|
||||||
含まれるかどうかを調べます。
|
含まれるかどうかを調べます。
|
||||||
もしパスの最後の要素が
|
もしパスの最後の要素が
|
||||||
シンボリックリンクであれば、そのシンボリックリンクは削除され、
|
シンボリックリンクであれば、そのシンボリックリンクは削除され、
|
||||||
|
@ -528,11 +536,11 @@ getopt_long()
|
||||||
.Dl Nm Fl tf Pa filename
|
.Dl Nm Fl tf Pa filename
|
||||||
としてアーカイブの内容を調べるべきです。
|
としてアーカイブの内容を調べるべきです。
|
||||||
.Nm
|
.Nm
|
||||||
が既存のファイルを上書きしないことを保証するには
|
に
|
||||||
.Fl k
|
.Fl k
|
||||||
オプションを使うべきですし、既存のファイルを消去させるには
|
オプションをつけて既存のファイルを上書きしないことを保証させるか、
|
||||||
.Fl U
|
.Fl U
|
||||||
オプションを使うべきです。
|
オプションをつけて既存のファイルを削除させるべきです。
|
||||||
一般に、スーパユーザ権限にある時は、アーカイブを展開するべきではありません。
|
一般に、スーパユーザ権限にある時は、アーカイブを展開するべきではありません。
|
||||||
なお
|
なお
|
||||||
.Fl P
|
.Fl P
|
||||||
|
@ -541,7 +549,7 @@ getopt_long()
|
||||||
は上に述べたセキュリティチェックを行わないようになり、絶対パスや
|
は上に述べたセキュリティチェックを行わないようになり、絶対パスや
|
||||||
.Pa ..
|
.Pa ..
|
||||||
を含むファイル、及び他のディレクトリへのシンボリックリンクを
|
を含むファイル、及び他のディレクトリへのシンボリックリンクを
|
||||||
展開できるようになります。
|
展開できるようになることに注意してください。
|
||||||
.Sh 関連項目
|
.Sh 関連項目
|
||||||
.Xr bzip2 1 ,
|
.Xr bzip2 1 ,
|
||||||
.Xr cpio 1 ,
|
.Xr cpio 1 ,
|
||||||
|
@ -557,9 +565,9 @@ getopt_long()
|
||||||
.St -p1003.1-96
|
.St -p1003.1-96
|
||||||
にはありましたが、
|
にはありましたが、
|
||||||
.St -p1003.1-2001
|
.St -p1003.1-2001
|
||||||
では無くなりました。
|
ではなくなりました。
|
||||||
本実装で使用できるオプションは、古い tar の POSIX 仕様、現在の
|
本実装で使用できるオプションは、現存するいくつかの tar 実装と同様、
|
||||||
pax の POSIX 仕様はもちろん、現存するいくつかの tar 実装を調査して
|
tar の古い POSIX 仕様、pax の現在の POSIX 仕様を調査して
|
||||||
開発されました。
|
開発されました。
|
||||||
.Pp
|
.Pp
|
||||||
ustar と pax 間のファイルフォーマット変換については、pax コマンドの
|
ustar と pax 間のファイルフォーマット変換については、pax コマンドの
|
||||||
|
@ -567,12 +575,12 @@ ustar
|
||||||
にて定義されています。
|
にて定義されています。
|
||||||
.Sh 歴史
|
.Sh 歴史
|
||||||
.Nm tar
|
.Nm tar
|
||||||
コマンドは Seventh Edition Unix から登場しました。
|
コマンドは Seventh Edition Unix で登場しました。
|
||||||
他の多数の実装があり、その多くはファイルフォーマットを拡張しています。
|
他に多数の実装があり、その多くはファイルフォーマットを拡張しています。
|
||||||
John Gilmore によるパブリックドメイン実装の
|
John Gilmore によるパブリックドメイン実装の
|
||||||
.Nm pdtar
|
.Nm pdtar
|
||||||
(1987 年 11 月頃) は多大な影響を及ぼし、GNU tar の元になりました。
|
(1987 年 11 月頃) は多大な影響を及ぼし、GNU tar の元になりました。
|
||||||
FreeBSD 1.0 より、GNU tar は FreeBSD 基本システムの tar として
|
FreeBSD が 1.0 より始まった時に、GNU tar は FreeBSD 基本システムの tar として
|
||||||
取り込まれました。
|
取り込まれました。
|
||||||
.Pp
|
.Pp
|
||||||
本ソフトウェアは
|
本ソフトウェアは
|
||||||
|
@ -589,7 +597,7 @@ POSIX
|
||||||
.\" because of = ~のために、~のせいで
|
.\" because of = ~のために、~のせいで
|
||||||
.Pp
|
.Pp
|
||||||
.Fl C Pa dir
|
.Fl C Pa dir
|
||||||
オプションは、歴代の実装とは異なっているかも知れません。
|
オプションは、歴史的な実装とは異なっているでしょう。
|
||||||
.Pp
|
.Pp
|
||||||
全てのアーカイブ出力は、出力を圧縮していても、正しいサイズのブロックで
|
全てのアーカイブ出力は、出力を圧縮していても、正しいサイズのブロックで
|
||||||
書き出されます。
|
書き出されます。
|
||||||
|
@ -611,21 +619,21 @@ tar
|
||||||
.Dl Nm Fl czf Pa - file
|
.Dl Nm Fl czf Pa - file
|
||||||
により作成した圧縮出力と、
|
により作成した圧縮出力と、
|
||||||
.Dl Nm Fl cf Pa - file | Nm gzip
|
.Dl Nm Fl cf Pa - file | Nm gzip
|
||||||
により作成した圧縮出力には、些細ですが違いがあります。
|
により作成した圧縮出力には、些細な違いがあるかもしれません。
|
||||||
.Pp
|
.Pp
|
||||||
デフォルトでは標準の I/O パスでアーカイブを読み書きするべきですが、
|
デフォルトでは標準の I/O パスでアーカイブを読み書きするべきですが、
|
||||||
伝統的に (および POSIX では) 他のものを要求します。
|
伝統的に (および POSIX では) 他のものを規定しています。
|
||||||
.Pp
|
.Pp
|
||||||
.Cm r
|
.Cm r
|
||||||
および
|
および
|
||||||
.Cm u
|
.Cm u
|
||||||
モードでは、アーカイブは非圧縮でディスク上に通常ファイルとして存在する
|
モードでは、アーカイブは非圧縮でディスク上に通常ファイルとして存在する
|
||||||
必要があります。
|
必要があります。
|
||||||
他のアーカイブは
|
そうではないアーカイブは
|
||||||
.Cm c
|
.Cm c
|
||||||
モードと
|
モードと
|
||||||
.Pa @archive-file
|
.Pa @archive-file
|
||||||
拡張を用いて更新することが出来ます。
|
拡張を用いて更新できます。
|
||||||
.Pp
|
.Pp
|
||||||
.Pa @foo
|
.Pa @foo
|
||||||
や
|
や
|
||||||
|
@ -649,10 +657,11 @@ tar
|
||||||
.Pp
|
.Pp
|
||||||
マルチボリュームアーカイブ、および疎なファイルに対するサポートはまだありません。
|
マルチボリュームアーカイブ、および疎なファイルに対するサポートはまだありません。
|
||||||
.Pp
|
.Pp
|
||||||
異なるアーカイブフォーマット (tar と cpio など) を
|
似ていないアーカイブフォーマット間 (tar と cpio など) で
|
||||||
.Cm @ Ns Pa -
|
.Cm @ Ns Pa -
|
||||||
により変換すると、ハードリンク情報が失われます
|
により変換すると、ハードリンク情報が失われます
|
||||||
(これは異なるアーカイブフォーマットでハードリンク情報を格納していることからくる
|
(これは異なるアーカイブフォーマットでハードリンク情報を
|
||||||
|
互換性のない形で格納していることからくる
|
||||||
当然の結果です)。
|
当然の結果です)。
|
||||||
.Pp
|
.Pp
|
||||||
故意にドキュメント化していない、多くのショートオプションの代わりになる
|
故意にドキュメント化していない、多くのショートオプションの代わりになる
|
||||||
|
|
|
@ -416,7 +416,7 @@ utility
|
||||||
ファイルのパーミッション、ハードリンクの数、所有者、グループ、
|
ファイルのパーミッション、ハードリンクの数、所有者、グループ、
|
||||||
バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。
|
バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。
|
||||||
ファイルがブロック型もしくはキャラクタ型の特殊ファイルならば、
|
ファイルがブロック型もしくはキャラクタ型の特殊ファイルならば、
|
||||||
バイトで表したファイルの大きさの代わりにメジャー番号とマイナー番号を
|
バイトで表したファイルの大きさの代わりにメジャー番号とマイナ番号を
|
||||||
出力します。
|
出力します。
|
||||||
ファイルがシンボリックリンクならば、
|
ファイルがシンボリックリンクならば、
|
||||||
.Dq Li ->
|
.Dq Li ->
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
更なる処理が必要であるため、通常はこれらは除外されています。
|
更なる処理が必要であるため、通常はこれらは除外されています。
|
||||||
.It Fl n
|
.It Fl n
|
||||||
数値フォーマットで表示を行います。マウントポイントの名前を表示する
|
数値フォーマットで表示を行います。マウントポイントの名前を表示する
|
||||||
かわりに、そのファイルシステムにおけるデバイス番号 (メジャー、マイナー)
|
かわりに、そのファイルシステムにおけるデバイス番号 (メジャー、マイナ)
|
||||||
を表示します。特殊ファイルに関しては、
|
を表示します。特殊ファイルに関しては、
|
||||||
.Pa /dev
|
.Pa /dev
|
||||||
の下のファイル名
|
の下のファイル名
|
||||||
|
@ -151,7 +151,7 @@ wd -
|
||||||
.It Li DEV
|
.It Li DEV
|
||||||
.Fl n
|
.Fl n
|
||||||
が指定されると、このヘッダが現れます。ファイルが存在しているデバイス
|
が指定されると、このヘッダが現れます。ファイルが存在しているデバイス
|
||||||
のメジャー番号とマイナー番号です。
|
のメジャー番号とマイナ番号です。
|
||||||
.It Li INUM
|
.It Li INUM
|
||||||
ファイルの inode 番号。
|
ファイルの inode 番号。
|
||||||
.It Li MODE
|
.It Li MODE
|
||||||
|
@ -174,7 +174,7 @@ wd -
|
||||||
になかったり、
|
になかったり、
|
||||||
.Fl n
|
.Fl n
|
||||||
が指定されていたりする
|
が指定されていたりする
|
||||||
と、スペシャルデバイスが参照するメジャー番号、マイナー番号を表示します。
|
と、スペシャルデバイスが参照するメジャー番号、マイナ番号を表示します。
|
||||||
.It Li R/W
|
.It Li R/W
|
||||||
このフィールドには、ファイルのアクセス属性が表示されます。
|
このフィールドには、ファイルのアクセス属性が表示されます。
|
||||||
``r'' の場合は、ファイルが読み込みのためにオープンされていることを意味します。
|
``r'' の場合は、ファイルが読み込みのためにオープンされていることを意味します。
|
||||||
|
|
|
@ -311,7 +311,7 @@ ID
|
||||||
.Pp
|
.Pp
|
||||||
ファイルがキャラクタ型もしくはブロック型の特殊ファイルである場合、
|
ファイルがキャラクタ型もしくはブロック型の特殊ファイルである場合、
|
||||||
ファイルサイズフィールドには
|
ファイルサイズフィールドには
|
||||||
ファイルのメジャー番号とマイナー番号が表示されます。
|
ファイルのメジャー番号とマイナ番号が表示されます。
|
||||||
ファイルがシンボリックリンクファイルである場合、
|
ファイルがシンボリックリンクファイルである場合、
|
||||||
リンク先ファイルのパス名が
|
リンク先ファイルのパス名が
|
||||||
.Dq Li ->
|
.Dq Li ->
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
.Nm
|
.Nm
|
||||||
は全再配置を含む表を表示します。
|
は全再配置を含む表を表示します。
|
||||||
.It Ev LD_LIBMAP
|
.It Ev LD_LIBMAP
|
||||||
ライブラリー置換リストで、形式は
|
ライブラリ置換リストで、形式は
|
||||||
.Xr libmap.conf 5
|
.Xr libmap.conf 5
|
||||||
と同じです。
|
と同じです。
|
||||||
便利なように、空白と改行のかわりに
|
便利なように、空白と改行のかわりに
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.\" @(#) $Header: /home/ncvs/doc/ja_JP.eucJP/man/man1/tcpdump.1,v 1.23 2004-08-03 12:44:42 metal Exp $ (LBL)
|
.\" @(#) $Header: /home/ncvs/doc/ja_JP.eucJP/man/man1/tcpdump.1,v 1.24 2006-03-08 07:43:47 metal Exp $ (LBL)
|
||||||
.\"
|
.\"
|
||||||
.\" $NetBSD: tcpdump.8,v 1.9 2003/03/31 00:18:17 perry Exp $
|
.\" $NetBSD: tcpdump.8,v 1.9 2003/03/31 00:18:17 perry Exp $
|
||||||
.\"
|
.\"
|
||||||
|
@ -1832,7 +1832,7 @@ wrl.nfs > sushi.201b:
|
||||||
ファイルハンドル (\fIfh\fP) 21,24/10.731657119 に対する \fIreadlink\fP
|
ファイルハンドル (\fIfh\fP) 21,24/10.731657119 に対する \fIreadlink\fP
|
||||||
(シンボリックリンク読み込み) です。
|
(シンボリックリンク読み込み) です。
|
||||||
(この例のように運が良ければ、ファイルハンドルはデバイスのメジャー、
|
(この例のように運が良ければ、ファイルハンドルはデバイスのメジャー、
|
||||||
マイナー番号のペアと、それに続く inode 番号と世代番号と解釈することがで
|
マイナ番号のペアと、それに続く inode 番号と世代番号と解釈することがで
|
||||||
きます。)
|
きます。)
|
||||||
\fIwrl\fP はリンクの内容とともに `ok' と返答しています。
|
\fIwrl\fP はリンクの内容とともに `ok' と返答しています。
|
||||||
.LP
|
.LP
|
||||||
|
|
|
@ -4870,7 +4870,7 @@ prompt
|
||||||
(ディスクから取って来る必要があったページ数)。
|
(ディスクから取って来る必要があったページ数)。
|
||||||
.TP 4
|
.TP 4
|
||||||
%R
|
%R
|
||||||
マイナーページフォールトの回数。
|
マイナページフォールトの回数。
|
||||||
.TP 4
|
.TP 4
|
||||||
%I
|
%I
|
||||||
入力操作の回数。
|
入力操作の回数。
|
||||||
|
|
|
@ -8,10 +8,10 @@
|
||||||
.\" forth in the LICENSE file which can be found at the top level of
|
.\" forth in the LICENSE file which can be found at the top level of
|
||||||
.\" the sendmail distribution.
|
.\" the sendmail distribution.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: vacation.1,v 1.21 2004-09-24 06:50:37 metal Exp $
|
.\" $Id: vacation.1,v 1.22 2006-03-08 07:43:47 metal Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.TH VACATION 1 "$Date: 2004-09-24 06:50:37 $"
|
.TH VACATION 1 "$Date: 2006-03-08 07:43:47 $"
|
||||||
.SH 名称
|
.SH 名称
|
||||||
.B vacation
|
.B vacation
|
||||||
\- 電子メールの自動応答器
|
\- 電子メールの自動応答器
|
||||||
|
@ -157,12 +157,13 @@ vacation
|
||||||
.I interval
|
.I interval
|
||||||
日に設定します。デフォルトは 1 週間です。間隔を
|
日に設定します。デフォルトは 1 週間です。間隔を
|
||||||
``0''
|
``0''
|
||||||
に設定すると、全てのメッセージに対して自動応答を行ないます。
|
または
|
||||||
``infinite''
|
``infinite''
|
||||||
(実際には数字以外の文字ならなんでも) を設定すると、
|
(実際には数字以外の文字ならなんでも)に設定すると、
|
||||||
同じ送信者には一度しか自動応答を行ないません。
|
同じ送信者には一度しか自動応答を行ないません。
|
||||||
.B \-r
|
.B \-r
|
||||||
オプションは、vacation データベース初期化時のみ使用してください (前述の
|
オプションは、vacation データベースが初期化されている時のみ使用してください
|
||||||
|
(前述の
|
||||||
.B \-i
|
.B \-i
|
||||||
を参照してください)。
|
を参照してください)。
|
||||||
.TP
|
.TP
|
||||||
|
@ -239,7 +240,9 @@ sendmail(8)
|
||||||
の行がヘッダに含まれているメールに対しても自動応答は送られません。
|
の行がヘッダに含まれているメールに対しても自動応答は送られません。
|
||||||
あなたへのメールの送信者のアドレスは
|
あなたへのメールの送信者のアドレスは
|
||||||
ホームディレクトリの
|
ホームディレクトリの
|
||||||
.I \&.vacation.db
|
.I .vacation.db
|
||||||
|
または
|
||||||
|
.I .vacation.{dir,pag}
|
||||||
ファイル中で
|
ファイル中で
|
||||||
db(3)
|
db(3)
|
||||||
または
|
または
|
||||||
|
@ -247,10 +250,8 @@ dbm(3)
|
||||||
を使用して管理されます。
|
を使用して管理されます。
|
||||||
.PP
|
.PP
|
||||||
.B vacation
|
.B vacation
|
||||||
または
|
|
||||||
.I .vacation.{dir,pag}
|
|
||||||
ではホームディレクトリに
|
ではホームディレクトリに
|
||||||
.I .vacation.msg
|
.IR .vacation.msg
|
||||||
ファイルを置くことによって、
|
ファイルを置くことによって、
|
||||||
あなたへのメールの送信者へのメッセージを指定します。
|
あなたへのメールの送信者へのメッセージを指定します。
|
||||||
このファイルは (ヘッダを含む) 完全なメッセージでなければなりません。
|
このファイルは (ヘッダを含む) 完全なメッセージでなければなりません。
|
||||||
|
|
|
@ -66,13 +66,14 @@
|
||||||
.\"
|
.\"
|
||||||
.Ss 概要
|
.Ss 概要
|
||||||
.\"
|
.\"
|
||||||
伝統的にユーザスレッディングは、次の 2 つの方法の 1 つで実装されてきました。
|
伝統的にユーザスレッディングは、
|
||||||
全てのスレッドはユーザ空間で管理され、カーネルは全てのスレッディングを
|
次の 2 つの方法のうちのどちらか一方で実装されてきました。
|
||||||
認識しない方法
|
まず全てのスレッドはユーザ空間で管理され、
|
||||||
|
カーネルはスレッディングを全く認識しない方法
|
||||||
.Dq ( "N 対 1"
|
.Dq ( "N 対 1"
|
||||||
としても知られています)。
|
としても知られています)。
|
||||||
または、個々のスレッドのために共通のメモリ空間を分け合う
|
そして、個々のスレッドに対して
|
||||||
分離したプロセスを作成する方法
|
共通のメモリ空間を共有する別々のプロセスが生成される方法
|
||||||
.Dq ( "N 対 N"
|
.Dq ( "N 対 N"
|
||||||
としても知られています)。
|
としても知られています)。
|
||||||
これらのアプローチは長所と短所を持っています:
|
これらのアプローチは長所と短所を持っています:
|
||||||
|
@ -85,146 +86,151 @@
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
KSE システムはユーザスレッディングおよびカーネルスレッディングの両方の
|
KSE システムはユーザスレッディングおよびカーネルスレッディングの両方の
|
||||||
長所を成し遂げる混成のアプローチです。
|
長所を生かす複合型アプローチです。
|
||||||
KSE システムの根本的な哲学は、スケジューリングを決定するための
|
KSE システムの根本的な哲学は、スケジューリングを決定するための
|
||||||
ユーザスレッディングライブラリの能力を全く取り除くことなく、
|
ユーザスレッディングライブラリの能力を全く減じることなく、
|
||||||
ユーザスレッディングのためのカーネルサポートを与えることです。
|
ユーザスレッディングのためのカーネルサポートを実現することです。
|
||||||
カーネルからユーザスレッドへの upcall 機構は、スケジューリングの決定が
|
スケジューリングの決定が必要になった時に
|
||||||
必要とされるときにはいつでも、ユーザスレッディングライブラリに制御を
|
ユーザスレッディングライブラリに制御を渡すために、
|
||||||
移すために使用されます。
|
カーネルからユーザスレッドへの upcall 機構を使用します。
|
||||||
任意の数のユーザスレッドは、カーネルによって供給される固定数の仮想 CPU 上に
|
任意の数のユーザスレッドが、
|
||||||
多重化されます。
|
カーネルによって供給される固定数の仮想 CPU 上に多重化されます。
|
||||||
これは
|
これは
|
||||||
.Dq "N 対 M"
|
.Dq "N 対 M"
|
||||||
スレッディング機構と考えることができます。
|
スレッディング機構と考えることができます。
|
||||||
.Pp
|
.Pp
|
||||||
このアプローチのいくつかの一般的な裏の意味は以下を含みます:
|
このアプローチが暗に意味する一般的な特性としては以下のものがあります:
|
||||||
.Bl -bullet
|
.Bl -bullet
|
||||||
.It
|
.It
|
||||||
ユーザプロセスはマルチプロセッサマシン上で複数のスレッドを
|
ユーザプロセスはマルチプロセッサマシン上で複数のスレッドを
|
||||||
同時に実行することが可能です。
|
同時に実行することが可能です。
|
||||||
カーネルは、プロセス仮想 CPU がそれが望むようにスケジュールすることを
|
カーネルは、プロセスに対して自由にスケジュールできる仮想 CPU 群を提供します。
|
||||||
承諾します。これらは、実際の複数の CPU 上で同時に実行されることができます。
|
これらは、複数の実 CPU 上で同時に実行できます。
|
||||||
.It
|
.It
|
||||||
スレッドがブロックされたときにユーザプロセスが他のスレッドをスケジュール
|
スレッドがブロックされた際にユーザプロセスが
|
||||||
できるように、カーネル内でブロックする全ての操作は非同期になります。
|
他のスレッドをスケジュールできるよう、
|
||||||
|
カーネル内でブロックする全ての操作は非同期になります。
|
||||||
.It
|
.It
|
||||||
同じプロセス内の複数のスレッドスケジューラが可能で、それらは互いに独立して
|
同じプロセス内に複数のスレッドスケジューラが存在可能で、
|
||||||
操作することができます。
|
それらは互いに独立して動くことができます。
|
||||||
.El
|
.El
|
||||||
.\"
|
.\"
|
||||||
.Ss 定義
|
.Ss 定義
|
||||||
.\"
|
.\"
|
||||||
KSE はユーザプロセスが実際に同時の複数の
|
KSE はユーザプロセスが複数の
|
||||||
.Sy スレッド
|
.Sy スレッド
|
||||||
の実行を可能にします。
|
を同時に実行できるようにします。
|
||||||
これらの幾つかは、その他のスレッドが実行中またはユーザ空間で
|
スレッドのうちの幾つかは、
|
||||||
ブッロクされている間に、カーネルの中でブロックされることが可能です。
|
その他のスレッドがユーザ空間で実行中またはブロックされている間であっても、
|
||||||
|
カーネル内でブロックさせて構いません。
|
||||||
.Sy カーネルスケジューリングの実体
|
.Sy カーネルスケジューリングの実体
|
||||||
(kernel scheduling entity, KSE) はスレッドの実行のためにプロセスに承諾された
|
(kernel scheduling entity, KSE) はスレッドの実行のためにプロセスに供された
|
||||||
.Dq "仮想 CPU"
|
.Dq "仮想 CPU"
|
||||||
です。
|
です。
|
||||||
現在実行されているスレッドは常に、厳密に 1 つのユーザ空間または
|
現在実行されているスレッドは、
|
||||||
カーネルの中で動作しているどちらかの KSE に関連付けられています。
|
ユーザ空間またはカーネルのどちらで実行されていても、
|
||||||
その KSE はそのスレッドに
|
厳密に 1 つの KSE に常に関連付けられています。
|
||||||
|
KSE はスレッドに
|
||||||
.Sy 割り当てられている
|
.Sy 割り当てられている
|
||||||
と言われます。
|
といえます。
|
||||||
.Pp
|
.Pp
|
||||||
その KSE が関連付けられた
|
ある KSE が関連付けられた
|
||||||
.Sy メールボックス
|
.Sy メールボックス
|
||||||
(下記参照) を持っていて、そのスレッドが関連付けられた
|
(下記参照) を持ち、そのスレッドが関連付けられた
|
||||||
.Sy スレッドメールボックス
|
.Sy スレッドメールボックス
|
||||||
(これも下記参照) を持っていて、さらに以下のどれかが発生したときに、その KSE が
|
(これも下記参照) を持ち、さらに以下のどれかが発生したとき、その KSE は
|
||||||
.Sy 割り当てられていない
|
.Sy 割り当てられていない
|
||||||
状態になり、関連付けられたスレッドは停止されます:
|
状態になり、関連付けられたスレッドは中断されます:
|
||||||
.Bl -bullet
|
.Bl -bullet
|
||||||
.It
|
.It
|
||||||
そのスレッドがブロックを伴うシステムコールを実行する。
|
そのスレッドがブロックを伴うシステムコールを実行した。
|
||||||
.It
|
.It
|
||||||
スレッドが、カーネルがすぐには満たすことが可能ではない他の全ての要求を行う。
|
スレッドがカーネルがすぐには満たすことができない要求を行った。
|
||||||
例えばディスクからデータを読み出すために必要なメモリページに
|
例えばディスクからデータを読み出す必要があるメモリページにアクセスし
|
||||||
アクセスすることでページフォルト発生させることです。
|
ページフォルトを起こした。
|
||||||
.It
|
.It
|
||||||
カーネル内で先にブロックされていた他のスレッドが、カーネル内のその作業を
|
カーネル内で先にブロックされていた他のスレッドが、
|
||||||
完了し (または
|
カーネル内の作業を完了し (または
|
||||||
.Sy 割り込まれ )
|
.Sy 割り込まれ )
|
||||||
、ユーザ空間へ戻る準備ができ、さらに現在のスレッドがユーザ空間に
|
ユーザ空間へ戻れるようになり、
|
||||||
戻ろうとしている。
|
さらに現在のスレッドがユーザ空間に戻っている最中だった。
|
||||||
.It
|
.It
|
||||||
シグナルがプロセスに配信され、この KSE がそのシグナルを配信するために
|
シグナルがプロセスに配信され、
|
||||||
選択される。
|
この KSE がそのシグナルを配信するために選択された。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
言い換えると、スケジューリングの決定が行われなければならなくなるとすぐに、
|
言い換えると、スケジューリングの決定が行われようとするとき、
|
||||||
その KSE は割り当てられていない状態になります。
|
その KSE は割り当てられていない状態になります。
|
||||||
なぜならば、カーネルはそのプロセスの他のどの実行可能なスレッドを
|
なぜならば、カーネルはそのプロセスの他のどの実行可能なスレッドを
|
||||||
スケジュールするべきかを推定しないからです。
|
スケジュールするべきか推定しないからです。
|
||||||
割り当てられていない KSE は常に可能な限り早く、
|
割り当てられていない KSE は常に可能な限り早く、
|
||||||
ユーザプロセスが次に利用するべき KSE をどのように決定するかを可能にする
|
ユーザプロセスがその KSE を次にどのように利用するかを決定できる
|
||||||
.Sy upcall
|
.Sy upcall
|
||||||
機構 (下記に記述されています) を介してユーザ空間に戻ります。
|
機構 (後述) を介してユーザ空間に戻ります。
|
||||||
KSE は常に、割り当てが解除される前に、カーネル内で可能な限り多くの作業を
|
KSE は常に、割り当てが解除される前に、
|
||||||
完了させます。
|
カーネル内で可能な限り多くの作業を完了させます。
|
||||||
.Pp
|
.Pp
|
||||||
.Sy "KSE グループ"
|
.Sy "KSE グループ"
|
||||||
は均等にスケジュールされ、その KSE グループに関連付けられた同一のスレッドの
|
は均等にスケジュールされ、
|
||||||
プールへのアクセスを共有する KSE の集合です。
|
その KSE グループに関連付けられた同一のスレッドプールへのアクセスを共有する
|
||||||
KSE グループはカーネルスケジューリングの優先度が割り当てられることができる
|
KSE の集合です。
|
||||||
|
KSE グループはカーネルスケジューリングの優先度が割り当てられる
|
||||||
最小の実体です。
|
最小の実体です。
|
||||||
プロセスのスケジューリングとアカウンティングのため、それぞれの KSE グループは
|
プロセスのスケジューリングとアカウンティングの目的には、
|
||||||
伝統的なスレッド化されていないプロセスと同様にカウントします。
|
それぞれの KSE グループは
|
||||||
|
伝統的なスレッド化されていないプロセスと同様にみなされます。
|
||||||
KSE グループの中の個々の KSE は実際上、見分けがつきません。
|
KSE グループの中の個々の KSE は実際上、見分けがつきません。
|
||||||
また、KSE グループの中のあらゆる KSE は、その KSE グループに
|
また、KSE グループの中のすべての KSE は、その KSE グループに
|
||||||
関連付けられた (カーネル内の) あらゆる実行可能なスレッドに、
|
関連付けられた (カーネル内の) どの実行可能なスレッドに対してでも
|
||||||
カーネルによって割り当てられることができます。
|
カーネルによって割り当てられえます。
|
||||||
実際問題として、カーネルはキャッシュの動作を最適化するために、スレッドと
|
実際問題として、カーネルはキャッシュの動作を最適化するために、
|
||||||
実際の CPU との密接な関係を保存しようと試みますが、
|
スレッドと実際の CPU 群との密接な関係を保存しようと試みますが、
|
||||||
これはユーザプロセスには不可視です。
|
これはユーザプロセスには不可視です
|
||||||
(密接な関係はまだ実装されていません)
|
(密接な関係はまだ実装されていません)。
|
||||||
.Pp
|
.Pp
|
||||||
それぞれの KSE はユーザプロセスによって供給された唯一の
|
それぞれの KSE はユーザプロセスによって供給される独自の
|
||||||
.Sy "KSE メールボックス"
|
.Sy "KSE メールボックス"
|
||||||
を持っています。
|
を持っています。
|
||||||
メールボックスは
|
メールボックスは
|
||||||
.Sy "upcall 関数"
|
.Sy "upcall 関数"
|
||||||
へのポインタを含む制御構造体とユーザスタックで構成されています。
|
へのポインタとユーザスタックを含む制御構造体で構成されています。
|
||||||
KSE は割り当てを解除されると必ずこの関数を実行します。
|
KSE は割り当てを解除されると必ずこの関数を実行します。
|
||||||
カーネルはこの構造体を、実行可能になっているスレッド、およびそれぞれの
|
カーネルはこの構造体の、実行可能になっているスレッド、およびそれぞれの
|
||||||
upcall の前に配信されたシグナルについての情報を更新します。
|
upcall の前に配信されていたシグナルについての情報を更新します。
|
||||||
upcall はクリティカルセクションの間は、ユーザスレッドの
|
upcall はクリティカルセクションの間は、ユーザスレッドの
|
||||||
スケジューリングコードによって一時的にブロックされることがあります。
|
スケジューリングコードによって一時的にブロックされることがあります。
|
||||||
.Pp
|
.Pp
|
||||||
同様にそれぞれのユーザスレッドは唯一の
|
同様にそれぞれのユーザスレッドは独自の
|
||||||
.Sy "スレッドメールボックス"
|
.Sy "スレッドメールボックス"
|
||||||
を持っています。
|
を持っています。
|
||||||
カーネルとユーザスレッドスケジューラが通信するときに、
|
カーネルとユーザスレッドスケジューラが通信するときに、
|
||||||
スレッドはこれらのメールボックスへのポインタを使用して参照されます。
|
スレッドはこれらのメールボックスへのポインタを通して参照されます。
|
||||||
それぞれの KSE のメールボックスは、その KSE が現在実行している
|
それぞれの KSE のメールボックスは、その KSE が現在実行している
|
||||||
ユーザスレッドのメールボックスへのポインタを含んでいます。
|
ユーザスレッドのメールボックスへのポインタを含んでいます。
|
||||||
このポインタはカーネル内でスレッドがブロックするときに、保存されます。
|
このポインタはカーネル内でスレッドがブロックするときに、保存されます。
|
||||||
.Pp
|
.Pp
|
||||||
カーネル内でブロックされていたスレッドがユーザ空間に戻る準備ができたときには
|
カーネル内でブロックされていたスレッドがユーザ空間に戻る準備ができたときには
|
||||||
必ず、そのスレッドは KSE グループの
|
そのスレッドは必ず、KSE グループの
|
||||||
.Sy 完了した
|
.Sy 完了した
|
||||||
スレッドのリストに追加されます。
|
スレッドのリストに追加されます。
|
||||||
このリストはスレッドメールボックスのリンクされたリストとして、
|
このリストはスレッドメールボックスのリンクされたリストとして、
|
||||||
次の upcall でユーザコードに公開されます。
|
次の upcall でユーザコードに提示されます。
|
||||||
.Pp
|
.Pp
|
||||||
カーネルの中で同時にブロックされることができる KSE グループの中の
|
カーネル内で同時にブロックされる KSE グループ中の
|
||||||
スレッド数には、カーネルに起因する制限があります (現在、この数はユーザには
|
スレッド数には、カーネルに起因する制限があります (現在、この数はユーザには
|
||||||
不可視です)。
|
不可視です)。
|
||||||
この制限に達したときには、スレッドの 1 つが完了するまでの間 (または
|
この制限に達したとき、スレッドの 1 つが完了するまでの間 (または
|
||||||
シグナルが配信されるまでの間)、upcall はブロックされ、
|
シグナルが配信されるまでの間)、upcall はブロックされ、
|
||||||
その KSE グループのための作業は何も実行されません。
|
その KSE グループのための作業は何も実行されません。
|
||||||
.\"
|
.\"
|
||||||
.Ss KSE の管理
|
.Ss KSE の管理
|
||||||
.\"
|
.\"
|
||||||
マルチスレッド化するためには、プロセスは初めに
|
マルチスレッドで動くためには、プロセスは初めに
|
||||||
.Fn kse_create
|
.Fn kse_create
|
||||||
を実行しなければなりません。
|
を実行しなければなりません。
|
||||||
.Fn kse_create
|
.Fn kse_create
|
||||||
システムコールは新しい KSE を
|
システムコールは新しい KSE を
|
||||||
作成します (本当に最初の実行を除く、下記を参照してください)。
|
作成します (本当に最初の実行を除く、下記参照)。
|
||||||
その KSE は
|
その KSE は
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
によって指されるメールボックスと関連付けられます。
|
によって指されるメールボックスと関連付けられます。
|
||||||
|
@ -235,196 +241,195 @@ upcall
|
||||||
そのため、それらの KSE は直ちに upcall します。
|
そのため、それらの KSE は直ちに upcall します。
|
||||||
.Pp
|
.Pp
|
||||||
それぞれのプロセスは初めは 1 つのユーザスレッドを
|
それぞれのプロセスは初めは 1 つのユーザスレッドを
|
||||||
実行する 1 つの KSE グループの中の 1 つの KSE を持っています。
|
実行する 1 つの KSE グループの中に 1 つの KSE を持っています。
|
||||||
その KSE は関連付けられたメールボックスを持っていないため、そのスレッドに
|
その KSE は関連付けられたメールボックスを持っていないため、
|
||||||
割り当てられたままでなければならず、upcall を全く実行しません。
|
そのスレッドに割り当てられたままでなければならず、
|
||||||
この結果は伝統的で、スレッド化されていない様式の操作です。
|
upcall を全く実行しません。
|
||||||
そのため、特別な場合として、
|
この結果は伝統的で、スレッド化されていない形態での処理です。
|
||||||
|
そのため、特別な場合として、この最初のスレッドによる
|
||||||
.Fa newgroup
|
.Fa newgroup
|
||||||
を 0 にしたこの最初のスレッドによる
|
が 0 である
|
||||||
.Fn kse_create
|
.Fn kse_create
|
||||||
の最初の呼び出しは、新しい KSE を作成しません。
|
の最初の呼び出しは、新しい KSE を作成しません。
|
||||||
代わりに、単に現在の KSE を与えられた KSE メールボックスに関連付け、
|
代わりに、単に現在の KSE を与えられた KSE メールボックスに関連付け、
|
||||||
直ちに upcall しない結果となります。
|
直後の upcall は起こしません。
|
||||||
しかしながら、次にそのスレッドがブロックし、要求された条件になったときに、
|
しかしながら、次にそのスレッドがブロックし必要とされる条件がそろったときには、
|
||||||
upcall がトリガされます。
|
upcall が引き起こされます。
|
||||||
.Pp
|
.Pp
|
||||||
カーネルは 1 つの KSE グループの中にシステムの物理的な CPU の数 (この数は
|
カーネルは 1 つの KSE グループの中にシステムの物理的な CPU の数 (この数は
|
||||||
.Xr sysctl 3
|
.Xr sysctl 3
|
||||||
変数の
|
変数
|
||||||
.Va hw.ncpu
|
.Va hw.ncpu
|
||||||
として利用可能です) より多い KSE の存在を許可しません。
|
として取得可能です) より多い KSE の存在を許可しません。
|
||||||
CPU より多い KSE を持つことは、その追加の KSE が単に
|
CPU より多い数の KSE を持つことは、その追加の KSE が単に
|
||||||
その他の KSE と実 CPU へのアクセスを競合するだけであるため、
|
その他の KSE と実 CPU 群へのアクセスを競合するだけであるため、
|
||||||
ユーザプロセスにとって全く価値を増やさないでしょう。
|
ユーザプロセスにとって全く価値を増やさないでしょう。
|
||||||
そのため、余分な KSE は常に脇に追いやられ、その結果アプリケーションは
|
そのため、余分な KSE は常に脇に追いやられ、その結果アプリケーションは
|
||||||
まさにより少ない KSE を持っていることと同じになるでしょう。
|
より少ない KSE を持っていることと全く同じになるでしょう。
|
||||||
どんなに多くの任意のユーザスレッドが存在することになっても、
|
しかし、アプリケーションのユーザスレッドを利用可能な KSE へマッピングする
|
||||||
利用可能な KSE へのアプリケーションのユーザスレッドの割り当てを取り扱う
|
ユーザスレッドスケジューラの数までは、
|
||||||
ためのユーザスレッドスケジューラに渡ります。
|
任意の数のユーザスレッドが存在しても構いません。
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_exit
|
.Fn kse_exit
|
||||||
システムコールは、現在実行しているスレッドに割り当てられている KSE を
|
システムコールは、現在実行しているスレッドに割り当てられている
|
||||||
破壊させます。
|
KSE を破棄します。
|
||||||
この KSE がこの KSE グループの中の最後の 1 つの場合には、その KSE グループに
|
この KSE がこの KSE グループの中の最後の 1 つの場合には、
|
||||||
関連付けられているスレッドがカーネル内でブロックされたまま残ってはなりません。
|
その KSE グループに関連付けられているスレッドが、
|
||||||
このシステムコールはエラーが無い場合には、戻りません。
|
カーネル内でブロックされたまま残っていてはなりません。
|
||||||
|
このシステムコールはエラーがない限り、戻りません。
|
||||||
.Pp
|
.Pp
|
||||||
特別な場合として、最後に残っている KSE グループの中の最後に残っている KSE が
|
特別な場合として、最後に残っている KSE グループの中の最後に残っている KSE が
|
||||||
このシステムコールを実行する場合には、その KSE は破壊されません。
|
このシステムコールを実行する場合には、その KSE は破棄されません。
|
||||||
代わりに、その KSE はそのメールボックスとの関連付けを失うだけで、
|
代わりに、その KSE はそのメールボックスとの関連付けを失うだけで、
|
||||||
.Fn kse_exit
|
.Fn kse_exit
|
||||||
は正常に戻ります。
|
は正常に戻ります。
|
||||||
これはそのプロセスを元に、つまりスレッド化されていない状態に戻します。
|
これはそのプロセスを元のスレッド化されていない状態に戻します。
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_release
|
.Fn kse_release
|
||||||
システムコールは、必要でなくなったときに、現在実行しているスレッドに
|
システムコールは、現在実行しているスレッドに関連付けられている
|
||||||
関連付けられている KSE を
|
KSE が必要でなくなったときに、
|
||||||
.Dq 一時保管
|
.Dq 一時保管
|
||||||
するために使用されます。
|
するために使用します。
|
||||||
例えば、実行可能なユーザスレッドよりも利用可能な KSE の方が多いときです。
|
例えば、実行可能なユーザスレッドよりも利用可能な KSE の方が多い場合です。
|
||||||
そのスレッドは upcall に変化しますが、そのようにするための新しい理由が
|
そのスレッドは upcall へ転向しますが、
|
||||||
発生するまでの間スケジュールされることはありません。
|
新しくスケジュールする理由ができるまではそのようにされることはありません。
|
||||||
例えば、以前にブロックされていたスレッドが実行可能になる、または
|
例えば、以前にブロックされていたスレッドが実行可能になる、
|
||||||
タイムアウトが発生するなどです。
|
またはタイムアウトが発生するといった場合です。
|
||||||
成功の場合には、
|
成功した場合には、
|
||||||
.Fn kse_release
|
.Fn kse_release
|
||||||
は呼び出し側に戻りません。
|
は呼び出し側に戻りません。
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_switchin
|
.Fn kse_switchin
|
||||||
システムコールは、新しいスレッドがそのスレッドのコンテキストに
|
システムコールは、UTS (ユーザスレッドスケジューラ) が
|
||||||
切り替わるために、UTS によって使用されることが可能です。
|
スレッドのコンテキストを切り替える選択を新たにした際に使用できます。
|
||||||
.Fn kse_switchin
|
.Fn kse_switchin
|
||||||
の使用はマシンに依存します。
|
の使用はマシンに依存します。
|
||||||
あるプラットフォームでは新しいコンテキストに切り替わるためのシステムコールを
|
あるプラットフォームでは新しいコンテキストへの切り替えにシステムコールを
|
||||||
必要としません。
|
必要としませんが、別のプラットフォームでは特にこの場面で要求されます。
|
||||||
一方、他のプラットフォームでは同様の場合に要求されます。
|
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_wakeup
|
.Fn kse_wakeup
|
||||||
システムコールは
|
システムコールは
|
||||||
.Fn kse_release
|
.Fn kse_release
|
||||||
の反対です。
|
の反対です。
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
によって指されているメールボックスに関連付けられた (一時保管された) KSE を
|
によって指されているメールボックスに関連付けられた (一時保管された)
|
||||||
upcall にすることで起こします。
|
KSE を起こして upcall させます。
|
||||||
その KSE がすでに他の理由で起こされていた場合には、このシステムコールは
|
その KSE がすでに他の理由で起こされていた場合には、
|
||||||
何も起こりません。
|
このシステムコールは何の効果もありません。
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
引数は
|
引数に
|
||||||
.Dq "現在の KSE グループの中の全ての KSE"
|
|
||||||
を指定するために
|
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
にすることができます。
|
を指定すると
|
||||||
|
.Dq "現在の KSE グループの中のどの KSE でもよい"
|
||||||
|
という指定になります。
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_thr_interrupt
|
.Fn kse_thr_interrupt
|
||||||
システムコールは、現在ブロックされているスレッドに
|
システムコールは、現在ブロックされているスレッドを一時停止させます。
|
||||||
割り込むために使用されます。
|
そのスレッドはカーネル内でブロックされているか、
|
||||||
そのスレッドはカーネルの中でブロックされているか、
|
KSE に割り当てられて (つまり実行中) いるか、どちらかでなければなりません。
|
||||||
KSE に割り当てられて (例えば、実行中) いなければなりません。
|
その後、そのスレッドには割り込まれたという印が付けられます。
|
||||||
そのスレッドはその後、割り込まれたという印を付けられます。
|
スレッドが割り込み可能なステムコールを実行するとできるだけ早く
|
||||||
スレッドが割り込みを発生させるシステムコールを実行するとできるだけ
|
(または、スレッドがカーネル内ですでにブロックされてる場合には直ちに)、
|
||||||
早く (または、スレッドがカーネルの中ですでにブロックされてると直ちに)、
|
カーネル処理が完了していない可能性があるかにかかわらず
|
||||||
カーネル操作が完了していないかもしれないのにもかかわらず、
|
|
||||||
そのスレッドは再度実行可能にされます。
|
そのスレッドは再度実行可能にされます。
|
||||||
割り込まれたシステムコール上のこの効果は、すでにシグナルによって
|
割り込まれたシステムコール上でのこの効果は、
|
||||||
割り込まれていた場合と同様です。
|
すでにシグナルによって割り込まれていた場合と同様です。
|
||||||
通常、これは
|
通常、これは
|
||||||
.Va errno
|
.Va errno
|
||||||
に
|
に
|
||||||
.Er EINTR
|
.Er EINTR
|
||||||
が設定されてエラーが返されたことを意味します。
|
を設定してエラーを返したことを意味します。
|
||||||
.\"
|
.\"
|
||||||
.Ss シグナル
|
.Ss シグナル
|
||||||
.\"
|
.\"
|
||||||
.Pp
|
.Pp
|
||||||
現在の実装は特別のシグナルスレッドを作成します。
|
現在の実装は特別なシグナルスレッドを作成します。
|
||||||
プロセス内のカーネルスレッド (KSE) はすべてのシグナルをマスクし、
|
プロセス内のカーネルスレッド (KSE) はすべてのシグナルをマスクし、
|
||||||
シグナルスレッドだけがプロセスへ配信されるシグナルを待ちます。
|
シグナルスレッドだけがプロセスへ配信されるシグナルを待ち受けます。
|
||||||
シグナルスレッドはユーザスレッドへのシグナルの
|
シグナルスレッドはユーザスレッドへのシグナルの
|
||||||
ディスパッチに対して責任があります。
|
ディスパッチに対して責任を持ちます。
|
||||||
.\" responsible for = 《be ~》~に対して責任がある、~に関与する
|
.\" responsible for = 《be ~》~に対して責任がある、~に関与する
|
||||||
.Pp
|
.Pp
|
||||||
この弱点は、多重スレッドが
|
この弱点は、多重スレッドが
|
||||||
.Fn execve
|
.Fn execve
|
||||||
システムコールを呼び出すなら、そのシグナルマスクとペンディングシグナルは
|
システムコールを呼び出した場合、そのシグナルマスクとペンディングシグナルは
|
||||||
カーネルで利用可能でないかもしれないことです。
|
カーネルで利用できないかもしれないことです。
|
||||||
それらはユーザランドで格納され、カーネルはどこでそれらが得られるか知りません。
|
それらはユーザランドで格納され、
|
||||||
|
カーネルはどこからそれを得ればよいかわかりません。
|
||||||
しかしながら、
|
しかしながら、
|
||||||
.Tn POSIX
|
.Tn POSIX
|
||||||
ではそれらは復元され、新しいプロセスに渡す必要があります。
|
ではそれらを復元して、新しいプロセスに渡すことを求めています。
|
||||||
|
スレッドが
|
||||||
.Fn execve
|
.Fn execve
|
||||||
呼び出しの前のスレッドのマスク設定は、
|
を呼び出す前にマスクを行うだけでは、
|
||||||
古いプロセスがブロックされている状態かもしれない任意のペンディングシグナルを
|
元のプロセスがブロックしていたペンディングシグナルを
|
||||||
カーネルに再配信されないとき、問題に近似しています。
|
カーネルに再び戻すことができず、またマスクを設定したあと
|
||||||
そして、新しいシグナルがマスクの設定と
|
|
||||||
.Fn execve
|
.Fn execve
|
||||||
の間のプロセスに配信されるかもしれないウィンドウを許可します。
|
が呼ばれる間にプロセスにシグナルが配信されるウィンドウの発生を
|
||||||
.\" is only a close approximation to the problem の訳はあやしい
|
許してしまうため、よく似た近似にしかなりません。
|
||||||
.Pp
|
.Pp
|
||||||
当分、この問題は特別の組み合わせ
|
今のところ、この問題は
|
||||||
|
.Fn kse_thr_interrupt
|
||||||
|
システムコールに
|
||||||
.Fn kse_thr_interrupt Ns / Ns Fn execve
|
.Fn kse_thr_interrupt Ns / Ns Fn execve
|
||||||
モードを
|
の特別な組み合わせモードを追加することにより解決されています。
|
||||||
.Fn kse_thr_interrupt
|
.Fn kse_thr_interrupt
|
||||||
システムコールに追加することによって解決されています。
|
システムコールにはサブコマンド
|
||||||
.\" For now = 差し当たり、当分は
|
|
||||||
.Fn kse_thr_interrupt
|
|
||||||
システムコールはサブコマンド
|
|
||||||
.Dv KSE_INTR_EXECVE
|
.Dv KSE_INTR_EXECVE
|
||||||
があり、それは
|
があり、それは
|
||||||
.Vt kse_execv_args
|
.Vt kse_execv_args
|
||||||
構造体を受け付けることができ、シグナルを調整して、次に不可分に
|
構造体を受け付けて、シグナルを調整した後に不可分に
|
||||||
.Fn execve()
|
.Fn execve
|
||||||
呼び出しに変換できます。
|
呼び出しへ変換できるようにします。
|
||||||
.\" 原文: .Fn execve() は .Fn execve の誤り。
|
.\" 原文: .Fn execve() は .Fn execve の誤り。HEAD, RELENG_6では修正済
|
||||||
追加のペンディングシグナルと正しいシグナルマスクは
|
このようにして追加のペンディングシグナルと正しいシグナルマスクを
|
||||||
このようにしてカーネルに渡すことができます。
|
カーネルに渡すことができます。
|
||||||
.\" in this way = かくのごとく、こういう調子に、このような方法で、このように(して)、
|
.\" in this way = かくのごとく、こういう調子に、このような方法で、このように(して)、
|
||||||
スレッドライブラリは、
|
スレッドライブラリは、
|
||||||
.Fn execve
|
.Fn execve
|
||||||
スステムコールをくつがえして、それを
|
システムコールを上書きし、多重スレッドが
|
||||||
.Fn kse_intr_interrupt
|
|
||||||
呼び出しに変換し、多重スレッドを
|
|
||||||
.Fn exec
|
.Fn exec
|
||||||
を行なう前にペンディングシグナルと正しいシグナルマスクに
|
を行う前にペンディングシグナルと正しいシグナルマスクを復元できるよう、
|
||||||
復元できるようにします。
|
.Fn kse_intr_interrupt
|
||||||
この問題の解決法は変更するかもしれません。
|
呼び出しに変換します。
|
||||||
|
この問題の解決法は変更されるかもしれません。
|
||||||
.\"
|
.\"
|
||||||
.Ss KSE メールボックス
|
.Ss KSE メールボックス
|
||||||
.\"
|
.\"
|
||||||
それぞれの KSE は
|
それぞれの KSE は
|
||||||
.In sys/kse.h
|
.In sys/kse.h
|
||||||
で定義されたユーザとカーネルの通信のための唯一のメールボックスがあります。
|
で定義されているユーザとカーネルの通信のために独自のメールボックスを持ちます。
|
||||||
そのフィールドのいくつかは次の通りです:
|
フィールドの一部は次の通りです:
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_version
|
.Va km_version
|
||||||
はこの構造体のバージョンを表し、
|
はこの構造体のバージョンを表し、
|
||||||
.Dv KSE_VER_0
|
.Dv KSE_VER_0
|
||||||
でなければなりません。
|
と等しくなければなりません。
|
||||||
.Va km_udata
|
.Va km_udata
|
||||||
はカーネルによって無視される不透明なポインタです。
|
はカーネルには無視される不透明なポインタです。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_func
|
.Va km_func
|
||||||
はその KSE の upcall 関数を指します。
|
はその KSE の upcall 関数を指します。
|
||||||
これは、その KSE が存在している間は有効であり続けなければならない
|
これは、その KSE の生存期間を通して有効であり続けなければならない
|
||||||
.Va km_stack
|
.Va km_stack
|
||||||
を使用して実行されます。
|
を使用して実行されます。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
は常に、もしあれば現在この KSE に割り当てられているスレッドを、または
|
はもし現在この KSE に割り当てられているスレッドがあればそれを、
|
||||||
そうでなければ
|
なければ
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
を指しています。
|
を指しています。
|
||||||
このフィールドは、カーネルとユーザプロセスの両方によって以下のように
|
このフィールドは、
|
||||||
更新されます。
|
カーネルとユーザプロセスの両方によって以下のように更新されます。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
が
|
が
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
ではないときには、
|
ではないときには、
|
||||||
それは現在実行中のスレッドのメールボックスを指しているものとみなされ、
|
それは現在実行中のスレッドのメールボックスを指しているものとみなされ、
|
||||||
割り当て解除されることができます。
|
割り当て解除可能です。
|
||||||
例えば、スレッドがカーネル内でブロックする場合です。
|
例えば、スレッドがカーネル内でブロックする場合です。
|
||||||
それから、カーネルはブロックされたスレッドの
|
その後、カーネルはブロックされたスレッドの
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
の内容を保存して
|
の内容を保存して
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
|
@ -438,9 +443,9 @@ KSE
|
||||||
が
|
が
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
のときには、カーネルはこの KSE の upcall を決して実行しません。
|
のときには、カーネルはこの KSE の upcall を決して実行しません。
|
||||||
言い換えると、KSE はたとえブロックしたとしても、そのスレッドに
|
言いかえると、KSE はたとえブロックしたとしても、
|
||||||
割り当てられたままとなります。
|
そのスレッドに割り当てられたままとなります。
|
||||||
その KSE が間に入り込む upcall によって混乱するであろうクリティカルな
|
KSE が upcall が間にはいることによって混乱を起こすような危ない
|
||||||
ユーザスレッドスケジューラのコードを実行している間、特に
|
ユーザスレッドスケジューラのコードを実行している間、特に
|
||||||
.Fn km_func
|
.Fn km_func
|
||||||
それ自身を実行している間は、
|
それ自身を実行している間は、
|
||||||
|
@ -449,110 +454,110 @@ KSE
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
でなければなりません。
|
でなければなりません。
|
||||||
.Pp
|
.Pp
|
||||||
全ての upcall の中で
|
どのような upcall であれ、
|
||||||
.Fn km_func
|
.Fn km_func
|
||||||
を実行する前に、カーネルは常に
|
を実行する前に、カーネルは常に
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
を
|
を
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
に設定します。
|
に設定します。
|
||||||
一度、ユーザスレッドスケジューラが実行するべき新しいスレッドを選んだら、
|
一度ユーザスレッドスケジューラが実行すべき新しいスレッドを選んだら、
|
||||||
そのスレッドのメールボックスの
|
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
を指すようにし、upcall を再度有効化し、それからそのスレッドを再開するべきです。
|
がそのスレッドのメールボックスを指すようにし、
|
||||||
|
upcall を再度有効化し、それからそのスレッドを再開するべきです。
|
||||||
.Em 注意 :
|
.Em 注意 :
|
||||||
ユーザスレッドスケジューラによる
|
ユーザスレッドスケジューラによる
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
の変更は、
|
の変更は、
|
||||||
新しいスレッドのコンテキストのロードについて不可分でなければなりません。
|
新しいスレッドのコンテキストのロードを不可分に行わなければなりません。
|
||||||
依然として有効な情報がそこから読み出されるべき時に、
|
依然として有効な情報がそこから読み出し可能なときに
|
||||||
ブロッキング非同期操作によってスレッドのコンテキスト領域が
|
ブロッキング非同期操作によってスレッドのコンテキスト領域が
|
||||||
変更されるかもしれない状況を避けるためです。
|
変更されえる状況を避けるためです。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_completed
|
.Va km_completed
|
||||||
は最近の upcall 以降にカーネル内での処理を終えたユーザスレッドの
|
は最後に実行された upcall 以降にカーネル内での処理を終えたユーザスレッドの
|
||||||
リンクされたリストを指しています。
|
リンクされたリストを指しています。
|
||||||
そのユーザスレッドスケジューラは、これらのスレッドを
|
ユーザスレッドスケジューラは、
|
||||||
スケジューラが所有する実行可能キューに戻すべきです。
|
これらのスレッドをスケジューラが所有する実行可能キューに戻すべきです。
|
||||||
upcall に帰着する (同期または非同期に) カーネル操作を
|
upcall に帰着する (同期または非同期) カーネル操作を完了した
|
||||||
完了した KSE グループ内の各々のスレッドは、確実に 1 つの KSE の
|
KSE グループ内の各々のスレッドは、確実に 1 つの KSE の
|
||||||
.Va km_completed
|
.Va km_completed
|
||||||
にリンクされることが保証されます。
|
にリンクされることが保証されますが、
|
||||||
しかしながら、そのグループの中のどの KSE かは不定です。
|
グループの中のどの KSE かは決まっていません。
|
||||||
その上、その完了はたった 1 つの upcall でしか報告されません。
|
その上、その完了はたった 1 つの upcall でしか報告されません。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_sigscaught
|
.Va km_sigscaught
|
||||||
はその前のプロセス内の全ての KSE への upcall 以降に、
|
にはその前のプロセス内の任意の KSE への upcall 以降に、
|
||||||
このプロセスによって捕まえられたシグナルのリストが含まれています。
|
このプロセスによって捕まえられたシグナルのリストが含まれています。
|
||||||
そのユーザプロセスの中に、
|
ユーザプロセスの中に、
|
||||||
メールボックスに関連付けられた KSE が 1 つ以上存在する限りは、
|
メールボックスに関連付けられた KSE が 1 つ以上存在する限りは、
|
||||||
シグナルは伝統的な方法ではなくこの方法で配信されます。
|
シグナルは伝統的な方法ではなくこの方法で配信されます
|
||||||
(これはまだ実装されておらず、変更されるかもしれません)
|
(これはまだ実装されておらず、変更されるかもしれません)。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_timeofday
|
.Va km_timeofday
|
||||||
は、それぞれの upcall の前にカーネルによって現在のシステム時刻に設定されます。
|
は、それぞれの upcall の前にカーネルによって現在のシステム時刻に設定されます。
|
||||||
.Pp
|
.Pp
|
||||||
.Va km_flags
|
.Va km_flags
|
||||||
は以下の全てのビット毎の OR を含むことができます:
|
は以下の任意のビットを OR して同時に含むことができます:
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
.It Dv KMF_NOUPCALL
|
.It Dv KMF_NOUPCALL
|
||||||
upcalls が起きないようにブロックします。
|
upcall が起きないようにブロックします。
|
||||||
スレッドは何らかのクリティカルセクション (危険域) にあります。
|
スレッドは何らかのクリティカルセクション (危険域) にあります。
|
||||||
.It Dv KMF_NOCOMPLETED , KMF_DONE , KMF_BOUND
|
.It Dv KMF_NOCOMPLETED , KMF_DONE , KMF_BOUND
|
||||||
このスレッドは、永久に KSE に結びつけられると考えられるべきで、
|
このスレッドは、永久に KSE に結びつけられると考えられるべきで、
|
||||||
スレッド化されていないプロセスとそっくりに扱われます。
|
スレッド化されていないプロセスとそっくりに扱われます。
|
||||||
.\" 原文: considerred は considered の誤り。
|
.\" 原文: considerred は considered の誤り。Rev1.16 で修正済
|
||||||
.\" considered to be = 《be ~》~であると考えられている[目されている]
|
.\" considered to be = 《be ~》~であると考えられている[目されている]
|
||||||
.\" much like = そっくりの、酷似の
|
.\" much like = そっくりの、酷似の
|
||||||
それはある意味では
|
それはある意味
|
||||||
.Dv KMF_NOUPCALL
|
.Dv KMF_NOUPCALL
|
||||||
の
|
の
|
||||||
.Dq 長期
|
.Dq 長期
|
||||||
バージョンです。
|
バージョンといえます。
|
||||||
.\" in some ways = ある点[意味]で(は)、いろいろな意味で、いくつかの点で
|
.\" in some ways = ある点[意味]で(は)、いろいろな意味で、いくつかの点で
|
||||||
.It Dv KMF_WAITSIGEVENT
|
.It Dv KMF_WAITSIGEVENT
|
||||||
シグナル配信スレッドに必要な特性を実装します。
|
シグナル配信スレッドに必要な特性を実装します。
|
||||||
.\" 原文: charactersitics は # characteristics の誤り。
|
.\" 原文: charactersitics は # characteristics の誤り。Rev1.16 で修正済
|
||||||
.El
|
.El
|
||||||
.\"
|
.\"
|
||||||
.Ss スレッドメールボックス
|
.Ss スレッドメールボックス
|
||||||
.\"
|
.\"
|
||||||
それぞれのユーザスレッドはそれに関連付けられた
|
各ユーザスレッドは
|
||||||
.In sys/kse.h
|
.In sys/kse.h
|
||||||
で定義された唯一の
|
で定義されている独自の
|
||||||
.Vt "struct kse_thr_mailbox"
|
.Vt "struct kse_thr_mailbox"
|
||||||
がなければなりません。
|
に関連付けられている必要があります。
|
||||||
それは次のフィールドを含んでいます:
|
それは次のフィールドを含んでいます:
|
||||||
.Pp
|
.Pp
|
||||||
.Va tm_udata
|
.Va tm_udata
|
||||||
はカーネルによって無視された不明瞭なポインタです。
|
はカーネルによって無視される不透明なポインタです。
|
||||||
.Pp
|
.Pp
|
||||||
.Va tm_context
|
.Va tm_context
|
||||||
はユーザ空間内でスレッドがブロックされた時に、そのスレッドのための
|
スレッドがはユーザ空間内でブロックされた時に、
|
||||||
コンテキストを保存します。
|
そのスレッドのためのコンテキストを保存します。
|
||||||
このフィールドは完了したスレッドが
|
このフィールドは完了したスレッドが
|
||||||
.Va km_completed
|
.Va km_completed
|
||||||
を介してユーザスレッドスケジューラに戻る前に、カーネルによっても更新されます。
|
を介してユーザスレッドスケジューラに戻る前に、カーネルによっても更新されます。
|
||||||
.Pp
|
.Pp
|
||||||
.Va tm_next
|
.Va tm_next
|
||||||
はカーネルの upcall により戻った時に、
|
カーネルによって upcall を使って戻される時に、
|
||||||
.Va km_completed
|
.Va km_completed
|
||||||
スレッドにリンクします。
|
のスレッドをリンクします。
|
||||||
このリストの最後は
|
このリストの最後は
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
でマークされます。
|
でマークされています。
|
||||||
.Pp
|
.Pp
|
||||||
.Va tm_uticks
|
.Va tm_uticks
|
||||||
および
|
および
|
||||||
.Va tm_sticks
|
.Va tm_sticks
|
||||||
はそれぞれ、ユーザモードおよびカーネルモードの実行のための時間カウンタです。
|
はそれぞれ、ユーザモードおよびカーネルモードにおける実行の時間カウンタです。
|
||||||
これらのカウンタは統計クロック
|
これらのカウンタは統計クロック
|
||||||
.Xr ( clocks 7
|
.Xr ( clocks 7
|
||||||
を参照してください) の刻みをカウントします。
|
参照) の刻みをカウントします。
|
||||||
カーネル内でいずれかのスレッドがアクティブに実行中の間は、対応する
|
カーネル内でいずれかのスレッドがアクティブに実行中の間は、対応する
|
||||||
.Va tm_sticks
|
.Va tm_sticks
|
||||||
カウンタがインクリメントされます。
|
カウンタがインクリメントされます。
|
||||||
ユーザ空間でいずれかの KSE 実行中で、その KSE の
|
ユーザ空間でいずれかの KSE が実行中で、その KSE の
|
||||||
.Va km_curthread
|
.Va km_curthread
|
||||||
ポインタが
|
ポインタが
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
|
@ -565,26 +570,24 @@ upcalls
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
.It Dv TMF_NOUPCALL
|
.It Dv TMF_NOUPCALL
|
||||||
.Dv KMF_NOUPCALL
|
.Dv KMF_NOUPCALL
|
||||||
と同様です。
|
と似ています。
|
||||||
このフラグはクリティカルセクション (危険域) への upcall を禁止します。
|
このフラグはクリティカルセクション (危険域) への upcall を禁止します。
|
||||||
いくつかのアーキテクチャは、ある場所ともう片方でいくつかにあることを
|
いくつかのアーキテクチャではこれが必要になるのは 1 ヶ所ですが、
|
||||||
必要とします。
|
他のアーキテクチャではまた別の場所で必要とします。
|
||||||
.El
|
.El
|
||||||
.Sh 戻り値
|
.Sh 戻り値
|
||||||
成功の場合には
|
|
||||||
.Fn kse_create ,
|
.Fn kse_create ,
|
||||||
.Fn kse_wakeup
|
.Fn kse_wakeup
|
||||||
および
|
および
|
||||||
.Fn kse_thr_interrupt
|
.Fn kse_thr_interrupt
|
||||||
システムコールは 0 を返します。
|
システムコールは成功した場合 0 を返します。
|
||||||
成功の場合には
|
|
||||||
.Fn kse_exit
|
.Fn kse_exit
|
||||||
および
|
および
|
||||||
.Fn kse_release
|
.Fn kse_release
|
||||||
システムコールは戻りません。
|
システムコールは成功した場合戻りません。
|
||||||
.Pp
|
.Pp
|
||||||
エラーの場合には、これら全てのシステムコールは 0 ではない
|
これら全てのシステムコールはエラーの場合には、
|
||||||
エラーコードを返します。
|
0 ではないエラーコードを返します。
|
||||||
.Sh エラー
|
.Sh エラー
|
||||||
.Fn kse_create
|
.Fn kse_create
|
||||||
システムコールは次の場合に失敗します:
|
システムコールは次の場合に失敗します:
|
||||||
|
@ -592,17 +595,16 @@ upcalls
|
||||||
.It Bq Er ENXIO
|
.It Bq Er ENXIO
|
||||||
既に KSE グループの中にハードウェアプロセッサと同じ数の KSE が存在しています。
|
既に KSE グループの中にハードウェアプロセッサと同じ数の KSE が存在しています。
|
||||||
.It Bq Er EAGAIN
|
.It Bq Er EAGAIN
|
||||||
実行下の KSE グループのトータル数についてのシステムに課せられた制限を
|
実行中の合計 KSE グループ数に関するシステム上の制限値を超過します。
|
||||||
超過します。
|
|
||||||
この制限は
|
この制限は
|
||||||
.Xr sysctl 3
|
.Xr sysctl 3
|
||||||
MIB 変数
|
MIB 変数
|
||||||
.Dv KERN_MAXPROC
|
.Dv KERN_MAXPROC
|
||||||
によって与えられます。
|
によって与えられます。
|
||||||
(この制限はスーパユーザのためを除き、実際にはこれより 10 小さい値です)
|
(この制限はスーパユーザ以外の場合、実際にはこれより 10 小さい値です)
|
||||||
.It Bq Er EAGAIN
|
.It Bq Er EAGAIN
|
||||||
ユーザがスーパユーザではなく、1 ユーザによる実行下の KSE グループの
|
ユーザがスーパユーザではなく、1 ユーザへの実行中の合計 KSE グループ数
|
||||||
トータル数についてのシステムに課せられた制限を超過します。
|
に関するシステム上の制限値を超過します。
|
||||||
この制限は
|
この制限は
|
||||||
.Xr sysctl 3
|
.Xr sysctl 3
|
||||||
MIB 変数
|
MIB 変数
|
||||||
|
@ -615,7 +617,7 @@ MIB
|
||||||
.Dv RLIMIT_NPROC
|
.Dv RLIMIT_NPROC
|
||||||
に対応するソフトリソース制限を超過します
|
に対応するソフトリソース制限を超過します
|
||||||
.Xr ( getrlimit 2
|
.Xr ( getrlimit 2
|
||||||
を参照してください)。
|
参照)。
|
||||||
.It Bq Er EFAULT
|
.It Bq Er EFAULT
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
引数がプロセスのアドレス空間の有効ではない部分のアドレスを指しています。
|
引数がプロセスのアドレス空間の有効ではない部分のアドレスを指しています。
|
||||||
|
@ -626,12 +628,12 @@ MIB
|
||||||
.Bl -tag -width Er
|
.Bl -tag -width Er
|
||||||
.It Bq Er EDEADLK
|
.It Bq Er EDEADLK
|
||||||
現在の KSE はその KSE グループ内の最後であり、
|
現在の KSE はその KSE グループ内の最後であり、
|
||||||
カーネル内でブロックされたその KSE グループに関連付けられたスレッドが
|
その KSE グループに関連付けられたカーネル内でブロックされているスレッドが
|
||||||
依然として 1 つ以上存在しています。
|
依然として 1 つ以上存在しています。
|
||||||
.It Bq Er ESRCH
|
.It Bq Er ESRCH
|
||||||
現在の KSE は関連付けられたメールボックスを持っていません。
|
現在の KSE は関連付けられたメールボックスを持っていません。
|
||||||
例えば、そのプロセスが伝統的なスレッド化されていないモードで、
|
つまり、そのプロセスは伝統的なスレッド化されていないモードで、
|
||||||
実行しています (この場合はプロセスを終了するために
|
動作しています (この場合はプロセスを終了するために
|
||||||
.Xr _exit 2
|
.Xr _exit 2
|
||||||
を使用します)。
|
を使用します)。
|
||||||
.El
|
.El
|
||||||
|
@ -641,8 +643,8 @@ MIB
|
||||||
.Bl -tag -width Er
|
.Bl -tag -width Er
|
||||||
.It Bq Er ESRCH
|
.It Bq Er ESRCH
|
||||||
現在の KSE は関連付けられたメールボックスを持っていません。
|
現在の KSE は関連付けられたメールボックスを持っていません。
|
||||||
例えば、そのプロセスが伝統的なスレッド化されていないモードで、
|
つまり、そのプロセスは伝統的なスレッド化されていないモードで
|
||||||
実行しています。
|
動作しています。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_wakeup
|
.Fn kse_wakeup
|
||||||
|
@ -654,15 +656,15 @@ MIB
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
ではなく、
|
ではなく、
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
によって指されるメールボックスそのメールボックスが、そのプロセス内の
|
によって指されるメールボックスが、
|
||||||
いずれの KSE にも関連付けられていません。
|
そのプロセス内のいずれの KSE にも関連付けられていません。
|
||||||
.It Bq Er ESRCH
|
.It Bq Er ESRCH
|
||||||
.Fa mbx
|
.Fa mbx
|
||||||
引数が
|
引数が
|
||||||
.Dv NULL
|
.Dv NULL
|
||||||
で、現在の KSE が関連付けられたメールボックスを持っていません。
|
現在の KSE は関連付けられたメールボックスを持っていません。
|
||||||
例えば、そのプロセスが伝統的なスレッド化されていないモードで、
|
つまり、そのプロセスは伝統的なスレッド化されていないモードで、
|
||||||
実行しています。
|
動作しています。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
.Fn kse_thr_interrupt
|
.Fn kse_thr_interrupt
|
||||||
|
@ -670,8 +672,8 @@ MIB
|
||||||
.Bl -tag -width Er
|
.Bl -tag -width Er
|
||||||
.It Bq Er ESRCH
|
.It Bq Er ESRCH
|
||||||
.Fa tmbx
|
.Fa tmbx
|
||||||
に対応するスレッドが、現在プロセス内のいずれの KSE にも割り当てられていないか、
|
に対応するスレッドが、現在プロセス内のいずれの KSE にも割り当てられても、
|
||||||
カーネル内でブロックされています。
|
カーネル内でブロックされてもいません。
|
||||||
.El
|
.El
|
||||||
.Sh 関連項目
|
.Sh 関連項目
|
||||||
.Xr rfork 2 ,
|
.Xr rfork 2 ,
|
||||||
|
@ -709,6 +711,6 @@ KSE
|
||||||
.An "Archie Cobbs" Aq archie@FreeBSD.org
|
.An "Archie Cobbs" Aq archie@FreeBSD.org
|
||||||
によって書かれました。
|
によって書かれました。
|
||||||
.Sh バグ
|
.Sh バグ
|
||||||
KSE のコードは開発中です。
|
KSE のコードは現在も開発中です。
|
||||||
.\" .Ud .
|
.\" .Ud .
|
||||||
.\" .Ud マクロは日本語では実装されていません。(池内)
|
.\" .Ud マクロは日本語では実装されていません。(池内)
|
||||||
|
|
|
@ -284,16 +284,14 @@ struct cmsgcred {
|
||||||
.Fa s
|
.Fa s
|
||||||
はソケットを参照していません。
|
はソケットを参照していません。
|
||||||
.It Bq Er EMSGSIZE
|
.It Bq Er EMSGSIZE
|
||||||
|
接続中にオープンされている権利 (ファイル記述子) を
|
||||||
.Fn recvmsg
|
.Fn recvmsg
|
||||||
システムコールは、接続時にデータをやりとりする権利 (ファイル記述子)
|
システムコールを使用して受信しようとしました。
|
||||||
を受信するために使用されました。
|
しかし、受信側プログラムのにそれらを受け取るだけの
|
||||||
.\" rights (file descriptors) that were in flight の訳は良くわからない。
|
十分な空きファイル記述子スロットがありませんでした。
|
||||||
しかしながら、受信プログラムには受け付けるための
|
この場合、該当する記述子はクローズされ、保留されているデータは別の
|
||||||
空きファイル記述子スロットがありませんでした。
|
|
||||||
この場合、記述子がクローズされ、
|
|
||||||
.Fn recvmsg
|
.Fn recvmsg
|
||||||
への別の呼び出しによって、
|
呼び出しで戻せます。
|
||||||
どんなペンディング (未解決) のデータも返すことができます。
|
|
||||||
.It Bq Er EAGAIN
|
.It Bq Er EAGAIN
|
||||||
ソケットが非ブロッキングとマークされているとき、
|
ソケットが非ブロッキングとマークされているとき、
|
||||||
受信操作でブロックしました。
|
受信操作でブロックしました。
|
||||||
|
|
|
@ -275,7 +275,7 @@ AT&T
|
||||||
.Fn crypt_set_format
|
.Fn crypt_set_format
|
||||||
も同様に静的データを変更します。
|
も同様に静的データを変更します。
|
||||||
.Sh 歴史
|
.Sh 歴史
|
||||||
ローターを採用した
|
ロータを採用した
|
||||||
.Fn crypt
|
.Fn crypt
|
||||||
関数は、
|
関数は、
|
||||||
.At v6
|
.At v6
|
||||||
|
@ -301,7 +301,7 @@ libcrypt
|
||||||
.An Mark R V Murray ,
|
.An Mark R V Murray ,
|
||||||
.An Kris Kennaway ,
|
.An Kris Kennaway ,
|
||||||
.An Brian Feldman ,
|
.An Brian Feldman ,
|
||||||
.An Paul Herman
|
.An Paul Herman ,
|
||||||
.\"X and
|
.\"X and
|
||||||
.An Niels Provos
|
.An Niels Provos
|
||||||
によって行なわれました。
|
によって行なわれました。
|
||||||
|
|
|
@ -76,7 +76,7 @@ C
|
||||||
オペレータ、キャラクタ試験とキャラクタ・オペレータ、des 暗号ルーチン、
|
オペレータ、キャラクタ試験とキャラクタ・オペレータ、des 暗号ルーチン、
|
||||||
記憶割当、時間関数、信号処理他です。
|
記憶割当、時間関数、信号処理他です。
|
||||||
.It Xr libcurses Pq Fl l Ns Ar curses Fl l Ns Ar termcap
|
.It Xr libcurses Pq Fl l Ns Ar curses Fl l Ns Ar termcap
|
||||||
2 次元非ビットマップ・ディスプレィ端末用の端末独立
|
2 次元非ビットマップ・ディスプレイ端末用の端末独立
|
||||||
スクリーン管理ルーチン (
|
スクリーン管理ルーチン (
|
||||||
.Xr ncurses 3
|
.Xr ncurses 3
|
||||||
を参照)。
|
を参照)。
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||||
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: pcap.3,v 1.2 2001-05-14 01:08:37 horikawa Exp $
|
.\" $Id: pcap.3,v 1.3 2006-03-08 07:43:48 metal Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.TH PCAP 3 "24 June 1998"
|
.TH PCAP 3 "24 June 1998"
|
||||||
|
@ -282,7 +282,7 @@ stdin.ebuf
|
||||||
は、保存ファイルの書込みに使用した pcap のメジャーバージョン番号を戻します。
|
は、保存ファイルの書込みに使用した pcap のメジャーバージョン番号を戻します。
|
||||||
.PP
|
.PP
|
||||||
.B pcap_minor_version()
|
.B pcap_minor_version()
|
||||||
は、保存ファイルの書込みに使用した pcap のマイナーバージョン番号を戻します。
|
は、保存ファイルの書込みに使用した pcap のマイナバージョン番号を戻します。
|
||||||
.PP
|
.PP
|
||||||
.B pcap_file()
|
.B pcap_file()
|
||||||
は「保存ファイル」の名前を戻します。
|
は「保存ファイル」の名前を戻します。
|
||||||
|
|
|
@ -66,8 +66,7 @@
|
||||||
関数は、
|
関数は、
|
||||||
.Fn strstr
|
.Fn strstr
|
||||||
と同様ですが、
|
と同様ですが、
|
||||||
両方の文字列を
|
両方の文字列の大文字と小文字の違いを無視します。
|
||||||
無視します。
|
|
||||||
.Pp
|
.Pp
|
||||||
.Fn strnstr
|
.Fn strnstr
|
||||||
関数は、検索された
|
関数は、検索された
|
||||||
|
|
|
@ -248,7 +248,7 @@ sysctl(mib, 2, p, &len, NULL, 0);
|
||||||
.Nm debug19
|
.Nm debug19
|
||||||
という
|
という
|
||||||
名前になります。これらは別個の変数として宣言されるので、対応変数の位置で
|
名前になります。これらは別個の変数として宣言されるので、対応変数の位置で
|
||||||
個別に初期化できます。ローダーは、変数が複数の場所で初期化されたときは
|
個別に初期化できます。ローダは、変数が複数の場所で初期化されたときは
|
||||||
エラーを出して、同じ変数が複数に使用されるのを回避します。たとえば、変数
|
エラーを出して、同じ変数が複数に使用されるのを回避します。たとえば、変数
|
||||||
.Nm dospecialcheck
|
.Nm dospecialcheck
|
||||||
をデバッグ変数としてエクスポートする場合には、次の宣言が
|
をデバッグ変数としてエクスポートする場合には、次の宣言が
|
||||||
|
|
|
@ -202,7 +202,7 @@ cron
|
||||||
カーネルにより生成されるメッセージ。これらは、どんな
|
カーネルにより生成されるメッセージ。これらは、どんな
|
||||||
ユーザプロセスによっても生成できません。
|
ユーザプロセスによっても生成できません。
|
||||||
.It Dv LOG_LPR
|
.It Dv LOG_LPR
|
||||||
ラインプリンターのスプーリングシステム:
|
ラインプリンタのスプーリングシステム:
|
||||||
.Xr lpr 1
|
.Xr lpr 1
|
||||||
、
|
、
|
||||||
.Xr lpc 8
|
.Xr lpc 8
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: vgl.3,v 1.4 2002-05-18 07:12:57 horikawa Exp $
|
.\" $Id: vgl.3,v 1.5 2006-03-08 07:43:48 metal Exp $
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
|
|
||||||
.Dd August 13, 1997
|
.Dd August 13, 1997
|
||||||
|
@ -289,7 +289,7 @@ dstx" "int dsty" "int width" "int hight"
|
||||||
|
|
||||||
引数
|
引数
|
||||||
.Em blank
|
.Em blank
|
||||||
が != 0 である場合は、ディスプレーを空白表示にします。
|
が != 0 である場合は、ディスプレイを空白表示にします。
|
||||||
これは、表示更新の間に画面を閉じて、処理が終ったときに初めてユーザが画面を
|
これは、表示更新の間に画面を閉じて、処理が終ったときに初めてユーザが画面を
|
||||||
見られるようにするために使えます。
|
見られるようにするために使えます。
|
||||||
|
|
||||||
|
|
|
@ -750,7 +750,7 @@ struct vgapel {
|
||||||
.Bl -tag -width 20n -offset indent -compact
|
.Bl -tag -width 20n -offset indent -compact
|
||||||
.It VGAPCVTID
|
.It VGAPCVTID
|
||||||
現在ドライバの中にコンパイルされているのが pcvt であるかどうかの
|
現在ドライバの中にコンパイルされているのが pcvt であるかどうかの
|
||||||
情報と、そのメジャーリビジョンおよびマイナーリビジョン番号を
|
情報と、そのメジャーリビジョンおよびマイナリビジョン番号を
|
||||||
返します。引数として以下の構造体へのポインタをとります:
|
返します。引数として以下の構造体へのポインタをとります:
|
||||||
.El
|
.El
|
||||||
|
|
||||||
|
@ -761,7 +761,7 @@ struct pcvtid {
|
||||||
#define PCVTIDNAME "pcvt" /* ドライバ ID - 文字列 */
|
#define PCVTIDNAME "pcvt" /* ドライバ ID - 文字列 */
|
||||||
int rmajor; /* メジャーリビジョン番号 */
|
int rmajor; /* メジャーリビジョン番号 */
|
||||||
#define PCVTIDMAJOR 3
|
#define PCVTIDMAJOR 3
|
||||||
int rminor; /* マイナーリビジョン番号 */
|
int rminor; /* マイナリビジョン番号 */
|
||||||
#define PCVTIDMINOR 00
|
#define PCVTIDMINOR 00
|
||||||
};
|
};
|
||||||
.Ed
|
.Ed
|
||||||
|
|
|
@ -36,7 +36,7 @@ ppbus
|
||||||
.Sh 書式
|
.Sh 書式
|
||||||
.Cd "device ppi0 at ppbus?"
|
.Cd "device ppi0 at ppbus?"
|
||||||
.sp
|
.sp
|
||||||
マイナー番号: ユニット番号は ppbus 番号に直接対応する。
|
マイナ番号: ユニット番号は ppbus 番号に直接対応する。
|
||||||
.Sh 解説
|
.Sh 解説
|
||||||
.Nm
|
.Nm
|
||||||
デバイスドライバはユーザアプリケーションが
|
デバイスドライバはユーザアプリケーションが
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
必要な時 (例えばパラメータをセットする時) に限り排他的な
|
必要な時 (例えばパラメータをセットする時) に限り排他的な
|
||||||
アクセスをする必要があります。
|
アクセスをする必要があります。
|
||||||
.Sh サブモード
|
.Sh サブモード
|
||||||
マイナー番号のビット 0 とビット 1 は
|
マイナ番号のビット 0 とビット 1 は
|
||||||
.Sq サブモード
|
.Sq サブモード
|
||||||
として解釈されます。
|
として解釈されます。
|
||||||
サブモードの違いは、デバイスがクローズされた時の挙動にあります:
|
サブモードの違いは、デバイスがクローズされた時の挙動にあります:
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
の振舞いとなります。
|
の振舞いとなります。
|
||||||
.Pp
|
.Pp
|
||||||
デフォルトでは、実ユーザまたは実効ユーザ、あるいは実グループ
|
デフォルトでは、実ユーザまたは実効ユーザ、あるいは実グループ
|
||||||
または実行グループが変更されているプロセスはコアファイルを
|
または実効グループが変更されているプロセスはコアファイルを
|
||||||
生成しません。
|
生成しません。
|
||||||
この動作は
|
この動作は
|
||||||
.Xr sysctl 8
|
.Xr sysctl 8
|
||||||
|
|
|
@ -271,7 +271,7 @@ struct sod {
|
||||||
.It Fa sod_major
|
.It Fa sod_major
|
||||||
ロードすべき共有オブジェクトのメジャーバージョン番号を指定します。
|
ロードすべき共有オブジェクトのメジャーバージョン番号を指定します。
|
||||||
.It Fa sod_minor
|
.It Fa sod_minor
|
||||||
ロードすべき共有オブジェクトの希望するマイナーバージョン番号を指定します。
|
ロードすべき共有オブジェクトの希望するマイナバージョン番号を指定します。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
プロセスのアドレス空間にロードされる共有オブジェクト全てを追跡するために、
|
プロセスのアドレス空間にロードされる共有オブジェクト全てを追跡するために、
|
||||||
|
|
|
@ -680,7 +680,8 @@ SSH
|
||||||
.Xr sendmail 8
|
.Xr sendmail 8
|
||||||
の負荷に限界を設けるオプションを使うよりも、
|
の負荷に限界を設けるオプションを使うよりも、
|
||||||
このオプションを使う方がまともに動作する可能性ははるかに高いです。
|
このオプションを使う方がまともに動作する可能性ははるかに高いです。
|
||||||
sendmail の実行を開始する際に、
|
.Xr sendmail 8
|
||||||
|
の実行を開始する際に、
|
||||||
.Va MaxDaemonChildren
|
.Va MaxDaemonChildren
|
||||||
パラメータを設定するべきです。その値は、
|
パラメータを設定するべきです。その値は、
|
||||||
通常見込まれる負荷を扱える程度に十分高いが、
|
通常見込まれる負荷を扱える程度に十分高いが、
|
||||||
|
@ -688,7 +689,6 @@ sendmail
|
||||||
.Xr sendmail 8
|
.Xr sendmail 8
|
||||||
を操作しようとすると
|
を操作しようとすると
|
||||||
マシンが卒倒してしまうほどには高くないような値に設定するべきです。
|
マシンが卒倒してしまうほどには高くないような値に設定するべきです。
|
||||||
.\" 翻訳の抜けがあるようだ
|
|
||||||
.Xr sendmail 8
|
.Xr sendmail 8
|
||||||
を
|
を
|
||||||
.Dq キュー処理
|
.Dq キュー処理
|
||||||
|
|
|
@ -71,8 +71,9 @@ ECP/ISA
|
||||||
用のデバイスヒント。
|
用のデバイスヒント。
|
||||||
.El
|
.El
|
||||||
.Sh バグ
|
.Sh バグ
|
||||||
制御デバイス名はオプションではなく、オプションの引数とすべきです。
|
制御デバイスのデバイス名は、本来オプション引数で指定されるべきもの
|
||||||
こうすれば、引数 1 つはデバイス名として扱われます。
|
だったのですが、オプションで指定するようになっています。
|
||||||
|
そのためオプション引数が1個だった場合、それはデバイス名として解釈されます。
|
||||||
.Sh 関連項目
|
.Sh 関連項目
|
||||||
.Xr lpt 4 ,
|
.Xr lpt 4 ,
|
||||||
.Xr ppc 4 ,
|
.Xr ppc 4 ,
|
||||||
|
|
|
@ -131,14 +131,14 @@
|
||||||
固有です。
|
固有です。
|
||||||
.Pp
|
.Pp
|
||||||
.Fx 4.0
|
.Fx 4.0
|
||||||
では、
|
の時点でブロックデバイスは廃止され、その機能は
|
||||||
ブロックデバイスの価値が下がり、キャラクタデバイスが使われるようになりました。
|
キャラクタデバイスに置き換えられました。
|
||||||
.Fx 5.0
|
.Fx 5.0
|
||||||
では、デバイスノードはデバイスファイルシステム
|
では、デバイスノードはデバイスファイルシステム
|
||||||
.Xr devfs 5
|
.Xr devfs 5
|
||||||
で管理されるので、
|
で管理されるので、
|
||||||
.Nm
|
.Nm
|
||||||
ユーティリティは不必要になりました。
|
ユーティリティは不要になりました。
|
||||||
.Sh 関連項目
|
.Sh 関連項目
|
||||||
.Xr mkfifo 1 ,
|
.Xr mkfifo 1 ,
|
||||||
.Xr mknod 2 ,
|
.Xr mknod 2 ,
|
||||||
|
|
|
@ -151,12 +151,11 @@ RTS
|
||||||
全シリアルマウスがこのオプションをサポートするわけではありません。
|
全シリアルマウスがこのオプションをサポートするわけではありません。
|
||||||
.It Fl V
|
.It Fl V
|
||||||
``仮想スクロール'' を有効にします。このオプションが設定されている場合、
|
``仮想スクロール'' を有効にします。このオプションが設定されている場合、
|
||||||
中マウスボタンを押していると、動きがスクロールと解釈されるようになります。
|
マウスの中ボタンを押し続けていると、動きがスクロールと解釈されるようになります。
|
||||||
.\" スクロールモードが有効になる前に
|
|
||||||
スクロールモードを有効にするために
|
スクロールモードを有効にするために
|
||||||
マウスが動かなければならない距離を設定するには
|
マウスが動かなければならない距離を設定するには
|
||||||
.Fl U
|
.Fl U
|
||||||
オプションを使って下さい。
|
オプションを使います。
|
||||||
.It Fl a Ar X Ns Op , Ns Ar Y
|
.It Fl a Ar X Ns Op , Ns Ar Y
|
||||||
マウスの入力を加速または減速します。
|
マウスの入力を加速または減速します。
|
||||||
線型加速のみです。
|
線型加速のみです。
|
||||||
|
@ -253,7 +252,7 @@ RTS
|
||||||
が仮定されます。
|
が仮定されます。
|
||||||
通常では、
|
通常では、
|
||||||
.Nm
|
.Nm
|
||||||
ユーティリティがプロトコルの自動検出ができない場合に必要です
|
ユーティリティがプロトコルの自動検出をできない場合に必要です
|
||||||
.Pf ( Sx マウスデーモンの構成 )
|
.Pf ( Sx マウスデーモンの構成 )
|
||||||
を参照。
|
を参照。
|
||||||
.Pp
|
.Pp
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
.Nm
|
.Nm
|
||||||
スクリプトは、
|
スクリプトは、
|
||||||
.Xr rc 8
|
.Xr rc 8
|
||||||
のような様々なスクリプトから利用される、一般的に使用する
|
のような様々なスクリプトから共通に利用される
|
||||||
シェルスクリプト関数や変数定義を含んでいます。
|
シェルスクリプト関数や変数定義を含んでいます。
|
||||||
また ports が要求する
|
また ports が要求する
|
||||||
.Pa /usr/local/etc/rc.d
|
.Pa /usr/local/etc/rc.d
|
||||||
|
@ -95,11 +95,12 @@
|
||||||
書き換えられるでしょう。
|
書き換えられるでしょう。
|
||||||
.Pp
|
.Pp
|
||||||
.Nm
|
.Nm
|
||||||
の関数群は、大部分が
|
の関数群は大部分が
|
||||||
.Nx
|
.Nx
|
||||||
から取り込まれたものであり、またそれらは二つのプロジェクト間で同期できるように
|
から取り込まれたものであり、またそれらは二つのプロジェクト間で同期を
|
||||||
|
とり続けられるように
|
||||||
考えられています。
|
考えられています。
|
||||||
そのことを考慮した、役に立ついくつかの変数定義があります:
|
これを念頭において、この点に関して助けとなる変数定義がいくつかあります:
|
||||||
.Bl -tag -width 4n
|
.Bl -tag -width 4n
|
||||||
.It Va OSTYPE
|
.It Va OSTYPE
|
||||||
この値は
|
この値は
|
||||||
|
@ -112,18 +113,18 @@
|
||||||
コマンドのパス。
|
コマンドのパス。
|
||||||
.It Va SYSCTL_N
|
.It Va SYSCTL_N
|
||||||
.Ar name Ns = Ns Ar value
|
.Ar name Ns = Ns Ar value
|
||||||
ペアとしてではなく、
|
のペアとしてではなく、
|
||||||
.Xr sysctl 8
|
.Xr sysctl 8
|
||||||
変数のみを表示する際の、パスと引数のリスト。
|
値のみを表示する際の、パスと引数のリスト。
|
||||||
.It Va SYSCTL_W
|
.It Va SYSCTL_W
|
||||||
.Xr sysctl 8
|
.Xr sysctl 8
|
||||||
変数を設定または変更する際の、パスと引数。
|
値を設定または変更する際の、パスと引数。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
.Nm
|
.Nm
|
||||||
関数群には、カレントシェルで
|
関数群は、カレントシェルで
|
||||||
.Pa /etc/rc.subr
|
.Pa /etc/rc.subr
|
||||||
を読み込む事でアクセスできます。
|
を読み込むことで利用できるようになります。
|
||||||
.Pp
|
.Pp
|
||||||
以下のシェル関数が利用可能です:
|
以下のシェル関数が利用可能です:
|
||||||
.Bl -tag -width 4n
|
.Bl -tag -width 4n
|
||||||
|
@ -142,9 +143,9 @@
|
||||||
は
|
は
|
||||||
.Xr rcs 1
|
.Xr rcs 1
|
||||||
を使ってアーカイブします。
|
を使ってアーカイブします。
|
||||||
そうでなければ、以前のバージョンの
|
そうでない場合の、以前のバージョンの
|
||||||
.Ar current
|
.Ar current
|
||||||
は
|
を
|
||||||
.Ar backup
|
.Ar backup
|
||||||
として保存します。
|
として保存します。
|
||||||
.Pp
|
.Pp
|
||||||
|
@ -154,7 +155,8 @@
|
||||||
.Bl -tag -width ".Cm remove"
|
.Bl -tag -width ".Cm remove"
|
||||||
.It Cm add
|
.It Cm add
|
||||||
.Ar file
|
.Ar file
|
||||||
はこのバックアップ機構によりすぐにバックアップされるか、もしくは再投入されます。
|
はこのバックアップ機構により今後バックアップされるようになるか、
|
||||||
|
あるいは再度追加されます。
|
||||||
.Ar current
|
.Ar current
|
||||||
が作成され、必要なら、
|
が作成され、必要なら、
|
||||||
.Xr rcs 1
|
.Xr rcs 1
|
||||||
|
@ -167,7 +169,7 @@
|
||||||
.Ar backup
|
.Ar backup
|
||||||
にコピーされるか、もしくは
|
にコピーされるか、もしくは
|
||||||
.Xr rcs 1
|
.Xr rcs 1
|
||||||
にチェックされます (リポジトリファイルが古い場合)。
|
にチェックインされます (リポジトリファイルが古い場合)。
|
||||||
その後に、
|
その後に、
|
||||||
.Ar file
|
.Ar file
|
||||||
が
|
が
|
||||||
|
@ -175,12 +177,12 @@
|
||||||
にコピーされます。
|
にコピーされます。
|
||||||
.It Cm remove
|
.It Cm remove
|
||||||
.Ar file
|
.Ar file
|
||||||
はこのバックアップ機構で管理される事はもうありません。
|
はこのバックアップ機構で管理されなくなります。
|
||||||
.Xr rcs 1
|
.Xr rcs 1
|
||||||
が使われている場合は、空のファイルがチェックインされて
|
が使われている場合は、空のファイルがチェックインされて
|
||||||
.Ar current
|
.Ar current
|
||||||
は削除されます。
|
は削除されます。
|
||||||
そうでなければ、
|
そうでない場合は、
|
||||||
.Ar current
|
.Ar current
|
||||||
は
|
は
|
||||||
.Ar backup
|
.Ar backup
|
||||||
|
@ -193,14 +195,14 @@
|
||||||
.Dq Li TRUE ,
|
.Dq Li TRUE ,
|
||||||
.Dq Li ON ,
|
.Dq Li ON ,
|
||||||
.Ql 1
|
.Ql 1
|
||||||
ならば、 0 を返します。
|
ならば、0 を返します。
|
||||||
.Ar var
|
.Ar var
|
||||||
の値が
|
の値が
|
||||||
.Dq Li NO ,
|
.Dq Li NO ,
|
||||||
.Dq Li FALSE ,
|
.Dq Li FALSE ,
|
||||||
.Dq Li OFF ,
|
.Dq Li OFF ,
|
||||||
.Ql 0
|
.Ql 0
|
||||||
ならば、 1 を返します。
|
ならば、1 を返します。
|
||||||
これら以外の値ならば、
|
これら以外の値ならば、
|
||||||
.Ar var
|
.Ar var
|
||||||
が正しく設定されていないという警告を出します。
|
が正しく設定されていないという警告を出します。
|
||||||
|
@ -210,10 +212,10 @@
|
||||||
の最初の行の最初の語を解析して PID とし、この PID を持つプロセスが
|
の最初の行の最初の語を解析して PID とし、この PID を持つプロセスが
|
||||||
実行されていて、最初の引数が
|
実行されていて、最初の引数が
|
||||||
.Ar procname
|
.Ar procname
|
||||||
とマッチすることを確かめます。
|
にマッチすることを確認します。
|
||||||
成功すればマッチした PID を出力し、そうでなければ何もしません。
|
成功すればマッチした PID を出力し、そうでない場合は何もしません。
|
||||||
.Ar interpreter
|
.Ar interpreter
|
||||||
が与えられれば、
|
が与えられた場合、
|
||||||
.Ar procname
|
.Ar procname
|
||||||
の最初の行を解析して、
|
の最初の行を解析して、
|
||||||
.Pp
|
.Pp
|
||||||
|
@ -228,7 +230,7 @@
|
||||||
.It Ic check_process Ar procname Op Ar interpreter
|
.It Ic check_process Ar procname Op Ar interpreter
|
||||||
最初の引数が
|
最初の引数が
|
||||||
.Ar procname
|
.Ar procname
|
||||||
にマッチする、実行されている任意のプロセスの PID を出力します。
|
にマッチする、実行されているすべてのプロセスの PID を出力します。
|
||||||
.Ar interpreter
|
.Ar interpreter
|
||||||
は
|
は
|
||||||
.Ic check_pidfile
|
.Ic check_pidfile
|
||||||
|
@ -243,7 +245,7 @@
|
||||||
.Va ( $0
|
.Va ( $0
|
||||||
より),
|
より),
|
||||||
.Dq Li ": DEBUG: " ,
|
.Dq Li ": DEBUG: " ,
|
||||||
及びこれに続く
|
およびこれに続く
|
||||||
.Ar message
|
.Ar message
|
||||||
で構成されます。
|
で構成されます。
|
||||||
この関数はスクリプトのデバッグの手助けとして、開発者が使用することを
|
この関数はスクリプトのデバッグの手助けとして、開発者が使用することを
|
||||||
|
@ -261,12 +263,13 @@
|
||||||
を使用してシステムログに記録をして、終了値
|
を使用してシステムログに記録をして、終了値
|
||||||
.Ar exitval
|
.Ar exitval
|
||||||
で
|
で
|
||||||
.Ic 終了します。
|
.Ic 終了
|
||||||
|
します。
|
||||||
このエラーメッセージは、スクリプト名
|
このエラーメッセージは、スクリプト名
|
||||||
.Va ( $0
|
.Va ( $0
|
||||||
より),
|
より),
|
||||||
.Dq Li ": ERROR: " ,
|
.Dq Li ": ERROR: " ,
|
||||||
及びこれに続く
|
およびこれに続く
|
||||||
.Ar message
|
.Ar message
|
||||||
で構成されます。
|
で構成されます。
|
||||||
.It Ic force_depend name
|
.It Ic force_depend name
|
||||||
|
@ -292,7 +295,7 @@
|
||||||
.Va ( $0
|
.Va ( $0
|
||||||
より),
|
より),
|
||||||
.Dq Li ": INFO: " ,
|
.Dq Li ": INFO: " ,
|
||||||
及びこれに続く
|
およびこれに続く
|
||||||
.Ar message
|
.Ar message
|
||||||
で構成されます。
|
で構成されます。
|
||||||
この情報出力の表示は
|
この情報出力の表示は
|
||||||
|
@ -314,7 +317,7 @@
|
||||||
引数を上書きする変数定義を含めることもできます。
|
引数を上書きする変数定義を含めることもできます。
|
||||||
これは管理者が任意の
|
これは管理者が任意の
|
||||||
.Xr rc.d 8
|
.Xr rc.d 8
|
||||||
スクリプトを編集すること無く、その動作を上書きできる簡易な仕組みを提供します。
|
スクリプトを編集することなく、その動作を上書きできる簡易な仕組みを提供します。
|
||||||
.It Ic mount_critical_filesystems Ar type
|
.It Ic mount_critical_filesystems Ar type
|
||||||
.Xr rc.conf 5
|
.Xr rc.conf 5
|
||||||
変数の
|
変数の
|
||||||
|
@ -323,13 +326,13 @@
|
||||||
いないものがあれば、マウントします。
|
いないものがあれば、マウントします。
|
||||||
.It Ic rc_usage Ar command ...
|
.It Ic rc_usage Ar command ...
|
||||||
.Va $0
|
.Va $0
|
||||||
の使用方法を、有効な引数の一覧として、
|
の使用方法を、有効な引数の一覧である
|
||||||
.Ar command
|
.Ar command
|
||||||
をプレフィックスの
|
に
|
||||||
.Sm off
|
.Sm off
|
||||||
.Dq Bq Li fast | force | one
|
.Dq Bq Li fast | force | one
|
||||||
.Sm on
|
.Sm on
|
||||||
と共に出力します。
|
のプレフィックスをつけて出力します。
|
||||||
.It Ic reverse_list Ar item ...
|
.It Ic reverse_list Ar item ...
|
||||||
.Ar item
|
.Ar item
|
||||||
のリストを逆順で出力します。
|
のリストを逆順で出力します。
|
||||||
|
@ -352,7 +355,7 @@
|
||||||
本コマンドは、
|
本コマンドは、
|
||||||
.Xr rc.conf 5
|
.Xr rc.conf 5
|
||||||
の指定によりサービスを起動するべきかをチェックします。
|
の指定によりサービスを起動するべきかをチェックします。
|
||||||
またサービスが既に実行中で、そのために起動を拒否するかどうかもチェックします。
|
またサービスが既に実行中であるかをチェックし、その場合は起動を拒否します。
|
||||||
標準の
|
標準の
|
||||||
.Fx
|
.Fx
|
||||||
スクリプトにおいて、システムが直接マルチユーザモードで起動する場合は、
|
スクリプトにおいて、システムが直接マルチユーザモードで起動する場合は、
|
||||||
|
@ -369,9 +372,9 @@
|
||||||
を実行します。
|
を実行します。
|
||||||
デフォルトでは、 (もし実行中なら) プログラムのプロセス ID を表示します。
|
デフォルトでは、 (もし実行中なら) プログラムのプロセス ID を表示します。
|
||||||
.It Cm rcvar
|
.It Cm rcvar
|
||||||
サービスの起動を制御するのに使用する
|
どの
|
||||||
.Xr rc.conf 5
|
.Xr rc.conf 5
|
||||||
変数を (もしあれば) 表示します。
|
変数がサービスの起動を制御しているか、(もしあれば) 表示します。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
.Va pidfile
|
.Va pidfile
|
||||||
|
@ -382,7 +385,7 @@
|
||||||
.It Cm poll
|
.It Cm poll
|
||||||
コマンドが終了するのを待ちます。
|
コマンドが終了するのを待ちます。
|
||||||
.It Cm status
|
.It Cm status
|
||||||
プロセスのステータスを表示します。
|
プロセスの状態を表示します。
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
他にサポートされているコマンドは、オプション変数の
|
他にサポートされているコマンドは、オプション変数の
|
||||||
|
@ -404,9 +407,9 @@
|
||||||
.Va rc_force Ns = Ns Li YES
|
.Va rc_force Ns = Ns Li YES
|
||||||
をセットします。
|
をセットします。
|
||||||
.Ar argument Ns Va _precmd
|
.Ar argument Ns Va _precmd
|
||||||
が非 0 を返しても無視します。
|
が非 0 を返したり、
|
||||||
.Va required_*
|
.Va required_*
|
||||||
テストのどれかが失敗しても無視します。
|
テストのどれかが失敗したりしても無視します。
|
||||||
また終了ステータスとして常に 0 を返します。
|
また終了ステータスとして常に 0 を返します。
|
||||||
.It Li one
|
.It Li one
|
||||||
.Va rcvar
|
.Va rcvar
|
||||||
|
@ -430,11 +433,11 @@
|
||||||
によりチェックされ、この処理を実行するかどうかを判定します。
|
によりチェックされ、この処理を実行するかどうかを判定します。
|
||||||
.It Va command
|
.It Va command
|
||||||
コマンドのフルパス。
|
コマンドのフルパス。
|
||||||
サポートされる各キーワードに対して
|
サポートされている各キーワードに対して
|
||||||
.Ar argument Ns Va _cmd
|
.Ar argument Ns Va _cmd
|
||||||
が設定されている場合は、必要ありません。
|
が設定されている場合は、必要ありません。
|
||||||
.It Va command_args
|
.It Va command_args
|
||||||
オプション引数、及び / または
|
オプション引数、および / または
|
||||||
.Va command
|
.Va command
|
||||||
に対するシェルディレクティブ。
|
に対するシェルディレクティブ。
|
||||||
.It Va command_interpreter
|
.It Va command_interpreter
|
||||||
|
@ -449,40 +452,40 @@
|
||||||
.Dl "command_interpreter [...] command"
|
.Dl "command_interpreter [...] command"
|
||||||
.Pp
|
.Pp
|
||||||
のようになります。
|
のようになります。
|
||||||
ですので、この文字列は実行中のコマンドの PID を検索するのに、
|
ですので、実行中のコマンドの PID を検索するのに、
|
||||||
.Va command
|
.Va command
|
||||||
の代わりに使用します。
|
ではなくこの文字列を使用します。
|
||||||
.It Va extra_commands
|
.It Va extra_commands
|
||||||
特別にサポートするコマンド / キーワード / 引数。
|
特別にサポートするコマンド / キーワード / 引数。
|
||||||
.It Va pidfile
|
.It Va pidfile
|
||||||
PID ファイルのパス。
|
PID ファイルのパス。
|
||||||
実行中のコマンドの PID を特定するのに使用します。
|
実行中のコマンドの PID を特定するのに使用します。
|
||||||
.Va pidfile
|
.Va pidfile
|
||||||
が設定された場合、 PID を検索するのには
|
が設定された場合、 PID を検索するには
|
||||||
.Pp
|
.Pp
|
||||||
.Dl "check_pidfile $pidfile $procname"
|
.Dl "check_pidfile $pidfile $procname"
|
||||||
.Pp
|
.Pp
|
||||||
を使用します。
|
を使用します。
|
||||||
そうでなければ、
|
そうでなければ、
|
||||||
.Va command
|
.Va command
|
||||||
が設定されている場合、 PID を検索するのには
|
が設定されている場合、 PID を検索するには
|
||||||
.Pp
|
.Pp
|
||||||
.Dl "check_process $procname"
|
.Dl "check_process $procname"
|
||||||
.Pp
|
.Pp
|
||||||
を使用します。
|
を使用します。
|
||||||
.It Va procname
|
.It Va procname
|
||||||
チェックする時のプロセス名。
|
チェックする対象プロセス名。
|
||||||
デフォルトは
|
デフォルトでは
|
||||||
.Va command
|
.Va command
|
||||||
の値です。
|
の値です。
|
||||||
.It Va required_dirs
|
.It Va required_dirs
|
||||||
デフォルトの start 処理を実行する前に、これに列挙されたディレクトリの
|
デフォルトの start 処理を実行する前に、これに列挙された各ディレクトリの
|
||||||
存在をチェックします。
|
存在をチェックします。
|
||||||
.It Va required_files
|
.It Va required_files
|
||||||
デフォルトの start 処理を実行する前に、これに列挙されたファイルが
|
デフォルトの start 処理を実行する前に、これに列挙された各ファイルが
|
||||||
読み取り可能かをチェックします。
|
読み取り可能かどうかをチェックします。
|
||||||
.It Va required_vars
|
.It Va required_vars
|
||||||
デフォルトの start 処理を実行する前に、これに列挙された変数に対して
|
デフォルトの start 処理を実行する前に、これに列挙された各変数に対して
|
||||||
.Ic checkyesno
|
.Ic checkyesno
|
||||||
を適用します。
|
を適用します。
|
||||||
.It Va ${name}_chdir
|
.It Va ${name}_chdir
|
||||||
|
@ -564,7 +567,7 @@ chroot
|
||||||
.It Va sig_reload
|
.It Va sig_reload
|
||||||
デフォルトの
|
デフォルトの
|
||||||
.Cm reload
|
.Cm reload
|
||||||
処理において、プロセスを再読み込みさせるのに送られるシグナル。
|
処理において、プロセスに再読み込みさせるのに送られるシグナル。
|
||||||
デフォルトは
|
デフォルトは
|
||||||
.Dv SIGHUP
|
.Dv SIGHUP
|
||||||
です。
|
です。
|
||||||
|
@ -630,7 +633,7 @@ chroot
|
||||||
.Ic run_rc_command
|
.Ic run_rc_command
|
||||||
が完了した後だけでなく、
|
が完了した後だけでなく、
|
||||||
.Ar ( argument Ns Va _cmd
|
.Ar ( argument Ns Va _cmd
|
||||||
のような) 処理でも参照できます:
|
のような) 処理でも同様に参照できます:
|
||||||
.Bl -tag -width ".Va rc_flags" -offset indent
|
.Bl -tag -width ".Va rc_flags" -offset indent
|
||||||
.It Va rc_arg
|
.It Va rc_arg
|
||||||
fast 及び force 処理が済んだ後の、
|
fast 及び force 処理が済んだ後の、
|
||||||
|
@ -727,7 +730,7 @@ fast
|
||||||
.Pp
|
.Pp
|
||||||
この関数は適切な
|
この関数は適切な
|
||||||
.Xr rc.conf 5
|
.Xr rc.conf 5
|
||||||
変数を作成するために、呼び出し側のスクリプトで定義されているべき変数
|
ノブを作成するために、呼び出し側のスクリプトで定義されているべき変数
|
||||||
.Va $name
|
.Va $name
|
||||||
の値を使用します。
|
の値を使用します。
|
||||||
引数
|
引数
|
||||||
|
@ -753,7 +756,7 @@ fast
|
||||||
.Va ( $0
|
.Va ( $0
|
||||||
より),
|
より),
|
||||||
.Dq Li ": WARNING: " ,
|
.Dq Li ": WARNING: " ,
|
||||||
及びこれに続く
|
およびこれに続く
|
||||||
.Ar message
|
.Ar message
|
||||||
で構成されます。
|
で構成されます。
|
||||||
.El
|
.El
|
||||||
|
|
|
@ -86,9 +86,8 @@
|
||||||
.Xr indent 1
|
.Xr indent 1
|
||||||
に再整形させたくない場合は、
|
に再整形させたくない場合は、
|
||||||
それらのコメントのダッシュを星に変えてください。
|
それらのコメントのダッシュを星に変えてください。
|
||||||
最初のコメント以外のカラムで始まるコメントは
|
最初のカラム以外から始まるコメントは
|
||||||
決してライセンス声明とはみなしません。
|
決してライセンス声明とはみなしません。
|
||||||
訳注: 行頭にないものはライセンス表明とみなしません。
|
|
||||||
.Pp
|
.Pp
|
||||||
著作権ヘッダの後には空行を 1 行入れ、ソースファイルには
|
著作権ヘッダの後には空行を 1 行入れ、ソースファイルには
|
||||||
.Va rcsid
|
.Va rcsid
|
||||||
|
|
Loading…
Reference in a new issue