Reviewed but uncommited man pages.

Submitted by: Sarumaru Yoshihiko <mistral at imasy or jp>
This commit is contained in:
SUZUKI Koichi 2006-03-08 07:43:48 +00:00
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

View file

@ -68,7 +68,8 @@
.It Fl r
.Fl c
と似ていますが、新しいエントリはアーカイブに追加されます。
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
なおこれは通常ファイルに保存された非圧縮アーカイブに対してのみ
動作することに注意してください。
.Fl f
オプションが必要です。
.It Fl t
@ -77,12 +78,13 @@
.Fl r
と似ていますが、新しいエントリの変更時刻が、アーカイブ内の対応するエントリ
のものよりも新しい場合のみ、追加されます。
なおこれは通常ファイルの非圧縮アーカイブに対してのみ動作します。
なおこれは通常ファイルに保存された非圧縮アーカイブに対してのみ
動作することに注意してください。
.Fl f
オプションが必要です。
.It Fl x
アーカイブからディスクに展開します。
もし同名のファイルがアーカイブ内に 2 回以上現れた場合、それぞれのコピーが
もし同名のファイルがアーカイブ内に複数回現れた場合、それぞれのコピーが
展開され、後のものがそれ以前のコピーを上書き (置換) します。
.El
.Pp
@ -93,7 +95,7 @@
指定された順にアーカイブに追加されます。
デフォルトでは、各ディレクトリ内のファイルもアーカイブされます。
.Pp
展開またはリストモードにおいて、アーカイブをオープンする前に
展開またはリストモードでは、アーカイブをオープンする前に
コマンドライン全体が読み込まれ、解析されます。
コマンドラインのパス名またはパターンは、アーカイブ内の処理対象となる
アイテムを示します。
@ -121,14 +123,16 @@
gzip で圧縮した pax フォーマットアーカイブに変換して、標準出力に出力します。
このように、
.Nm
はアーカイブのフォーマットを別のものに変換する為に使うことが出来ます。
はアーカイブのフォーマットを別のものに変換するために使用できます。
.It Fl b Ar blocksize
テープドライブの I/O に対するブロックサイズを、512 バイトレコード単位で
指定します。
一般に、本引数はテープドライブに読み書きする時、デフォルトブロックサイズで
ありごく一般的な 20 レコード (10240 バイト) を用いない場合のみに必要となります。
一般に、本引数はテープドライブに読み書きする場合にのみ必要であり、
たとえその場合であってもデフォルトのブロックサイズである
20 レコード (10240 バイト) はとても普遍的な値であるので、
通常必要ありません。
.It Fl C Ar directory
c および r モードにおいて、続くファイルを追加する前に、ディレクトリを
c および r モードにおいて、続くファイルを追加する前に、ディレクトリを
変更します。
x モードにおいては、アーカイブをオープンした後、エントリをアーカイブから
展開する前にディレクトリを変更します。
@ -138,7 +142,8 @@ x
警告メッセージを発行します。
.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 )
(c モードのみ)
作成するアーカイブのフォーマットを指定するのに用います。
@ -153,7 +158,7 @@ x
.Xr libarchive-formats 5
を参照してください。
.It Fl f Ar file
指定されたファイルを、読み書きするアーカイブにします。
指定されたファイルに対してアーカイブを読んだり書いたりします。
ファイル名を
.Pa -
にすれば、標準入力または標準出力になります。
@ -167,8 +172,8 @@ x
最初のアーカイブエントリだけを展開またはリスト表示します。
各パターンまたはファイル名にマッチすれば、すぐに終了します。
同名のエントリが複数存在でき、また慣習として後のエントリがそれ以前のエントリを
上書きする為に、デフォルトではアーカイブは常に最後まで読み込まれます。
本オプションは性能の最適化のに提供されています。
上書きするため、デフォルトではアーカイブは常に最後まで読み込まれます。
本オプションは性能の最適化のために提供されています。
.It Fl H
(c および r モードのみ)
コマンドラインで指定されたシンボリックリンクを追跡します。
@ -181,8 +186,8 @@ x
指定したパターンにマッチしたファイルまたはディレクトリのみ処理します。
なおこの指定よりも、
.Fl -exclude
による指定が優先します。
これを明示しなければ、デフォルトで全てのエントリが処理されます。
による除外指定が優先することに注意してください
これを明示しなければ、デフォルトで全てのエントリが処理されます。
この
.Fl -include
オプションは、アーカイブをフィルタリングするのに特に有用です。
@ -204,11 +209,11 @@ x
なお他の
.Nm tar
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
自動的に判別します。
自動的に判別することに注意してください
.It Fl k
(x モードのみ)
既存のファイルを上書きしません。
特に、アーカイブ内に 2 回以上現れるファイルであっても、後のコピーが
特に、アーカイブ内にあるファイルが複数回現れても、後のコピーが
それ以前のコピーを上書きすることはしません。
.It Fl L
(c および r モードのみ)
@ -233,7 +238,7 @@ GNU tar
ディレクトリ内のファイルを再帰的にアーカイブしません。
.It Fl -nodump ( Fl W Cm nodump )
(c および r モードのみ)
nodump ファイルフラグの立ったファイルをスキップします。
nodump ファイルフラグを尊重して、このファイルをスキップします。
.It Fl O
(x, t モードのみ)
展開 (-x) モードでは、ファイルはディスクに展開されずに標準出力に
@ -242,14 +247,14 @@ nodump
書き込まれます。
.It Fl o
(x モードのみ)
ユーザとグループを、アーカイブが指定したものではなく、
ユーザとグループを、アーカイブ中で指定されたものではなく、
本プログラムを実行しているユーザのものを使用します。
なおこれは
.Fl p
を指定しないと意味がありません。
また本プログラムを root ユーザが実行している必要があります
を指定し、かつ本プログラムを root ユーザが実行していなければ
意味がないことに注意してください
この場合、ファイルモードとフラグはアーカイブからリストアされますが、
ACL や所有者の情報は破棄されます。
アーカイブ中の ACL や所有者の情報は破棄されます。
.It Fl P
パス名を保持します。
デフォルトでは、アーカイブの作成と展開の両方において、絶対パス名 (/ 文字で
@ -258,18 +263,18 @@ ACL
.Nm
は、パス名に
.Pa ..
を含んでいたり、対象ディレクトリをシンボリックリンクで変更する
アーカイブエントリを展開するのを拒否します。
本オプションはこの振舞いを抑制します。
を含んでいたり、対象ディレクトリをシンボリックリンクで変更したりする
アーカイブエントリの展開を拒否します。
本オプションはこれらの振舞いを抑制します。
.It Fl p
(x モードのみ)
ファイルパーミッションを保持します。
アーカイブから各アイテムを展開する際、可能ならば、所有者、ファイルモード、
アーカイブから各アイテムを展開する際、もしあれば、所有者、ファイルモード、
ファイルのフラグと ACL を含む、全てのパーミッションをリストアしようとします。
デフォルトでは、新規作成するファイルの所有者は
.Nm
を実行するユーザとなり、新規作成する通常ファイルに関してはファイルモードが
リストアされ、またこれら以外のタイプのエントリはデフォルトのパーミッションに
リストアされ、これら以外のタイプのエントリはデフォルトのパーミッションに
なります。
もし
.Nm
@ -288,7 +293,7 @@ ACL
.It Fl U
(x モードのみ)
ファイルを作成する前に、いったん削除します。
本オプションしでは、
本オプションしでは、
.Nm
は既存のファイルを上書きし、既存のハードリンクを保持します。
本オプションにより、既存のハードリンクは破棄され、同様に、
@ -298,6 +303,7 @@ ACL
作成及び展開モードにおいて、
.Nm
はアーカイブに書き込み、またはアーカイブから読み出した各ファイルの名前を
そのまま
リスト表示します。
リストモードにおいて、
.Nm
@ -305,17 +311,17 @@ ACL
.Xr ls 1
に似た出力を表示します。
.Fl v
オプションを追加することで、付加的な説明を表示します。
オプションを追加することで、より詳細に表示します。
.It Fl W Ar longopt=value
ロングオプション
.Pf ( Fl -
が先行する)
が先頭につく)
は、
.Xr getopt_long 3
関数が用意されているシステムでのみ、直接サポートされます。
この関数をサポートしないシステムでは、本
.Fl W
オプションを介して、ロングオプションを使うことが出来ます。
オプションを介して、ロングオプションを使用できます。
.It Fl w
あらゆる操作に対し、確認を求めます。
.It Fl X Ar filename
@ -332,7 +338,7 @@ ACL
なお他の
.Nm tar
実装と異なり、本実装ではアーカイブを読み込む際には、bzip2 圧縮を
自動的に判別します。
自動的に判別することに注意してください
.It Fl z
(c モードのみ)
作成するアーカイブを
@ -342,7 +348,7 @@ ACL
なお他の
.Nm tar
実装と異なり、本実装ではアーカイブを読み込む際には、gzip 圧縮を
自動的に判別します。
自動的に判別することに注意してください
.El
.Sh 環境変数
次の環境変数が、
@ -353,7 +359,7 @@ ACL
使用するロケール。
詳細は
.Xr environ 7
を参照。
を参照してください
.It Ev POSIXLY_CORRECT
この環境変数が定義されると、
.Fl l
@ -363,12 +369,12 @@ ACL
.It Ev TAPE
デフォルトテープデバイス。
.Fl f
オプションはこれを無視します。
オプションはこれを上書きします。
.It Ev TZ
日付を表示する際に使用するタイムゾーン。
詳細は
.Xr environ 7
を参照。
を参照してください
.El
.Sh 関連ファイル
.Bl -tag -width ".Ev BLOCKSIZE"
@ -376,7 +382,7 @@ ACL
.Ev TAPE
環境変数か
.Fl f
オプションで無視されないなら
オプションで上書きされない限り
デフォルトのテープデバイスです。
.El
.Sh 終了ステータス
@ -399,10 +405,10 @@ ACL
.Pp
作成モードにおいて、アーカイブされるファイルとディレクトリのリストには、
.Cm -C Ns Pa foo/baz
の形式でディレクトリの変更命令を取り込むことが出来ます。
の形式でディレクトリの変更命令を取り込ます。
また
.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
では、新しいアーカイブ
@ -424,8 +430,8 @@ ACL
まとめオプション形式は、これまでの実装との互換性のためにサポートされています。
これには、各文字がオプションである頭文字 (- 文字で始まらない)
が存在します。
引数は別々の単語続きます。
この引数の順序はまとめオプション文字内の、対応する文字の順序と一致している
引数は別々の単語として続きます。
この引数の順序はまとめオプション文字内の、対応する文字の順序と一致している
必要があります。
例えば
.Dl Nm Cm tbf 32 Pa file.tar
@ -450,7 +456,7 @@ ACL
フラグに対する引数です。
.Pp
モードオプションの c, r, t, u, x、およびオプションの
b, f, l, m, o, v, w は、SUSv2 に準じています。
b, f, l, m, o, v, w は、SUSv2 に適合しています。
.Pp
移植性を最大限にするために、
.Nm tar
@ -465,7 +471,7 @@ b, f, l, m, o, v, w
.Cm m ,
.Cm v ,
.Cm w
限するべきです。
に限するべきです。
.Pp
getopt_long() をサポートするシステムでは、他の tar 実装との互換性を
増すために、ロングオプションが使用できます。
@ -473,30 +479,30 @@ getopt_long()
確実なセキュリティは、
.Nm
を含む沢山のアーカイブプログラムに共通の課題です。
特に、細工されたアーカイブは
特に、注意深く細工されたアーカイブは
.Nm
に対して、対象とするディレクトリ以外の場所にファイルを展開するように
要求することが出来ます。
これは不注意なユーザに対し、上書きするつもりのいファイルを
上書きさせるのに使うことが潜在的に可能です。
要求できます。
これは不注意なユーザに対し、上書きするつもりのいファイルを
上書きさせられる可能性があります。
アーカイブをスーパユーザが展開している場合は、システム上の
あらゆるファイルが上書きされる潜在的な可能性があります。
あらゆるファイルが上書きさせられる可能性があります。
これを引き起こす、三つの手段があります。
.Nm
はそれに対する防御機構を備えていますが、情報通のユーザならば、
それらについて知っておくべきでしょう:
はそれぞれに対する防御機構を備えていますが、情報通のユーザならば、
それらの意味するところを知っておくべきでしょう:
.Bl -bullet -width indent
.It
アーカイブのエントリは、絶対パス名を持つことが出来ます。
アーカイブのエントリは、絶対パス名を持つことができます。
デフォルトでは、
.Nm
はこの問題に対する防御策として、これをリストアする前にファイル名の先頭にある
はこの問題に対する防御策として、これをリストアする前にファイル名の先頭にある
.Pa /
文字を取り除きます。
.It
アーカイブのエントリは、
.Pa ..
を含むパス名を持つことが出来ます。
を含むパス名を持ます。
デフォルトでは、
.Nm
はパス名に
@ -504,10 +510,12 @@ getopt_long()
を含んでいるファイルを展開しません。
.It
アーカイブのエントリでは、ファイルを別のディレクトリにリストアするように、
シンボリックリンクを悪用することが出来ます。
アーカイブは別のディレクトリを指すシンボリックリンクをリストアすることが出来
シンボリックリンクを悪用できます。
アーカイブは別のディレクトリを指すシンボリックリンクをリストアすることができ
このリンクを使ってファイルをそのディレクトリにリストアします。
これを防ぐため、.Nm では毎回、展開されるパスにシンボリックリンクが
これを防ぐため、
.Nm
では毎回、展開されるパスにシンボリックリンクが
含まれるかどうかを調べます。
もしパスの最後の要素が
シンボリックリンクであれば、そのシンボリックリンクは削除され、
@ -528,11 +536,11 @@ getopt_long()
.Dl Nm Fl tf Pa filename
としてアーカイブの内容を調べるべきです。
.Nm
が既存のファイルを上書きしないことを保証するには
.Fl k
オプションを使うべきですし、既存のファイルを消去させるには
オプションをつけて既存のファイルを上書きしないことを保証させるか、
.Fl U
オプションを使うべきです。
オプションをつけて既存のファイルを削除させるべきです。
一般に、スーパユーザ権限にある時は、アーカイブを展開するべきではありません。
なお
.Fl P
@ -541,7 +549,7 @@ getopt_long()
は上に述べたセキュリティチェックを行わないようになり、絶対パスや
.Pa ..
を含むファイル、及び他のディレクトリへのシンボリックリンクを
展開できるようになります
展開できるようになることに注意してください
.Sh 関連項目
.Xr bzip2 1 ,
.Xr cpio 1 ,
@ -557,9 +565,9 @@ getopt_long()
.St -p1003.1-96
にはありましたが、
.St -p1003.1-2001
ではくなりました。
本実装で使用できるオプションは、古い tar の POSIX 仕様、現在の
pax の POSIX 仕様はもちろん、現存するいくつかの tar 実装を調査して
ではくなりました。
本実装で使用できるオプションは、現存するいくつかの tar 実装と同様、
tar の古い POSIX 仕様、pax の現在の POSIX 仕様を調査して
開発されました。
.Pp
ustar と pax 間のファイルフォーマット変換については、pax コマンドの
@ -567,12 +575,12 @@ ustar
にて定義されています。
.Sh 歴史
.Nm tar
コマンドは Seventh Edition Unix から登場しました。
多数の実装があり、その多くはファイルフォーマットを拡張しています。
コマンドは Seventh Edition Unix 登場しました。
多数の実装があり、その多くはファイルフォーマットを拡張しています。
John Gilmore によるパブリックドメイン実装の
.Nm pdtar
(1987 年 11 月頃) は多大な影響を及ぼし、GNU tar の元になりました。
FreeBSD 1.0 より、GNU tar は FreeBSD 基本システムの tar として
FreeBSD 1.0 より始まった時に、GNU tar は FreeBSD 基本システムの tar として
取り込まれました。
.Pp
本ソフトウェアは
@ -589,7 +597,7 @@ POSIX
.\" because of = ~のために、~のせいで
.Pp
.Fl C Pa dir
オプションは、歴代の実装とは異なっているかも知れません
オプションは、歴史的な実装とは異なっているでしょう
.Pp
全てのアーカイブ出力は、出力を圧縮していても、正しいサイズのブロックで
書き出されます。
@ -611,21 +619,21 @@ tar
.Dl Nm Fl czf Pa - file
により作成した圧縮出力と、
.Dl Nm Fl cf Pa - file | Nm gzip
により作成した圧縮出力には、些細ですが違いがあります
により作成した圧縮出力には、些細な違いがあるかもしれません
.Pp
デフォルトでは標準の I/O パスでアーカイブを読み書きするべきですが、
伝統的に (および POSIX では) 他のものを要求します。
伝統的に (および POSIX では) 他のものを規定しています。
.Pp
.Cm r
および
.Cm u
モードでは、アーカイブは非圧縮でディスク上に通常ファイルとして存在する
必要があります。
他のアーカイブは
そうではないアーカイブは
.Cm c
モードと
.Pa @archive-file
拡張を用いて更新することが出来ます。
拡張を用いて更新できます。
.Pp
.Pa @foo
@ -649,10 +657,11 @@ tar
.Pp
マルチボリュームアーカイブ、および疎なファイルに対するサポートはまだありません。
.Pp
異なるアーカイブフォーマット (tar と cpio など) を
似ていないアーカイブフォーマット間 (tar と cpio など) で
.Cm @ Ns Pa -
により変換すると、ハードリンク情報が失われます
(これは異なるアーカイブフォーマットでハードリンク情報を格納していることからくる
(これは異なるアーカイブフォーマットでハードリンク情報を
互換性のない形で格納していることからくる
当然の結果です)。
.Pp
故意にドキュメント化していない、多くのショートオプションの代わりになる

View file

@ -416,7 +416,7 @@ utility
ファイルのパーミッション、ハードリンクの数、所有者、グループ、
バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。
ファイルがブロック型もしくはキャラクタ型の特殊ファイルならば、
バイトで表したファイルの大きさの代わりにメジャー番号とマイナ番号を
バイトで表したファイルの大きさの代わりにメジャー番号とマイナ番号を
出力します。
ファイルがシンボリックリンクならば、
.Dq Li ->

View file

@ -88,7 +88,7 @@
更なる処理が必要であるため、通常はこれらは除外されています。
.It Fl n
数値フォーマットで表示を行います。マウントポイントの名前を表示する
かわりに、そのファイルシステムにおけるデバイス番号 (メジャー、マイナ)
かわりに、そのファイルシステムにおけるデバイス番号 (メジャー、マイナ)
を表示します。特殊ファイルに関しては、
.Pa /dev
の下のファイル名
@ -151,7 +151,7 @@ wd -
.It Li DEV
.Fl n
が指定されると、このヘッダが現れます。ファイルが存在しているデバイス
のメジャー番号とマイナ番号です。
のメジャー番号とマイナ番号です。
.It Li INUM
ファイルの inode 番号。
.It Li MODE
@ -174,7 +174,7 @@ wd -
になかったり、
.Fl n
が指定されていたりする
と、スペシャルデバイスが参照するメジャー番号、マイナ番号を表示します。
と、スペシャルデバイスが参照するメジャー番号、マイナ番号を表示します。
.It Li R/W
このフィールドには、ファイルのアクセス属性が表示されます。
``r'' の場合は、ファイルが読み込みのためにオープンされていることを意味します。

View file

@ -311,7 +311,7 @@ ID
.Pp
ファイルがキャラクタ型もしくはブロック型の特殊ファイルである場合、
ファイルサイズフィールドには
ファイルのメジャー番号とマイナ番号が表示されます。
ファイルのメジャー番号とマイナ番号が表示されます。
ファイルがシンボリックリンクファイルである場合、
リンク先ファイルのパス名が
.Dq Li ->

View file

@ -87,7 +87,7 @@
.Nm
は全再配置を含む表を表示します。
.It Ev LD_LIBMAP
ライブラリ置換リストで、形式は
ライブラリ置換リストで、形式は
.Xr libmap.conf 5
と同じです。
便利なように、空白と改行のかわりに

View file

@ -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 $
.\"
@ -1832,7 +1832,7 @@ wrl.nfs > sushi.201b:
ファイルハンドル (\fIfh\fP) 21,24/10.731657119 に対する \fIreadlink\fP
(シンボリックリンク読み込み) です。
(この例のように運が良ければ、ファイルハンドルはデバイスのメジャー、
マイナ番号のペアと、それに続く inode 番号と世代番号と解釈することがで
マイナ番号のペアと、それに続く inode 番号と世代番号と解釈することがで
きます。)
\fIwrl\fP はリンクの内容とともに `ok' と返答しています。
.LP

View file

@ -4870,7 +4870,7 @@ prompt
(ディスクから取って来る必要があったページ数)。
.TP 4
%R
マイナページフォールトの回数。
マイナページフォールトの回数。
.TP 4
%I
入力操作の回数。

View file

@ -8,10 +8,10 @@
.\" forth in the LICENSE file which can be found at the top level of
.\" 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$
.TH VACATION 1 "$Date: 2004-09-24 06:50:37 $"
.TH VACATION 1 "$Date: 2006-03-08 07:43:47 $"
.SH 名称
.B vacation
\- 電子メールの自動応答器
@ -157,12 +157,13 @@ vacation
.I interval
日に設定します。デフォルトは 1 週間です。間隔を
``0''
に設定すると、全てのメッセージに対して自動応答を行ないます。
または
``infinite''
(実際には数字以外の文字ならなんでも)設定すると、
(実際には数字以外の文字ならなんでも)設定すると、
同じ送信者には一度しか自動応答を行ないません。
.B \-r
オプションは、vacation データベース初期化時のみ使用してください (前述の
オプションは、vacation データベースが初期化されている時のみ使用してください
(前述の
.B \-i
を参照してください)。
.TP
@ -239,7 +240,9 @@ sendmail(8)
の行がヘッダに含まれているメールに対しても自動応答は送られません。
あなたへのメールの送信者のアドレスは
ホームディレクトリの
.I \&.vacation.db
.I .vacation.db
または
.I .vacation.{dir,pag}
ファイル中で
db(3)
または
@ -247,10 +250,8 @@ dbm(3)
を使用して管理されます。
.PP
.B vacation
または
.I .vacation.{dir,pag}
ではホームディレクトリに
.I .vacation.msg
.IR .vacation.msg
ファイルを置くことによって、
あなたへのメールの送信者へのメッセージを指定します。
このファイルは (ヘッダを含む) 完全なメッセージでなければなりません。

View file

@ -66,13 +66,14 @@
.\"
.Ss 概要
.\"
伝統的にユーザスレッディングは、次の 2 つの方法の 1 つで実装されてきました。
全てのスレッドはユーザ空間で管理され、カーネルは全てのスレッディングを
認識しない方法
伝統的にユーザスレッディングは、
次の 2 つの方法のうちのどちらか一方で実装されてきました。
まず全てのスレッドはユーザ空間で管理され、
カーネルはスレッディングを全く認識しない方法
.Dq ( "N 対 1"
としても知られています)。
または、個々のスレッドのために共通のメモリ空間を分け合う
分離したプロセスを作成する方法
そして、個々のスレッドに対して
共通のメモリ空間を共有する別々のプロセスが生成される方法
.Dq ( "N 対 N"
としても知られています)。
これらのアプローチは長所と短所を持っています:
@ -85,146 +86,151 @@
.El
.Pp
KSE システムはユーザスレッディングおよびカーネルスレッディングの両方の
長所を成し遂げる混成のアプローチです。
長所を生かす複合型アプローチです。
KSE システムの根本的な哲学は、スケジューリングを決定するための
ユーザスレッディングライブラリの能力を全く取り除くことなく、
ユーザスレッディングのためのカーネルサポートを与えることです。
カーネルからユーザスレッドへの upcall 機構は、スケジューリングの決定が
必要とされるときにはいつでも、ユーザスレッディングライブラリに制御を
移すために使用されます。
任意の数のユーザスレッドは、カーネルによって供給される固定数の仮想 CPU 上に
多重化されます。
ユーザスレッディングライブラリの能力を全く減じることなく、
ユーザスレッディングのためのカーネルサポートを実現することです。
スケジューリングの決定が必要になった時に
ユーザスレッディングライブラリに制御を渡すために、
カーネルからユーザスレッドへの upcall 機構を使用します。
任意の数のユーザスレッドが、
カーネルによって供給される固定数の仮想 CPU 上に多重化されます。
これは
.Dq "N 対 M"
スレッディング機構と考えることができます。
.Pp
このアプローチのいくつかの一般的な裏の意味は以下を含みます:
このアプローチが暗に意味する一般的な特性としては以下のものがあります:
.Bl -bullet
.It
ユーザプロセスはマルチプロセッサマシン上で複数のスレッドを
同時に実行することが可能です。
カーネルは、プロセス仮想 CPU がそれが望むようにスケジュールすることを
承諾します。これらは、実際の複数の CPU 上で同時に実行されることができます。
カーネルは、プロセスに対して自由にスケジュールできる仮想 CPU 群を提供します。
これらは、複数の CPU 上で同時に実行できます。
.It
スレッドがブロックされたときにユーザプロセスが他のスレッドをスケジュール
できるように、カーネル内でブロックする全ての操作は非同期になります。
スレッドがブロックされた際にユーザプロセスが
他のスレッドをスケジュールできるよう、
カーネル内でブロックする全ての操作は非同期になります。
.It
同じプロセス内の複数のスレッドスケジューラが可能で、それらは互いに独立して
操作することができます。
同じプロセス内に複数のスレッドスケジューラが存在可能で、
それらは互いに独立して動くことができます。
.El
.\"
.Ss 定義
.\"
KSE はユーザプロセスが実際に同時の複数の
KSE はユーザプロセスが複数の
.Sy スレッド
の実行を可能にします。
これらの幾つかは、その他のスレッドが実行中またはユーザ空間で
ブッロクされている間に、カーネルの中でブロックされることが可能です。
を同時に実行できるようにします。
スレッドのうちの幾つかは、
その他のスレッドがユーザ空間で実行中またはブロックされている間であっても、
カーネル内でブロックさせて構いません。
.Sy カーネルスケジューリングの実体
(kernel scheduling entity, KSE) はスレッドの実行のためにプロセスに承諾された
(kernel scheduling entity, KSE) はスレッドの実行のためにプロセスにされた
.Dq "仮想 CPU"
です。
現在実行されているスレッドは常に、厳密に 1 つのユーザ空間または
カーネルの中で動作しているどちらかの KSE に関連付けられています。
その KSE はそのスレッドに
現在実行されているスレッドは、
ユーザ空間またはカーネルのどちらで実行されていても、
厳密に 1 つの KSE に常に関連付けられています。
KSE はスレッドに
.Sy 割り当てられている
言われます。
いえます。
.Pp
その KSE が関連付けられた
ある KSE が関連付けられた
.Sy メールボックス
(下記参照) を持っていて、そのスレッドが関連付けられた
(下記参照) を持、そのスレッドが関連付けられた
.Sy スレッドメールボックス
(これも下記参照) を持っていて、さらに以下のどれかが発生したときに、その KSE が
(これも下記参照) を持ち、さらに以下のどれかが発生したとき、その KSE は
.Sy 割り当てられていない
状態になり、関連付けられたスレッドは停止されます:
状態になり、関連付けられたスレッドは中断されます:
.Bl -bullet
.It
そのスレッドがブロックを伴うシステムコールを実行する
そのスレッドがブロックを伴うシステムコールを実行した
.It
スレッドが、カーネルがすぐには満たすことが可能ではない他の全ての要求を行う
例えばディスクからデータを読み出すために必要なメモリページに
アクセスすることでページフォルト発生させることです
スレッドがカーネルがすぐには満たすことができない要求を行った
例えばディスクからデータを読み出す必要があるメモリページにアクセスし
ページフォルトを起こした
.It
カーネル内で先にブロックされていた他のスレッドが、カーネル内のその作業を
完了し (または
カーネル内で先にブロックされていた他のスレッドが、
カーネル内の作業を完了し (または
.Sy 割り込まれ )
、ユーザ空間へ戻る準備ができ、さらに現在のスレッドがユーザ空間に
戻ろうとしている
ユーザ空間へ戻れるようになり、
さらに現在のスレッドがユーザ空間に戻っている最中だった
.It
シグナルがプロセスに配信され、この KSE がそのシグナルを配信するために
選択される
シグナルがプロセスに配信され、
この KSE がそのシグナルを配信するために選択された
.El
.Pp
言い換えると、スケジューリングの決定が行われなければならなくなるとすぐに
言い換えると、スケジューリングの決定が行われようとするとき
その KSE は割り当てられていない状態になります。
なぜならば、カーネルはそのプロセスの他のどの実行可能なスレッドを
スケジュールするべきか推定しないからです。
スケジュールするべきか推定しないからです。
割り当てられていない KSE は常に可能な限り早く、
ユーザプロセスが次に利用するべき KSE をどのように決定するかを可能にす
ユーザプロセスがその KSE を次にどのように利用するかを決定でき
.Sy upcall
機構 (下記に記述されています) を介してユーザ空間に戻ります。
KSE は常に、割り当てが解除される前に、カーネル内で可能な限り多くの作業を
完了させます。
機構 (後述) を介してユーザ空間に戻ります。
KSE は常に、割り当てが解除される前に、
カーネル内で可能な限り多くの作業を完了させます。
.Pp
.Sy "KSE グループ"
は均等にスケジュールされ、その KSE グループに関連付けられた同一のスレッドの
プールへのアクセスを共有する KSE の集合です。
KSE グループはカーネルスケジューリングの優先度が割り当てられることができる
は均等にスケジュールされ、
その KSE グループに関連付けられた同一のスレッドプールへのアクセスを共有する
KSE の集合です。
KSE グループはカーネルスケジューリングの優先度が割り当てられる
最小の実体です。
プロセスのスケジューリングとアカウンティングのため、それぞれの KSE グループは
伝統的なスレッド化されていないプロセスと同様にカウントします。
プロセスのスケジューリングとアカウンティングの目的には、
それぞれの KSE グループは
伝統的なスレッド化されていないプロセスと同様にみなされます。
KSE グループの中の個々の KSE は実際上、見分けがつきません。
また、KSE グループの中のあらゆる KSE は、その KSE グループに
関連付けられた (カーネル内の) あらゆる実行可能なスレッドに、
カーネルによって割り当てられることができます。
実際問題として、カーネルはキャッシュの動作を最適化するために、スレッドと
実際の CPU との密接な関係を保存しようと試みますが、
これはユーザプロセスには不可視です
(密接な関係はまだ実装されていません)
また、KSE グループの中のすべての KSE は、その KSE グループに
関連付けられた (カーネル内の) どの実行可能なスレッドに対してでも
カーネルによって割り当てられます。
実際問題として、カーネルはキャッシュの動作を最適化するために、
スレッドと実際の CPU との密接な関係を保存しようと試みますが、
これはユーザプロセスには不可視です
(密接な関係はまだ実装されていません)
.Pp
それぞれの KSE はユーザプロセスによって供給された唯一
それぞれの KSE はユーザプロセスによって供給される独自
.Sy "KSE メールボックス"
を持っています。
メールボックスは
.Sy "upcall 関数"
へのポインタを含む制御構造体とユーザスタックで構成されています。
へのポインタとユーザスタックを含む制御構造体で構成されています。
KSE は割り当てを解除されると必ずこの関数を実行します。
カーネルはこの構造体、実行可能になっているスレッド、およびそれぞれの
upcall の前に配信されたシグナルについての情報を更新します。
カーネルはこの構造体、実行可能になっているスレッド、およびそれぞれの
upcall の前に配信されていたシグナルについての情報を更新します。
upcall はクリティカルセクションの間は、ユーザスレッドの
スケジューリングコードによって一時的にブロックされることがあります。
.Pp
同様にそれぞれのユーザスレッドは唯一
同様にそれぞれのユーザスレッドは独自
.Sy "スレッドメールボックス"
を持っています。
カーネルとユーザスレッドスケジューラが通信するときに、
スレッドはこれらのメールボックスへのポインタを使用して参照されます。
スレッドはこれらのメールボックスへのポインタをして参照されます。
それぞれの KSE のメールボックスは、その KSE が現在実行している
ユーザスレッドのメールボックスへのポインタを含んでいます。
このポインタはカーネル内でスレッドがブロックするときに、保存されます。
.Pp
カーネル内でブロックされていたスレッドがユーザ空間に戻る準備ができたときには
必ず、そのスレッドは KSE グループの
そのスレッドは必ず、KSE グループの
.Sy 完了した
スレッドのリストに追加されます。
このリストはスレッドメールボックスのリンクされたリストとして、
次の upcall でユーザコードに公開されます。
.Pp
カーネルの中で同時にブロックされることができる KSE グループの中の
次の upcall でユーザコードに提示されます。
.Pp
カーネル内で同時にブロックされる KSE グループ中の
スレッド数には、カーネルに起因する制限があります (現在、この数はユーザには
不可視です)。
この制限に達したときには、スレッドの 1 つが完了するまでの間 (または
この制限に達したとき、スレッドの 1 つが完了するまでの間 (または
シグナルが配信されるまでの間)、upcall はブロックされ、
その KSE グループのための作業は何も実行されません。
.\"
.Ss KSE の管理
.\"
マルチスレッド化するためには、プロセスは初めに
マルチスレッドで動くためには、プロセスは初めに
.Fn kse_create
を実行しなければなりません。
.Fn kse_create
システムコールは新しい KSE を
作成します (本当に最初の実行を除く、下記参照してください)。
作成します (本当に最初の実行を除く、下記参照)。
その KSE は
.Fa mbx
によって指されるメールボックスと関連付けられます。
@ -235,196 +241,195 @@ upcall
そのため、それらの KSE は直ちに upcall します。
.Pp
それぞれのプロセスは初めは 1 つのユーザスレッドを
実行する 1 つの KSE グループの中の 1 つの KSE を持っています。
その KSE は関連付けられたメールボックスを持っていないため、そのスレッドに
割り当てられたままでなければならず、upcall を全く実行しません。
この結果は伝統的で、スレッド化されていない様式の操作です。
そのため、特別な場合として、
実行する 1 つの KSE グループの中に 1 つの KSE を持っています。
その KSE は関連付けられたメールボックスを持っていないため、
そのスレッドに割り当てられたままでなければならず、
upcall を全く実行しません。
この結果は伝統的で、スレッド化されていない形態での処理です。
そのため、特別な場合として、この最初のスレッドによる
.Fa newgroup
を 0 にしたこの最初のスレッドによ
が 0 であ
.Fn kse_create
の最初の呼び出しは、新しい KSE を作成しません。
代わりに、単に現在の KSE を与えられた KSE メールボックスに関連付け、
ちに upcall しない結果となります
しかしながら、次にそのスレッドがブロックし、要求された条件になったときに
upcall がトリガされます。
後の upcall は起こしません
しかしながら、次にそのスレッドがブロックし必要とされる条件がそろったときには
upcall が引き起こされます。
.Pp
カーネルは 1 つの KSE グループの中にシステムの物理的な CPU の数 (この数は
.Xr sysctl 3
変数
変数
.Va hw.ncpu
として利用可能です) より多い KSE の存在を許可しません。
CPU より多い KSE を持つことは、その追加の KSE が単に
その他の KSE と実 CPU へのアクセスを競合するだけであるため、
として取得可能です) より多い KSE の存在を許可しません。
CPU より多い数の KSE を持つことは、その追加の KSE が単に
その他の KSE と実 CPU へのアクセスを競合するだけであるため、
ユーザプロセスにとって全く価値を増やさないでしょう。
そのため、余分な KSE は常に脇に追いやられ、その結果アプリケーションは
まさにより少ない KSE を持っていることと同じになるでしょう。
どんなに多くの任意のユーザスレッドが存在することになっても、
利用可能な KSE へのアプリケーションのユーザスレッドの割り当てを取り扱う
ためのユーザスレッドスケジューラに渡ります
より少ない KSE を持っていることと全く同じになるでしょう。
しかし、アプリケーションのユーザスレッドを利用可能な KSE へマッピングする
ユーザスレッドスケジューラの数までは、
任意の数のユーザスレッドが存在しても構いません
.Pp
.Fn kse_exit
システムコールは、現在実行しているスレッドに割り当てられている KSE を
破壊させます。
この KSE がこの KSE グループの中の最後の 1 つの場合には、その KSE グループに
関連付けられているスレッドがカーネル内でブロックされたまま残ってはなりません。
このシステムコールはエラーが無い場合には、戻りません。
システムコールは、現在実行しているスレッドに割り当てられている
KSE を破棄します。
この KSE がこの KSE グループの中の最後の 1 つの場合には、
その KSE グループに関連付けられているスレッドが、
カーネル内でブロックされたまま残っていてはなりません。
このシステムコールはエラーがない限り、戻りません。
.Pp
特別な場合として、最後に残っている KSE グループの中の最後に残っている KSE が
このシステムコールを実行する場合には、その KSE は破されません。
このシステムコールを実行する場合には、その KSE は破されません。
代わりに、その KSE はそのメールボックスとの関連付けを失うだけで、
.Fn kse_exit
は正常に戻ります。
これはそのプロセスを元に、つまりスレッド化されていない状態に戻します。
これはそのプロセスを元スレッド化されていない状態に戻します。
.Pp
.Fn kse_release
システムコールは、必要でなくなったときに、現在実行しているスレッドに
関連付けられている KSE を
システムコールは、現在実行しているスレッドに関連付けられている
KSE が必要でなくなったときに、
.Dq 一時保管
するために使用されます。
例えば、実行可能なユーザスレッドよりも利用可能な KSE の方が多いときです。
そのスレッドは upcall に変化しますが、そのようにするための新しい理由が
発生するまでの間スケジュールされることはありません。
例えば、以前にブロックされていたスレッドが実行可能になる、または
タイムアウトが発生するなどです。
成功場合には、
するために使用ます。
例えば、実行可能なユーザスレッドよりも利用可能な KSE の方が多い場合です。
そのスレッドは upcall へ転向しますが、
新しくスケジュールする理由ができるまではそのようにされることはありません。
例えば、以前にブロックされていたスレッドが実行可能になる、
またはタイムアウトが発生するといった場合です。
成功した場合には、
.Fn kse_release
は呼び出し側に戻りません。
.Pp
.Fn kse_switchin
システムコールは、新しいスレッドがそのスレッドのコンテキストに
切り替わるために、UTS によって使用されることが可能です。
システムコールは、UTS (ユーザスレッドスケジューラ) が
スレッドのコンテキストを切り替える選択を新たにした際に使用できます。
.Fn kse_switchin
の使用はマシンに依存します。
あるプラットフォームでは新しいコンテキストに切り替わるためのシステムコールを
必要としません。
一方、他のプラットフォームでは同様の場合に要求されます。
あるプラットフォームでは新しいコンテキストへの切り替えにシステムコールを
必要としませんが、別のプラットフォームでは特にこの場面で要求されます。
.Pp
.Fn kse_wakeup
システムコールは
.Fn kse_release
の反対です。
.Fa mbx
によって指されているメールボックスに関連付けられた (一時保管された) KSE を
upcall にすることで起こします。
その KSE がすでに他の理由で起こされていた場合には、このシステムコールは
何も起こりません。
によって指されているメールボックスに関連付けられた (一時保管された)
KSE を起こして upcall させます。
その KSE がすでに他の理由で起こされていた場合には、
のシステムコールは何の効果もありません。
.Fa mbx
引数は
.Dq "現在の KSE グループの中の全ての KSE"
を指定するために
引数に
.Dv NULL
にすることができます。
を指定すると
.Dq "現在の KSE グループの中のどの KSE でもよい"
という指定になります。
.Pp
.Fn kse_thr_interrupt
システムコールは、現在ブロックされているスレッドに
割り込むために使用されます。
そのスレッドはカーネルの中でブロックされているか、
KSE に割り当てられて (例えば、実行中) いなければなりません。
そのスレッドはその後、割り込まれたという印を付けられます。
スレッドが割り込みを発生させるシステムコールを実行するとできるだけ
早く (または、スレッドがカーネルの中ですでにブロックされてると直ちに)、
カーネル操作が完了していないかもしれないのにもかかわらず、
システムコールは、現在ブロックされているスレッドを一時停止させます。
そのスレッドはカーネル内でブロックされているか、
KSE に割り当てられて (つまり実行中) いるか、どちらかでなければなりません。
その後、そのスレッドには割り込まれたという印が付けられます。
スレッドが割り込み可能なステムコールを実行するとできるだけ早く
(または、スレッドがカーネル内ですでにブロックされてる場合には直ちに)、
カーネル処理が完了していない可能性があるかにかかわらず
そのスレッドは再度実行可能にされます。
割り込まれたシステムコール上のこの効果は、すでにシグナルによって
割り込まれていた場合と同様です。
割り込まれたシステムコール上のこの効果は、
すでにシグナルによって割り込まれていた場合と同様です。
通常、これは
.Va errno
.Er EINTR
が設定されてエラーが返されたことを意味します。
を設定してエラーを返したことを意味します。
.\"
.Ss シグナル
.\"
.Pp
現在の実装は特別シグナルスレッドを作成します。
現在の実装は特別シグナルスレッドを作成します。
プロセス内のカーネルスレッド (KSE) はすべてのシグナルをマスクし、
シグナルスレッドだけがプロセスへ配信されるシグナルを待ちます。
シグナルスレッドだけがプロセスへ配信されるシグナルを待ち受けます。
シグナルスレッドはユーザスレッドへのシグナルの
ディスパッチに対して責任があります。
ディスパッチに対して責任を持ちます。
.\" responsible for = 《be ~》~に対して責任がある、~に関与する
.Pp
この弱点は、多重スレッドが
.Fn execve
システムコールを呼び出すなら、そのシグナルマスクとペンディングシグナルは
カーネルで利用可能でないかもしれないことです。
それらはユーザランドで格納され、カーネルはどこでそれらが得られるか知りません。
システムコールを呼び出した場合、そのシグナルマスクとペンディングシグナルは
カーネルで利用できないかもしれないことです。
それらはユーザランドで格納され、
カーネルはどこからそれを得ればよいかわかりません。
しかしながら、
.Tn POSIX
ではそれらは復元され、新しいプロセスに渡す必要があります。
ではそれらを復元して、新しいプロセスに渡すことを求めています。
スレッドが
.Fn execve
呼び出しの前のスレッドのマスク設定は、
古いプロセスがブロックされている状態かもしれない任意のペンディングシグナルを
カーネルに再配信されないとき、問題に近似しています。
そして、新しいシグナルがマスクの設定と
を呼び出す前にマスクを行うだけでは、
元のプロセスがブロックしていたペンディングシグナルを
カーネルに再び戻すことができず、またマスクを設定したあと
.Fn execve
の間のプロセスに配信されるかもしれないウィンドウを許可します。
.\" is only a close approximation to the problem の訳はあやしい
が呼ばれる間にプロセスにシグナルが配信されるウィンドウの発生を
許してしまうため、よく似た近似にしかなりません。
.Pp
当分、この問題は特別の組み合わせ
今のところ、この問題は
.Fn kse_thr_interrupt
システムコールに
.Fn kse_thr_interrupt Ns / Ns Fn execve
モードを
の特別な組み合わせモードを追加することにより解決されています。
.Fn kse_thr_interrupt
システムコールに追加することによって解決されています。
.\" For now = 差し当たり、当分は
.Fn kse_thr_interrupt
システムコールはサブコマンド
システムコールにはサブコマンド
.Dv KSE_INTR_EXECVE
があり、それは
.Vt kse_execv_args
構造体を受け付けることができ、シグナルを調整して、次に不可分に
.Fn execve()
呼び出しに変換できます。
.\" 原文: .Fn execve() は .Fn execve の誤り。
追加のペンディングシグナルと正しいシグナルマスク
このようにしてカーネルに渡すことができます。
構造体を受け付けて、シグナルを調整した後に不可分に
.Fn execve
呼び出しへ変換できるようにします。
.\" 原文: .Fn execve() は .Fn execve の誤り。HEAD, RELENG_6では修正済
このようにして追加のペンディングシグナルと正しいシグナルマスク
カーネルに渡すことができます。
.\" in this way = かくのごとく、こういう調子に、このような方法で、このように(して)、
スレッドライブラリは、
.Fn execve
スステムコールをくつがえして、それを
.Fn kse_intr_interrupt
呼び出しに変換し、多重スレッドを
システムコールを上書きし、多重スレッドが
.Fn exec
を行なう前にペンディングシグナルと正しいシグナルマスクに
復元できるようにします。
この問題の解決法は変更するかもしれません。
を行う前にペンディングシグナルと正しいシグナルマスクを復元できるよう、
.Fn kse_intr_interrupt
呼び出しに変換します。
この問題の解決法は変更されるかもしれません。
.\"
.Ss KSE メールボックス
.\"
それぞれの KSE は
.In sys/kse.h
で定義されたユーザとカーネルの通信のための唯一のメールボックスがあります。
そのフィールドのいくつかは次の通りです:
で定義されているユーザとカーネルの通信のために独自のメールボックスを持ちます。
フィールドの一部は次の通りです:
.Pp
.Va km_version
はこの構造体のバージョンを表し、
.Dv KSE_VER_0
なければなりません。
と等しくなければなりません。
.Va km_udata
はカーネルによって無視される不透明なポインタです。
はカーネルに無視される不透明なポインタです。
.Pp
.Va km_func
はその KSE の upcall 関数を指します。
これは、その KSE が存在している間は有効であり続けなければならない
これは、その KSE の生存期間を通して有効であり続けなければならない
.Va km_stack
を使用して実行されます。
.Pp
.Va km_curthread
常に、もしあれば現在この KSE に割り当てられているスレッドを、または
そうでなければ
もし現在この KSE に割り当てられているスレッドがあればそれを、
なければ
.Dv NULL
を指しています。
このフィールドは、カーネルとユーザプロセスの両方によって以下のように
更新されます。
このフィールドは、
カーネルとユーザプロセスの両方によって以下のように更新されます。
.Pp
.Va km_curthread
.Dv NULL
ではないときには、
それは現在実行中のスレッドのメールボックスを指しているものとみなされ、
割り当て解除されることができます。
割り当て解除可能です。
例えば、スレッドがカーネル内でブロックする場合です。
れから、カーネルはブロックされたスレッドの
の後、カーネルはブロックされたスレッドの
.Va km_curthread
の内容を保存して
.Va km_curthread
@ -438,9 +443,9 @@ KSE
.Dv NULL
のときには、カーネルはこの KSE の upcall を決して実行しません。
言いえると、KSE はたとえブロックしたとしても、そのスレッドに
割り当てられたままとなります。
その KSE が間に入り込む upcall によって混乱するであろうクリティカルな
言いえると、KSE はたとえブロックしたとしても、
そのスレッドに割り当てられたままとなります。
KSE が upcall が間にはいることによって混乱を起こすような危ない
ユーザスレッドスケジューラのコードを実行している間、特に
.Fn km_func
それ自身を実行している間は、
@ -449,110 +454,110 @@ KSE
.Dv NULL
でなければなりません。
.Pp
全ての upcall の中で
どのような upcall であれ、
.Fn km_func
を実行する前に、カーネルは常に
.Va km_curthread
.Dv NULL
に設定します。
一度、ユーザスレッドスケジューラが実行するべき新しいスレッドを選んだら、
そのスレッドのメールボックスの
一度ユーザスレッドスケジューラが実行すべき新しいスレッドを選んだら、
.Va km_curthread
を指すようにし、upcall を再度有効化し、それからそのスレッドを再開するべきです。
がそのスレッドのメールボックスを指すようにし、
upcall を再度有効化し、それからそのスレッドを再開するべきです。
.Em 注意 :
ユーザスレッドスケジューラによる
.Va km_curthread
の変更は、
新しいスレッドのコンテキストのロードについて不可分でなければなりません。
依然として有効な情報がそこから読み出されるべき時に、
新しいスレッドのコンテキストのロードを不可分に行わなければなりません。
依然として有効な情報がそこから読み出し可能なときに
ブロッキング非同期操作によってスレッドのコンテキスト領域が
変更されるかもしれない状況を避けるためです。
変更される状況を避けるためです。
.Pp
.Va km_completed
は最近の upcall 以降にカーネル内での処理を終えたユーザスレッドの
は最後に実行された upcall 以降にカーネル内での処理を終えたユーザスレッドの
リンクされたリストを指しています。
そのユーザスレッドスケジューラは、これらのスレッドを
スケジューラが所有する実行可能キューに戻すべきです。
upcall に帰着する (同期または非同期) カーネル操作を
完了した KSE グループ内の各々のスレッドは、確実に 1 つの KSE の
ユーザスレッドスケジューラは、
これらのスレッドをスケジューラが所有する実行可能キューに戻すべきです。
upcall に帰着する (同期または非同期) カーネル操作を完了した
KSE グループ内の各々のスレッドは、確実に 1 つの KSE の
.Va km_completed
にリンクされることが保証されます
しかしながら、そのグループの中のどの KSE かは不定です
にリンクされることが保証されますが、
グループの中のどの KSE かは決まっていません
その上、その完了はたった 1 つの upcall でしか報告されません。
.Pp
.Va km_sigscaught
はその前のプロセス内の全ての KSE への upcall 以降に、
にはその前のプロセス内の任意の KSE への upcall 以降に、
このプロセスによって捕まえられたシグナルのリストが含まれています。
そのユーザプロセスの中に、
ユーザプロセスの中に、
メールボックスに関連付けられた KSE が 1 つ以上存在する限りは、
シグナルは伝統的な方法ではなくこの方法で配信されます
(これはまだ実装されておらず、変更されるかもしれません)
シグナルは伝統的な方法ではなくこの方法で配信されます
(これはまだ実装されておらず、変更されるかもしれません)
.Pp
.Va km_timeofday
は、それぞれの upcall の前にカーネルによって現在のシステム時刻に設定されます。
.Pp
.Va km_flags
は以下の全てのビット毎の OR を含むことができます:
は以下の任意のビットを OR して同時に含むことができます:
.Bl -tag -width indent
.It Dv KMF_NOUPCALL
upcalls が起きないようにブロックします。
upcall が起きないようにブロックします。
スレッドは何らかのクリティカルセクション (危険域) にあります。
.It Dv KMF_NOCOMPLETED , KMF_DONE , KMF_BOUND
このスレッドは、永久に KSE に結びつけられると考えられるべきで、
スレッド化されていないプロセスとそっくりに扱われます。
.\" 原文: considerred は considered の誤り。
.\" 原文: considerred は considered の誤り。Rev1.16 で修正済
.\" considered to be = 《be ~》~であると考えられている[目されている]
.\" much like = そっくりの、酷似の
それはある意味では
それはある意味
.Dv KMF_NOUPCALL
.Dq 長期
バージョンす。
バージョンといえます。
.\" in some ways = ある点[意味]で(は)、いろいろな意味で、いくつかの点で
.It Dv KMF_WAITSIGEVENT
シグナル配信スレッドに必要な特性を実装します。
.\" 原文: charactersitics は # characteristics の誤り。
.\" 原文: charactersitics は # characteristics の誤り。Rev1.16 で修正済
.El
.\"
.Ss スレッドメールボックス
.\"
それぞれのユーザスレッドはそれに関連付けられた
各ユーザスレッドは
.In sys/kse.h
で定義された唯一
で定義されている独自
.Vt "struct kse_thr_mailbox"
がなければなりません
に関連付けられている必要があります
それは次のフィールドを含んでいます:
.Pp
.Va tm_udata
はカーネルによって無視された不明瞭なポインタです。
はカーネルによって無視される不透明なポインタです。
.Pp
.Va tm_context
はユーザ空間内でスレッドがブロックされた時に、そのスレッドのための
コンテキストを保存します。
スレッドがはユーザ空間内でブロックされた時に、
そのスレッドのためのコンテキストを保存します。
このフィールドは完了したスレッドが
.Va km_completed
を介してユーザスレッドスケジューラに戻る前に、カーネルによっても更新されます。
.Pp
.Va tm_next
はカーネルの upcall により戻った時に、
カーネルによって upcall を使って戻される時に、
.Va km_completed
スレッドにリンクします。
のスレッドをリンクします。
このリストの最後は
.Dv NULL
でマークされます。
でマークされています。
.Pp
.Va tm_uticks
および
.Va tm_sticks
はそれぞれ、ユーザモードおよびカーネルモードの実行のための時間カウンタです。
はそれぞれ、ユーザモードおよびカーネルモードにおける実行の時間カウンタです。
これらのカウンタは統計クロック
.Xr ( clocks 7
参照してください) の刻みをカウントします。
参照) の刻みをカウントします。
カーネル内でいずれかのスレッドがアクティブに実行中の間は、対応する
.Va tm_sticks
カウンタがインクリメントされます。
ユーザ空間でいずれかの KSE 実行中で、その KSE の
ユーザ空間でいずれかの KSE 実行中で、その KSE の
.Va km_curthread
ポインタが
.Dv NULL
@ -565,26 +570,24 @@ upcalls
.Bl -tag -width indent
.It Dv TMF_NOUPCALL
.Dv KMF_NOUPCALL
同様です。
似ています。
このフラグはクリティカルセクション (危険域) への upcall を禁止します。
いくつかのアーキテクチャは、ある場所ともう片方でいくつかにあることを
必要とします。
いくつかのアーキテクチャではこれが必要になるのは 1 ヶ所ですが、
他のアーキテクチャではまた別の場所で必要とします。
.El
.Sh 戻り値
成功の場合には
.Fn kse_create ,
.Fn kse_wakeup
および
.Fn kse_thr_interrupt
システムコールは 0 を返します。
成功の場合には
システムコールは成功した場合 0 を返します。
.Fn kse_exit
および
.Fn kse_release
システムコールは戻りません。
システムコールは成功した場合戻りません。
.Pp
エラーの場合には、これら全てのシステムコールは 0 ではない
エラーコードを返します。
これら全てのシステムコールはエラーの場合には、
0 ではないエラーコードを返します。
.Sh エラー
.Fn kse_create
システムコールは次の場合に失敗します:
@ -592,17 +595,16 @@ upcalls
.It Bq Er ENXIO
既に KSE グループの中にハードウェアプロセッサと同じ数の KSE が存在しています。
.It Bq Er EAGAIN
実行下の KSE グループのトータル数についてのシステムに課せられた制限を
超過します。
実行中の合計 KSE グループ数に関するシステム上の制限値を超過します。
この制限は
.Xr sysctl 3
MIB 変数
.Dv KERN_MAXPROC
によって与えられます。
(この制限はスーパユーザのためを除き、実際にはこれより 10 小さい値です)
(この制限はスーパユーザ以外の場合、実際にはこれより 10 小さい値です)
.It Bq Er EAGAIN
ユーザがスーパユーザではなく、1 ユーザによる実行下の KSE グループの
トータル数についてのシステムに課せられた制限を超過します。
ユーザがスーパユーザではなく、1 ユーザへの実行中の合計 KSE グループ数
に関するシステム上の制限値を超過します。
この制限は
.Xr sysctl 3
MIB 変数
@ -615,7 +617,7 @@ MIB
.Dv RLIMIT_NPROC
に対応するソフトリソース制限を超過します
.Xr ( getrlimit 2
参照してください)。
参照)。
.It Bq Er EFAULT
.Fa mbx
引数がプロセスのアドレス空間の有効ではない部分のアドレスを指しています。
@ -626,12 +628,12 @@ MIB
.Bl -tag -width Er
.It Bq Er EDEADLK
現在の KSE はその KSE グループ内の最後であり、
カーネル内でブロックされたその KSE グループに関連付けられたスレッドが
その KSE グループに関連付けられたカーネル内でブロックされているスレッドが
依然として 1 つ以上存在しています。
.It Bq Er ESRCH
現在の KSE は関連付けられたメールボックスを持っていません。
例えば、そのプロセスが伝統的なスレッド化されていないモードで、
実行しています (この場合はプロセスを終了するために
つまり、そのプロセスは伝統的なスレッド化されていないモードで、
動作しています (この場合はプロセスを終了するために
.Xr _exit 2
を使用します)。
.El
@ -641,8 +643,8 @@ MIB
.Bl -tag -width Er
.It Bq Er ESRCH
現在の KSE は関連付けられたメールボックスを持っていません。
例えば、そのプロセスが伝統的なスレッド化されていないモードで
実行しています。
つまり、そのプロセスは伝統的なスレッド化されていないモードで
動作しています。
.El
.Pp
.Fn kse_wakeup
@ -654,15 +656,15 @@ MIB
.Dv NULL
ではなく、
.Fa mbx
によって指されるメールボックスそのメールボックスが、そのプロセス内の
いずれの KSE にも関連付けられていません。
によって指されるメールボックスが、
そのプロセス内のいずれの KSE にも関連付けられていません。
.It Bq Er ESRCH
.Fa mbx
引数が
.Dv NULL
で、現在の KSE が関連付けられたメールボックスを持っていません。
例えば、そのプロセスが伝統的なスレッド化されていないモードで、
実行しています。
現在の KSE は関連付けられたメールボックスを持っていません。
つまり、そのプロセスは伝統的なスレッド化されていないモードで、
動作しています。
.El
.Pp
.Fn kse_thr_interrupt
@ -670,8 +672,8 @@ MIB
.Bl -tag -width Er
.It Bq Er ESRCH
.Fa tmbx
に対応するスレッドが、現在プロセス内のいずれの KSE にも割り当てられていないか
カーネル内でブロックされています
に対応するスレッドが、現在プロセス内のいずれの KSE にも割り当てられて
カーネル内でブロックされてもいません
.El
.Sh 関連項目
.Xr rfork 2 ,
@ -709,6 +711,6 @@ KSE
.An "Archie Cobbs" Aq archie@FreeBSD.org
によって書かれました。
.Sh バグ
KSE のコードは開発中です。
KSE のコードは現在も開発中です。
.\" .Ud .
.\" .Ud マクロは日本語では実装されていません。(池内)

View file

@ -284,16 +284,14 @@ struct cmsgcred {
.Fa s
はソケットを参照していません。
.It Bq Er EMSGSIZE
接続中にオープンされている権利 (ファイル記述子) を
.Fn recvmsg
システムコールは、接続時にデータをやりとりする権利 (ファイル記述子)
を受信するために使用されました。
.\" rights (file descriptors) that were in flight の訳は良くわからない。
しかしながら、受信プログラムには受け付けるための
空きファイル記述子スロットがありませんでした。
この場合、記述子がクローズされ、
システムコールを使用して受信しようとしました。
しかし、受信側プログラムのにそれらを受け取るだけの
十分な空きファイル記述子スロットがありませんでした。
この場合、該当する記述子はクローズされ、保留されているデータは別の
.Fn recvmsg
への別の呼び出しによって、
どんなペンディング (未解決) のデータも返すことができます。
呼び出しで戻せます。
.It Bq Er EAGAIN
ソケットが非ブロッキングとマークされているとき、
受信操作でブロックしました。

View file

@ -275,7 +275,7 @@ AT&T
.Fn crypt_set_format
も同様に静的データを変更します。
.Sh 歴史
ロータを採用した
ロータを採用した
.Fn crypt
関数は、
.At v6
@ -301,7 +301,7 @@ libcrypt
.An Mark R V Murray ,
.An Kris Kennaway ,
.An Brian Feldman ,
.An Paul Herman
.An Paul Herman ,
.\"X and
.An Niels Provos
によって行なわれました。

View file

@ -76,7 +76,7 @@ C
オペレータ、キャラクタ試験とキャラクタ・オペレータ、des 暗号ルーチン、
記憶割当、時間関数、信号処理他です。
.It Xr libcurses Pq Fl l Ns Ar curses Fl l Ns Ar termcap
2 次元非ビットマップ・ディスプレ端末用の端末独立
2 次元非ビットマップ・ディスプレ端末用の端末独立
スクリーン管理ルーチン (
.Xr ncurses 3
を参照)。

View file

@ -17,7 +17,7 @@
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" 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$
.TH PCAP 3 "24 June 1998"
@ -282,7 +282,7 @@ stdin.ebuf
は、保存ファイルの書込みに使用した pcap のメジャーバージョン番号を戻します。
.PP
.B pcap_minor_version()
は、保存ファイルの書込みに使用した pcap のマイナバージョン番号を戻します。
は、保存ファイルの書込みに使用した pcap のマイナバージョン番号を戻します。
.PP
.B pcap_file()
は「保存ファイル」の名前を戻します。

View file

@ -66,8 +66,7 @@
関数は、
.Fn strstr
と同様ですが、
両方の文字列を
無視します。
両方の文字列の大文字と小文字の違いを無視します。
.Pp
.Fn strnstr
関数は、検索された

View file

@ -248,7 +248,7 @@ sysctl(mib, 2, p, &len, NULL, 0);
.Nm debug19
という
名前になります。これらは別個の変数として宣言されるので、対応変数の位置で
個別に初期化できます。ローダは、変数が複数の場所で初期化されたときは
個別に初期化できます。ローダは、変数が複数の場所で初期化されたときは
エラーを出して、同じ変数が複数に使用されるのを回避します。たとえば、変数
.Nm dospecialcheck
をデバッグ変数としてエクスポートする場合には、次の宣言が

View file

@ -202,7 +202,7 @@ cron
カーネルにより生成されるメッセージ。これらは、どんな
ユーザプロセスによっても生成できません。
.It Dv LOG_LPR
ラインプリンタのスプーリングシステム:
ラインプリンタのスプーリングシステム:
.Xr lpr 1
.Xr lpc 8

View file

@ -24,7 +24,7 @@
.\" (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: 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$
.Dd August 13, 1997
@ -289,7 +289,7 @@ dstx" "int dsty" "int width" "int hight"
引数
.Em blank
が != 0 である場合は、ディスプレを空白表示にします。
が != 0 である場合は、ディスプレを空白表示にします。
これは、表示更新の間に画面を閉じて、処理が終ったときに初めてユーザが画面を
見られるようにするために使えます。

View file

@ -750,7 +750,7 @@ struct vgapel {
.Bl -tag -width 20n -offset indent -compact
.It VGAPCVTID
現在ドライバの中にコンパイルされているのが pcvt であるかどうかの
情報と、そのメジャーリビジョンおよびマイナリビジョン番号を
情報と、そのメジャーリビジョンおよびマイナリビジョン番号を
返します。引数として以下の構造体へのポインタをとります:
.El
@ -761,7 +761,7 @@ struct pcvtid {
#define PCVTIDNAME "pcvt" /* ドライバ ID - 文字列 */
int rmajor; /* メジャーリビジョン番号 */
#define PCVTIDMAJOR 3
int rminor; /* マイナリビジョン番号 */
int rminor; /* マイナリビジョン番号 */
#define PCVTIDMINOR 00
};
.Ed

View file

@ -36,7 +36,7 @@ ppbus
.Sh 書式
.Cd "device ppi0 at ppbus?"
.sp
マイナ番号: ユニット番号は ppbus 番号に直接対応する。
マイナ番号: ユニット番号は ppbus 番号に直接対応する。
.Sh 解説
.Nm
デバイスドライバはユーザアプリケーションが

View file

@ -79,7 +79,7 @@
必要な時 (例えばパラメータをセットする時) に限り排他的な
アクセスをする必要があります。
.Sh サブモード
マイナ番号のビット 0 とビット 1 は
マイナ番号のビット 0 とビット 1 は
.Sq サブモード
として解釈されます。
サブモードの違いは、デバイスがクローズされた時の挙動にあります:

View file

@ -87,7 +87,7 @@
の振舞いとなります。
.Pp
デフォルトでは、実ユーザまたは実効ユーザ、あるいは実グループ
または実グループが変更されているプロセスはコアファイルを
または実グループが変更されているプロセスはコアファイルを
生成しません。
この動作は
.Xr sysctl 8

View file

@ -271,7 +271,7 @@ struct sod {
.It Fa sod_major
ロードすべき共有オブジェクトのメジャーバージョン番号を指定します。
.It Fa sod_minor
ロードすべき共有オブジェクトの希望するマイナバージョン番号を指定します。
ロードすべき共有オブジェクトの希望するマイナバージョン番号を指定します。
.El
.Pp
プロセスのアドレス空間にロードされる共有オブジェクト全てを追跡するために、

View file

@ -680,7 +680,8 @@ SSH
.Xr sendmail 8
の負荷に限界を設けるオプションを使うよりも、
このオプションを使う方がまともに動作する可能性ははるかに高いです。
sendmail の実行を開始する際に、
.Xr sendmail 8
の実行を開始する際に、
.Va MaxDaemonChildren
パラメータを設定するべきです。その値は、
通常見込まれる負荷を扱える程度に十分高いが、
@ -688,7 +689,6 @@ sendmail
.Xr sendmail 8
を操作しようとすると
マシンが卒倒してしまうほどには高くないような値に設定するべきです。
.\" 翻訳の抜けがあるようだ
.Xr sendmail 8
.Dq キュー処理

View file

@ -71,8 +71,9 @@ ECP/ISA
用のデバイスヒント。
.El
.Sh バグ
制御デバイス名はオプションではなく、オプションの引数とすべきです。
こうすれば、引数 1 つはデバイス名として扱われます。
制御デバイスのデバイス名は、本来オプション引数で指定されるべきもの
だったのですが、オプションで指定するようになっています。
そのためオプション引数が1個だった場合、それはデバイス名として解釈されます。
.Sh 関連項目
.Xr lpt 4 ,
.Xr ppc 4 ,

View file

@ -131,14 +131,14 @@
固有です。
.Pp
.Fx 4.0
では、
ブロックデバイスの価値が下がり、キャラクタデバイスが使われるようになりました。
の時点でブロックデバイスは廃止され、その機能は
キャラクタデバイスに置き換えられました。
.Fx 5.0
では、デバイスノードはデバイスファイルシステム
.Xr devfs 5
で管理されるので、
.Nm
ユーティリティは不要になりました。
ユーティリティは不要になりました。
.Sh 関連項目
.Xr mkfifo 1 ,
.Xr mknod 2 ,

View file

@ -151,12 +151,11 @@ RTS
全シリアルマウスがこのオプションをサポートするわけではありません。
.It Fl V
``仮想スクロール'' を有効にします。このオプションが設定されている場合、
中マウスボタンを押していると、動きがスクロールと解釈されるようになります。
.\" スクロールモードが有効になる前に
マウスの中ボタンを押し続けていると、動きがスクロールと解釈されるようになります。
スクロールモードを有効にするために
マウスが動かなければならない距離を設定するには
.Fl U
オプションを使って下さい。
オプションを使います
.It Fl a Ar X Ns Op , Ns Ar Y
マウスの入力を加速または減速します。
線型加速のみです。
@ -253,7 +252,7 @@ RTS
が仮定されます。
通常では、
.Nm
ユーティリティがプロトコルの自動検出できない場合に必要です
ユーティリティがプロトコルの自動検出できない場合に必要です
.Pf ( Sx マウスデーモンの構成 )
を参照。
.Pp

View file

@ -87,7 +87,7 @@
.Nm
スクリプトは、
.Xr rc 8
のような様々なスクリプトから利用される、一般的に使用する
のような様々なスクリプトから共通に利用される
シェルスクリプト関数や変数定義を含んでいます。
また ports が要求する
.Pa /usr/local/etc/rc.d
@ -95,11 +95,12 @@
書き換えられるでしょう。
.Pp
.Nm
の関数群は大部分が
の関数群は大部分が
.Nx
から取り込まれたものであり、またそれらは二つのプロジェクト間で同期できるように
から取り込まれたものであり、またそれらは二つのプロジェクト間で同期を
とり続けられるように
考えられています。
そのことを考慮した、役に立ついくつかの変数定義があります:
これを念頭において、この点に関して助けとなる変数定義がいくつかあります:
.Bl -tag -width 4n
.It Va OSTYPE
この値は
@ -112,18 +113,18 @@
コマンドのパス。
.It Va SYSCTL_N
.Ar name Ns = Ns Ar value
ペアとしてではなく、
ペアとしてではなく、
.Xr sysctl 8
変数のみを表示する際の、パスと引数のリスト。
のみを表示する際の、パスと引数のリスト。
.It Va SYSCTL_W
.Xr sysctl 8
変数を設定または変更する際の、パスと引数。
を設定または変更する際の、パスと引数。
.El
.Pp
.Nm
関数群は、カレントシェルで
関数群は、カレントシェルで
.Pa /etc/rc.subr
を読み込む事でアクセスできます。
を読み込むことで利用できるようになります。
.Pp
以下のシェル関数が利用可能です:
.Bl -tag -width 4n
@ -142,9 +143,9 @@
.Xr rcs 1
を使ってアーカイブします。
そうでなければ、以前のバージョンの
そうでない場合の、以前のバージョンの
.Ar current
.Ar backup
として保存します。
.Pp
@ -154,7 +155,8 @@
.Bl -tag -width ".Cm remove"
.It Cm add
.Ar file
はこのバックアップ機構によりすぐにバックアップされるか、もしくは再投入されます。
はこのバックアップ機構により今後バックアップされるようになるか、
あるいは再度追加されます。
.Ar current
が作成され、必要なら、
.Xr rcs 1
@ -167,7 +169,7 @@
.Ar backup
にコピーされるか、もしくは
.Xr rcs 1
にチェックされます (リポジトリファイルが古い場合)。
にチェックインされます (リポジトリファイルが古い場合)。
その後に、
.Ar file
@ -175,12 +177,12 @@
にコピーされます。
.It Cm remove
.Ar file
はこのバックアップ機構で管理される事はもうありません
はこのバックアップ機構で管理されなくなります
.Xr rcs 1
が使われている場合は、空のファイルがチェックインされて
.Ar current
は削除されます。
そうでなければ
そうでない場合は
.Ar current
.Ar backup
@ -193,14 +195,14 @@
.Dq Li TRUE ,
.Dq Li ON ,
.Ql 1
ならば、 0 を返します。
ならば、0 を返します。
.Ar var
の値が
.Dq Li NO ,
.Dq Li FALSE ,
.Dq Li OFF ,
.Ql 0
ならば、 1 を返します。
ならば、1 を返します。
これら以外の値ならば、
.Ar var
が正しく設定されていないという警告を出します。
@ -210,10 +212,10 @@
の最初の行の最初の語を解析して PID とし、この PID を持つプロセスが
実行されていて、最初の引数が
.Ar procname
とマッチすることを確かめます。
成功すればマッチした PID を出力し、そうでなければ何もしません。
にマッチすることを確認します。
成功すればマッチした PID を出力し、そうでない場合は何もしません。
.Ar interpreter
が与えられれば
が与えられた場合
.Ar procname
の最初の行を解析して、
.Pp
@ -228,7 +230,7 @@
.It Ic check_process Ar procname Op Ar interpreter
最初の引数が
.Ar procname
にマッチする、実行されている任意のプロセスの PID を出力します。
にマッチする、実行されているすべてのプロセスの PID を出力します。
.Ar interpreter
.Ic check_pidfile
@ -243,7 +245,7 @@
.Va ( $0
より),
.Dq Li ": DEBUG: " ,
びこれに続く
およびこれに続く
.Ar message
で構成されます。
この関数はスクリプトのデバッグの手助けとして、開発者が使用することを
@ -261,12 +263,13 @@
を使用してシステムログに記録をして、終了値
.Ar exitval
.Ic 終了します。
.Ic 終了
します。
このエラーメッセージは、スクリプト名
.Va ( $0
より),
.Dq Li ": ERROR: " ,
びこれに続く
およびこれに続く
.Ar message
で構成されます。
.It Ic force_depend name
@ -292,7 +295,7 @@
.Va ( $0
より),
.Dq Li ": INFO: " ,
びこれに続く
およびこれに続く
.Ar message
で構成されます。
この情報出力の表示は
@ -314,7 +317,7 @@
引数を上書きする変数定義を含めることもできます。
これは管理者が任意の
.Xr rc.d 8
スクリプトを編集することく、その動作を上書きできる簡易な仕組みを提供します。
スクリプトを編集することく、その動作を上書きできる簡易な仕組みを提供します。
.It Ic mount_critical_filesystems Ar type
.Xr rc.conf 5
変数の
@ -323,13 +326,13 @@
いないものがあれば、マウントします。
.It Ic rc_usage Ar command ...
.Va $0
の使用方法を、有効な引数の一覧として、
の使用方法を、有効な引数の一覧である
.Ar command
をプレフィックスの
.Sm off
.Dq Bq Li fast | force | one
.Sm on
と共に出力します。
のプレフィックスをつけて出力します。
.It Ic reverse_list Ar item ...
.Ar item
のリストを逆順で出力します。
@ -352,7 +355,7 @@
本コマンドは、
.Xr rc.conf 5
の指定によりサービスを起動するべきかをチェックします。
またサービスが既に実行中で、そのために起動を拒否するかどうかもチェックします。
またサービスが既に実行中であるかをチェックし、その場合は起動を拒否します。
標準の
.Fx
スクリプトにおいて、システムが直接マルチユーザモードで起動する場合は、
@ -369,9 +372,9 @@
を実行します。
デフォルトでは、 (もし実行中なら) プログラムのプロセス ID を表示します。
.It Cm rcvar
サービスの起動を制御するのに使用する
どの
.Xr rc.conf 5
変数(もしあれば) 表示します。
変数がサービスの起動を制御しているか、(もしあれば) 表示します。
.El
.Pp
.Va pidfile
@ -382,7 +385,7 @@
.It Cm poll
コマンドが終了するのを待ちます。
.It Cm status
プロセスのステータスを表示します。
プロセスの状態を表示します。
.El
.Pp
他にサポートされているコマンドは、オプション変数の
@ -404,9 +407,9 @@
.Va rc_force Ns = Ns Li YES
をセットします。
.Ar argument Ns Va _precmd
が非 0 を返しても無視します。
が非 0 を返したり、
.Va required_*
テストのどれかが失敗しても無視します。
テストのどれかが失敗したりしても無視します。
また終了ステータスとして常に 0 を返します。
.It Li one
.Va rcvar
@ -430,11 +433,11 @@
によりチェックされ、この処理を実行するかどうかを判定します。
.It Va command
コマンドのフルパス。
サポートされる各キーワードに対して
サポートされている各キーワードに対して
.Ar argument Ns Va _cmd
が設定されている場合は、必要ありません。
.It Va command_args
オプション引数、び / または
オプション引数、および / または
.Va command
に対するシェルディレクティブ。
.It Va command_interpreter
@ -449,40 +452,40 @@
.Dl "command_interpreter [...] command"
.Pp
のようになります。
ですので、この文字列は実行中のコマンドの PID を検索するのに、
ですので、実行中のコマンドの PID を検索するのに、
.Va command
の代わりに使用します。
ではなくこの文字列を使用します。
.It Va extra_commands
特別にサポートするコマンド / キーワード / 引数。
.It Va pidfile
PID ファイルのパス。
実行中のコマンドの PID を特定するのに使用します。
.Va pidfile
が設定された場合、 PID を検索するには
が設定された場合、 PID を検索するには
.Pp
.Dl "check_pidfile $pidfile $procname"
.Pp
を使用します。
そうでなければ、
.Va command
が設定されている場合、 PID を検索するには
が設定されている場合、 PID を検索するには
.Pp
.Dl "check_process $procname"
.Pp
を使用します。
.It Va procname
チェックする時のプロセス名。
デフォルトは
チェックする対象プロセス名。
デフォルト
.Va command
の値です。
.It Va required_dirs
デフォルトの start 処理を実行する前に、これに列挙されたディレクトリの
デフォルトの start 処理を実行する前に、これに列挙されたディレクトリの
存在をチェックします。
.It Va required_files
デフォルトの start 処理を実行する前に、これに列挙されたファイルが
読み取り可能かをチェックします。
デフォルトの start 処理を実行する前に、これに列挙されたファイルが
読み取り可能かどうかをチェックします。
.It Va required_vars
デフォルトの start 処理を実行する前に、これに列挙された変数に対して
デフォルトの start 処理を実行する前に、これに列挙された変数に対して
.Ic checkyesno
を適用します。
.It Va ${name}_chdir
@ -564,7 +567,7 @@ chroot
.It Va sig_reload
デフォルトの
.Cm reload
処理において、プロセス再読み込みさせるのに送られるシグナル。
処理において、プロセス再読み込みさせるのに送られるシグナル。
デフォルトは
.Dv SIGHUP
です。
@ -630,7 +633,7 @@ chroot
.Ic run_rc_command
が完了した後だけでなく、
.Ar ( argument Ns Va _cmd
のような) 処理でも参照できます:
のような) 処理でも同様に参照できます:
.Bl -tag -width ".Va rc_flags" -offset indent
.It Va rc_arg
fast 及び force 処理が済んだ後の、
@ -727,7 +730,7 @@ fast
.Pp
この関数は適切な
.Xr rc.conf 5
変数を作成するために、呼び出し側のスクリプトで定義されているべき変数
ノブを作成するために、呼び出し側のスクリプトで定義されているべき変数
.Va $name
の値を使用します。
引数
@ -753,7 +756,7 @@ fast
.Va ( $0
より),
.Dq Li ": WARNING: " ,
びこれに続く
およびこれに続く
.Ar message
で構成されます。
.El

View file

@ -86,9 +86,8 @@
.Xr indent 1
に再整形させたくない場合は、
それらのコメントのダッシュを星に変えてください。
最初のコメント以外のカラムで始まるコメントは
最初のカラム以外から始まるコメントは
決してライセンス声明とはみなしません。
訳注: 行頭にないものはライセンス表明とみなしません。
.Pp
著作権ヘッダの後には空行を 1 行入れ、ソースファイルには
.Va rcsid