diff --git a/ja_JP.eucJP/man/man1/systat.1 b/ja_JP.eucJP/man/man1/systat.1 index f6839f0e36..7374553207 100644 --- a/ja_JP.eucJP/man/man1/systat.1 +++ b/ja_JP.eucJP/man/man1/systat.1 @@ -1,527 +1,527 @@ .\" Copyright (c) 1985, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)systat.1 8.2 (Berkeley) 12/30/93 .\" %FreeBSD: src/usr.bin/systat/systat.1,v 1.23.2.6 2001/10/09 16:10:19 sobomax Exp % .\" .\" $FreeBSD$ .\" .Dd September 9, 1997 .Dt SYSTAT 1 .Os .Sh 名称 .Nm systat .Nd システムの統計情報を CRT に表示する .Sh 書式 .Nm .Op Fl display .Op Ar refresh-interval .Sh 解説 .Nm はシステムの各種統計情報をスクリーン指向な方法で .Xr ncurses 3 の curses スクリーンディスプレイライブラリを用いて表示します。 .Pp .Nm の走行中はスクリーンが通常 2 つのウィンドウに分割されます (例外は vmstat を表示する場合で この時はスクリーン全体を使います)。 上のウィンドウはその時のシステムのロードアベレージを表示します。 下のウィンドウに表示される情報は、ユーザのコマンドに応じて 変化するかもしれません。スクリーンの最終行はユーザの入力と エラーメッセージのために予約されています。 .Pp デフォルトでは .Nm はプロセッサ使用率が最大のプロセスを下のウィンドウに表示します。 他にはスワップ領域の使用状況、ディスク .Tn I/O の統計情報 ( .Xr iostat 8 式に)、仮想記憶の統計情報 ( .Xr vmstat 8 式に)、ネットワークの ``mbuf'' 利用率、 .Tn TCP/IP 統計情報、 ネットワークコネクション ( .Xr netstat 1 式に) を表示します。 .Pp 入力は 2 つの異なるレベルで解釈されます。 ``グローバル'' なコマンドインタプリタがすべてのキーボード入力を 処理します。もしこのコマンドインタプリタがコマンドを認識できないと、 入力行は表示する種類毎のコマンドインタプリタに渡されます。 これによって各表示内容に応じたコマンドを持つ事が可能になります。 .Pp コマンド行のオプション: .Bl -tag -width "refresh_interval" .It Fl Ns Ar display .Fl に続けて .Ar display として以下のいずれか一つを指定します: .Ic icmp , .Ic iostat , .Ic ip , .Ic mbufs , .Ic netstat , .Ic pigs , .Ic swap , .Ic tcp , .Ic vmstat 。これらの表示内容は対話的にも ( .Dq Fl 無しに) 指定でき、そして詳細は以下の説明にあります。 .It Ar refresh-interval .Ar refresh-value にスクリーンの更新間隔を秒数で指定します。 .El .Pp いくつかの文字は .Nm を即座に反応させます。 そういった文字には以下の物があります .Bl -tag -width Fl .It Ic \&^L スクリーンを更新します。 .It Ic \&^G その時点で下のウィンドウに表示されている ``表示内容'' の名称と 更新間隔を表示します。 .It Ic \&^Z .Nm を停止します。 .It Ic \&: カーソルをコマンドラインに移動して打ち込まれた入力行を コマンドとして解釈します。コマンドの入力中は 現位置文字消去、単語消去、行取消の各編集機能が使えます。 .El .Pp 以下のコマンドは ``グローバル'' なコマンドインタプリタによって 解釈されます。 .Bl -tag -width Fl .It Ic help 指定可能な表示内容をコマンドラインに表示します。 .It Ic load 過去 1、5、15分間のロードアベレージをコマンドラインに表示します。 .It Ic stop スクリーンの更新を止めます。 .It Xo .Op Ic start .Op Ar number .Xc スクリーンの更新を開始 (継続) します。もし数値で秒数指定の 引数が与えられると更新間隔 (の秒数) として解釈されます。 数値のみを与えると更新間隔がその値にセットされます。 .It Ic quit .Nm を終了します。 (これは .Ic q と省略できます。) .El .Pp 指定可能な表示内容には以下があります: .Bl -tag -width Ic .It Ic pigs 下のウィンドウに、主記憶を占めプロセッサ利用率が最大のプロセスを 表示します (デフォルトの表示内容です)。 ユーザプロセスへのプロセッサの割当が 100% 未満の時は、 残りは ``idle'' プロセスに割り当てられているものと扱います。 .It Ic icmp 下のウィンドウに、 Internet Control Message Protocol .Pq Dq Tn ICMP で送受信されたメッセージの統計情報を表示します。 スクリーンの左半分には受信したパケットの情報を表示し、 右半分には送信されたと考えられるパケットの情報を表示します。 .Pp 表示内容が .Ic icmp の場合は 2 つのコマンドが利用できます: .Ic mode と .Ic reset です。 .Ic mode コマンドは与えられた引数に応じて 4 つの表示モードから 1 つを選ぶために使います: .Bl -tag -width absoluteXX -compact .It Ic rate : それぞれの値の変動を秒単位にパケット数で表示します (デフォルトです) .It Ic delta : それぞれの値の変動を更新間隔単位にパケット数で表示します .It Ic since : 表示が最後にリセットされてからのそれぞれの値の変動の総計を表示します .It Ic absolute : 各統計の絶対値を表示します .El .Pp .Ic reset コマンドは .Ic since モードの基点をリセットします。 引数なしの .Ic mode コマンドはその時点のモードをコマンドラインに表示します。 .It Ic ip .Tn IP と .Tn UDP の統計情報を表示するという点を除いて .Ic icmp と同じです。 .It Ic tcp .Ic icmp に似ていますが、 .Tn TCP の統計情報を表示します。 .It Ic iostat 下のウィンドウに、プロセッサ利用率とディスクのスループットの 統計情報を表示します。プロセッサ利用率の統計情報は ユーザモード (``user'')、低いプライオリティで実行された ユーザモードのプロセス (``nice'')、システムモード (``system'')、 割り込みモード (``interrupt'')、アイドル (``idle'') での総実行時間 の棒グラフとして表示されます。 ディスクのスループットの統計情報としては、各ドライブについて、 秒あたりのメガバイト数、秒あたりの平均ディスクトランザクション数、 トランザクションあたりの平均転送キロバイト数が表示されます。 この情報は棒グラフまたは下へスクロールする数値の列で表示されます。 棒グラフでの表示がデフォルトです; .Pp 以下のコマンドは表示内容が .Ic iostat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Fl -compact .It Cm numbers ディスク .Tn I/O の統計情報を数値形式で表示します。値は下へスクロールする 数値の列として表示されます。 .It Cm bars ディスク .Tn I/O の統計情報を棒グラフ形式で表示します (デフォルト)。 .It Cm kbpt トランザクションあたりのキロバイト数の表示を切り替えます (デフォルトではトランザクションあたりのキロバイトは表示されません)。 .El .It Ic swap カーネルに組み込まれている全スワップ領域について 利用状況に関する情報を表示します。 最初の列はパーティションのデバイス名です。 次の列はパーティションの総容量です。 .Ar Used の列は それまでに使われた総ブロックを示します; グラフは各パーティションで使用中の部分の割合を示します。 2 つ以上の使用中のスワップパーティションがある場合は、 合計の行も表示されます。 カーネルに組み込まれているものの、使われていない物は 使用不可として表示されます。 .It Ic mbufs 下のウィンドウに、何らかの用途、すなわち、データ、ソケット構造体等々に 確保された mbuf の個数を表示します。 .It Ic vmstat 画面全体を使って、 仮想記憶の利用状況、プロセススケジューリング、 デバイスからの割り込み、システムの名前変換キャッシュ、 ディスク .Tn I/O 等々に関する (やや込み入った) 統計情報の要約を表示します。 .Pp 画面の左上の領域にはログインしているユーザ数と過去 1、5、15分間の ロードアベレージが表示されます。 この行の下はメモリ利用率の統計情報です。 この表の 1 行目はアクティブなプロセス、つまり過去 20 秒以内に 走行状態だったことのあるプロセスのみのメモリ利用率を報告します。 2 番目の行は全プロセスのメモリ利用状況を報告しています。 1 番目の列はプロセスによって要求された物理ページ数を表示します。 2 番目の列は読みだし専用のテキストページに当てられた 物理ページ数を表示します。 3 番目と 4 番目の列は同じ物に関して仮想ページの情報を表示します。 これは全プロセスが全ページを持つとした時に必要となるページ数を表します。 最後に、最終列はフリーリスト上の物理ページ数を示します。 .Pp メモリ情報の下は平均プロセス数のリスト (1 更新期間前からのもの) で、 走行可能 (`r')、ページ待ち中 (`p')、 ページング以外のディスク待ち中 (`d')、 スリープ状態 (`s')、スワップアウトされているが実行されるのを 待っている状態 (`w') です。 この行にはコンテキストスイッチの平均回数 (`Csw')、 トラップ (`Trp'; ページフォルトを含む)、 システムコール (`Sys')、割り込み (`Int')、 ネットワークソフトウェア割り込み (`Sof')、 ページフォルト (`Flt') も表示します。 .Pp このプロセスキューの長さのリストの下は 時間の総計をシステム (`=' で示されます)、割り込み (`+' で示されます)、 ユーザ (`>' で示されます)、ナイス (`-' で示されます)、 アイドル (` ' で示されます) について数値のリストと棒グラフで 表した物です。 .Pp プロセス情報の下はファイル名変換の統計情報です。 これは前の更新期間中に行われたファイル名から inode 番号への変換の 回数、システム全体で共通の変換キャッシュで処理された物の回数と 割合、プロセス毎の変換キャッシュで処理された物の回数と割合を 表示しています。 .Pp 左下はディスクアクセス状況です。 ここでは 1 更新間隔 (デフォルトでは 5 秒) において、 転送あたりのキロバイト数、秒あたりの転送回数、秒あたりの転送メガバイト数、 ディスクがビジーであった時間のパーセンテージを報告します。 システムは、ほぼすべてのストレージデバイスの統計情報を保持します。 一般的には、7 個までのデバイスが表示されます。 表示されるデバイスは、 デフォルトではカーネルのデバイスリストの先頭にあるものです。 devstat システムの詳細については、 .Xr devstat 3 および .Xr devstat 9 を参照してください。 .Pp 右上の日時の下はページングとスワップの稼働状況です。 最初の 2 列は、1 更新間隔の間にページフォルトとページデーモンによって、 読み込まれたページ数と掃き出されたページ数の 1 秒あたりの平均を報告します。 3 番目と 4 番目の列は、1 更新間隔の間にスケジューラによって発行された スワップ要求により 読み込まれたページ数と掃き出されたページ数の 1 秒あたりの平均を報告します。 この情報の 1 行目は 1 更新間隔での秒あたりの平均ディスク転送回数を 示します; この情報の 2 行目は 1 更新間隔での秒あたりの平均転送ページ数を 示します。 .Pp ページングの統計情報の下は仮想記憶システムの以下の項目の平均数を 表示する列です。それぞれ、 書き込み時にコピーが行われたページ数 (`cow')、 要求時 0 クリアが行われたページ数 (`zfod')、 ページング対象から外され、固定されているページ数 (`wire')、 遅い (オンザフライの) ゼロフィルの割合 (`%slo-z')、 最近参照されたページ数 (`act')、 ページングの候補になっているページ数 (`inact')、 バッファキャッシュキューにあるページ数 (`cache')、 フリーページ数 (`free')、 ページデーモンが解放したページ数 (`daefr')、 プロセスが終了した事によって解放されたページ数 (`prcfr')、 フリーリストから再有効化されたページ数 (`react')、 ページデーモンが起こされた回数 (`pdwak')、 ページデーモンが調べたページ数 (`pdpgs')、 読み込み途中でページフォルトがブロックされた回数 (`intrn') の 1 更新間隔での秒あたりの平均値です。 .Pp この列のいちばん下は、以下の用途に使われている メモリの総量をそれぞれについてキロバイト単位で示しています。 バッファキャッシュのために使われている分 (`buf')、 バッファキャッシュ中のダーティバッファ数 (`dirtybuf')、 -v ノードキャッシュの望まれる最大サイズ (`desiredvnodes') +vnode キャッシュの望まれる最大サイズ (`desiredvnodes') (ネームキャッシュのサイズまでを除くと、大部分は未使用)、 -実際に確保された v ノード数 (`numvnodes')、 -確保された v ノードでフリーな物の数 (`freevnodes') +実際に確保された vnode 数 (`numvnodes')、 +確保された vnode でフリーな物の数 (`freevnodes') .Pp 画面の右下はシステムによって処理された割り込みの詳細です。 リストのトップは更新期間中の秒あたりの総割り込み数です。 列の残りの部分は総割り込み数のデバイス毎の詳細です。 ブートしてから少なくとも 1 回は割り込みを発生したデバイスについてのみ 表示されます。 .Pp 以下のコマンドは表示内容が .Ic vmstat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Ar -compact .It Cm boot システムがブートしてからの累積の統計情報を表示します。 .It Cm run このコマンドが与えられてからの走行中のトータルとして統計情報を表示します。 .It Cm time 更新期間の平均で統計情報を表示します (デフォルト)。 .It Cm want_fd fd デバイスのディスク使用状況を表示するか否かを切り替えます。 .It Cm zero 走行中の統計情報を 0 にリセットします。 .El .It Ic netstat 下のウィンドウにネットワーク接続状況を表示します。デフォルトでは、 リクエストを待っているネットワークサーバは表示されません。 各アドレスは ``host.port'' のフォーマットで、可能であれば シンボルで表示されます。アドレスを数字で表示することや、 ポート、ホスト、プロトコルの表示を制限することが可能です。 (先頭からの一意に識別可能な文字数だけで指定可能です): .Pp .Bl -tag -width Ar -compact .It Cm all リクエストを待っているサーバプロセスの表示を切り替えます (これは .Xr netstat 1 の .Fl a フラグと等価です)。 .It Cm numbers ネットワークアドレスを数字で表示します。 .It Cm names ネットワークアドレスをシンボルで表示します。 .It Cm proto Ar protocol .Ar protocol で指定されたプロトコルを使っているネットワークコネクションのみを 表示します (サポートしているプロトコルは ``tcp'',``udp'',``all'')。 .It Cm ignore Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示しません。 ホストとポートは名前 (``vangogh'' や ``ftp'')、または数字で 指定できます。ホストのアドレスはインターネットのドット表記を 使用します (``128.32.0.9'')。空白で区切って 1 つのコマンドに 複数の指定が可能です。 .It Cm display Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示します。 .Ar ignore と同様に、 .Op Ar items は名前または数字が使用可能です。 .It Cm show Op Ar ports\&|hosts コマンドラインに、その時点で選択されているプロトコル、 ホスト、ポートを表示します。無視されるホストとポートには `!' を前置します。もし .Ar ports か .Ar hosts が .Cm show の引数として与えられると、 指定された情報だけが表示されます。 .It Cm reset ポート、ホスト、プロトコルの選択メカニズムをデフォルト (あらゆるプロトコル、ポート、ホスト) の状態にリセットします。 .El .El .Pp 表示内容の切り替えコマンドは先頭からの一意に識別可能な 文字数に短縮できます; 例えば ``iostat'' は ``io'' と省略できます。 画面サイズが表示内容に不十分な時は情報が捨てられる可能性があります。 例えば、10 台のドライブがあるマシンでは .Ic iostat の棒グラフは 24 行の端末では 3 ドライブ分しか表示しません。 棒グラフが割り当てられた画面のスペースに収まらない時は 切り詰められて実際の値は棒の ``先端部分'' に表示されます。 .Pp 以下のコマンドはディスクドライブに関する情報を表示する物に 共通です。これらのコマンドは、あなたのシステムに、通常 画面に表示しきれない数のドライブがある場合に、情報を表示する ドライブのセットを選択するために使うためのものです。 .Pp .Bl -tag -width Ar -compact .It Cm ignore Op Ar drives 指定されたドライブに関する情報を表示しません。複数のドライブを 空白で区切って指定できます。 .It Cm display Op Ar drives 指定されたドライブに関する情報を表示します。複数のドライブを 空白で区切って指定できます。 .It Cm only Op Ar drives 指定されたデバイスのみ表示します。 複数のデバイスを指定可能であり、その場合空白で区切ります。 .It Cm drives 使用可能なデバイスのリストを表示します。 .It Cm match Xo .Ar type , Ns Ar if , Ns Ar pass .Op | Ar ... .Xc 指定したパターンにマッチするデバイスを表示します。 基本マッチング式は、 .Xr iostat 8 で使用するものと同じですが、1 点のみ異なります。 それぞれが OR される複数の .Fl t 引数を指定する代りに、 複数のマッチング式をパイプ .Pq Ql \&| 文字で結合して指定します。 それぞれのマッチング式中でコンマで区切られた引数に関して それぞれ AND がとられてから、 パイプで区切られたマッチング式に関してそれぞれ OR がとられます。 組み合わせ式に対してマッチするデバイスは、 表示する余地があれば表示されます。 例: .Pp .Dl match da,scsi | cd,ide .Pp これは、 全 SCSI ダイレクトアクセスデバイスと、全 IDE CDROM デバイスを表示します。 .Pp .Dl match da | sa | cd,pass .Pp これは、全ダイレクトアクセスデバイス、全シーケンシャルアクセスデバイス、 そして CDROM へのアクセスを提供する全パススルーデバイスを表示します。 .El .Sh 関連項目 .Xr netstat 1 , .Xr kvm 3 , .Xr icmp 4 , .Xr ip 4 , .Xr tcp 4 , .Xr udp 4 , .Xr iostat 8 , .Xr vmstat 8 .Sh 関連ファイル .Bl -tag -width /etc/networks -compact .It Pa /kernel ネームリストを読み出します。 .It Pa /dev/kmem 主記憶の情報を取ります。 .It Pa /etc/hosts ホスト名をひきます。 .It Pa /etc/networks ネットワーク名をひきます。 .It Pa /etc/services ポート名をひきます。 .El .Sh 歴史 .Nm プログラムは .Bx 4.3 に初めて登場しました。 .Ic icmp , .Ic ip , .Ic tcp の表示は .Fx 3.0 に初めて登場しました; .Tn ICMP , .Tn IP , .Tn TCP , .Tn UDP の統計情報のために別の表示モードを用意するという考え方は、 Silicon Graphics の .Tn IRIX システムの .Xr netstat 1 の .Fl C オプションから借用しました。 .Sh バグ 表示内容によっては 1 行に最低で 80 文字が表示できる事を想定しています。 .Ic vmstat は表示領域が足りないようです。なぜなら (訳注: 原文が切れています) (新規のプログラムとしてではなく独立した表示画面として追加されました)。 .Sh 日本語訳 野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳 diff --git a/ja_JP.eucJP/man/man2/kqueue.2 b/ja_JP.eucJP/man/man2/kqueue.2 index 33d1fee389..e44d529b45 100644 --- a/ja_JP.eucJP/man/man2/kqueue.2 +++ b/ja_JP.eucJP/man/man2/kqueue.2 @@ -1,472 +1,472 @@ .\" Copyright (c) 2000 Jonathan Lemon .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/sys/kqueue.2,v 1.1.2.14 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD$ .Dd April 14, 2000 .Dt KQUEUE 2 .Os .Sh 名称 .Nm kqueue , .Nm kevent .Nd カーネルイベント通知メカニズム .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/event.h .In sys/time.h .Ft int .Fn kqueue "void" .Ft int .Fn kevent "int kq" "const struct kevent *changelist" "int nchanges" "struct kevent *eventlist" "int nevents" "const struct timespec *timeout" .Fn EV_SET "&kev" ident filter flags fflags data udata .Sh 解説 .Fn kqueue は、フィルタと呼ばれる小さなカーネルコードの実行結果に基づき、 イベントの発生やある状態の成立を ユーザに通知する一般的な方法を提供します。 kevent は (ident, filter) のペアによって識別されます。 ここで、ident は識別子、filter はフィルタを表します。 1 つの kqueue には、同じ kevent が複数存在することはできません。 .Pp フィルタは、kevent の初期登録時に 以前から存在した状態を検出するために実行されます。 また、あるイベントが評価のためにフィルタに渡されるたびに実行されます。 状態を報告すべきとフィルタが決定した場合には、 その kevent はユーザが回収できるように kqueue に置かれます。 .Pp ユーザが kqueue から kevent を回収しようとしたときにも、 フィルタが実行されます。 フィルタの実行により、そのイベントをトリガした状態が成立していないこと が示された場合には、その kevent は kqueue から削除され、 ユーザに渡されません。 .Pp フィルタをトリガするイベントが複数ある場合でも、 kqueue の中に kevent が複数置かれるわけではありません。 代わりに、フィルタは複数のイベントを単一の kevent 構造体へ集めます。 ファイル記述子に対する .Fn close の呼び出しは、その記述子を参照しているあらゆる kevent を削除します。 .Pp .Fn kqueue は新規のカーネルイベントキューを生成して記述子を返します。 キューは .Xr fork 2 で生成された子プロセスには継承されません。 しかしながら、 .Dv RFFDG フラグなしで .Xr rfork 2 が呼び出された場合には、記述子テーブルが共有され、2 つの プロセス間で kqueue の共有が可能になります。 .Pp .Fn kevent は、キューにイベントを登録し、保留中のあらゆるイベントを ユーザに返すために使用されます。 .Fa changelist は .Va kevent 構造体の配列へのポインタです。この構造体は .Aq Pa sys/event.h で定義されています。 保留中のイベントをキューから読み込む前に、 .Fa changelist に含まれている全ての変更を適用します。 .Fa nchanges は .Fa changelist の大きさを与えます。 .Fa eventlist は kevent 構造体の配列へのポインタです。 .Fa nevents は .Fa eventlist の大きさを決定します。 .Fa timeout が NULL でないポインタの場合には、timespec 構造体であると解釈されて、 イベントを待つ最大待ち時間を指定します。 .Fa timeout が NULL ポインタの場合には、 .Fn kevent は無期限に待ちます。 ポーリングの効果を得るためには、 .Fa timeout 引数に、0 を示す .Va timespec 構造体を指す非 NULL のポインタを与えるべきです。 .Fa changelist と .Fa eventlist 用に同じ配列を使うことができます。 .Pp .Fn EV_SET は kevent 構造体の初期化を簡単にするマクロです。 .Pp .Va kevent 構造体は次のように定義されています。 .Bd -literal struct kevent { uintptr_t ident; /* このイベントの識別子 */ short filter; /* イベントのフィルタ */ u_short flags; /* kqueue のアクションフラグ */ u_int fflags; /* フィルタフラグ値 */ intptr_t data; /* フィルタデータ値 */ void *udata; /* 不透明なユーザデータ識別子 */ }; .Ed .Pp .Fa struct kevent のフィールドは以下の通りです。 .Bl -tag -width XXXfilter .It ident このイベントを識別するために使用される値です。 厳密な解釈は結び付けられたフィルタにより決定されますが、 普通はファイル記述子として解釈されます。 .It filter このイベントを処理するために使用されるカーネルフィルタを識別します。 あらかじめ定義されたシステムフィルタは後述してあります。 .It flags イベント発生時に実行するべきアクションです。 .It fflags フィルタ固有のフラグです。 .It data フィルタ固有のデータの値です。 .It udata 変更されずにカーネルを通して渡される不透明なユーザー定義の値です。 .El .Pp .Va flags フィールドは以下の値を含むことができます。 .Bl -tag -width XXXEV_ONESHOT .It EV_ADD イベントを kqueue に追加します。 既存のイベントを再び追加すると、元のイベントのパラメータが変更されます。 重複するエントリができるわけではありません。 イベントを追加すると、EV_DISABLE フラグによって上書きされない限りは 自動的に有効にされます。 .It EV_ENABLE イベントがトリガされた場合に、 .Fn kevent がそのイベントを返すことを許可します。 .It EV_DISABLE イベントを無効にします。これにより .Fn kevent はそのイベントを返さなくなります。 フィルタ自身は無効にされません。 .It EV_DELETE kqueue からイベントを削除します。 ファイル記述子に結び付けられているイベントは、 その記述子の最後のクローズ時に自動的に削除されます。 .It EV_ONESHOT フィルタが最初トリガされたときにのみ、イベントが返るようにします。 ユーザがイベントを kqueue から回収した後で、そのイベントは削除されます。 .It EV_CLEAR ユーザがイベントを回収した後に、その状態をリセットします。 これは現在の状態ではなく、状態の変化を報告するフィルタに有用です。 幾つかのフィルタは内部でこのフラグを自動的にセットしている かもしれないことに注意してください。 .It EV_EOF そのフィルタ固有の EOF 状態であることを示すために、 フィルタがこのフラグをセットすることがあります。 .It EV_ERROR 後述の .Sx 戻り値 を参照してください。 .El .Pp あらかじめ定義されたシステムフィルタを次に示します。 引数は kevent 構造体の .Va fflags および .Va data フィールドを経由してやりとりすることができます。 .Bl -tag -width EVFILT_SIGNAL .It EVFILT_READ 識別子に記述子を引数として取ります。 読み込み可能なデータがあるときに戻ります。 このフィルタの振舞いは、その記述子の型により少し異なります。 .Pp .Bl -tag -width 2n .It ソケット 事前に .Fn listen に渡されたソケットの場合、保留中の次の接続があるときに戻ります。 .Va data には listen のバックログ (backlog) の大きさが入っています。 .Pp その他のソケット記述子の場合、ソケットバッファの .Dv SO_RCVLOWAT の値を基準にして、読み込むデータがあるときに戻ります。 フィルタを追加するときに、 .Va fflags に NOTE_LOWAT を設定し .Va data に新しい最低基準値を指定することにより、 この値を、 フィルタごとの最低基準値で上書きすることが可能です。戻るときには、 .Va data にはソケットバッファの中のバイト数が入っています。 .Pp ソケットの読み込み側が切断された場合には、フィルタは .Va flags に EV_EOF も設定します。ここでエラーが起きた場合には、 .Va fflags にソケットエラーを返します。 ソケットバッファの中に保留中のデータが残っていても、 (接続が切れたことを示す) EOF が返されることがあります。 -.It v ノード +.It vnode ファイルポインタがファイルの最後 (EOF) でないときに戻ります。 .Va data は現在位置からファイルの最後 (EOF) までのオフセットが入っています。 この値は負であるかもしれません。 .It FIFO とパイプ 読み込むべきデータがあるときに戻ります。 .Va data には有効なバイト数が入っています。 .Pp 最後の書き込み側が切断したときに、フィルタは .Va flags に EV_EOF をセットします。 EV_CLEAR を渡すことで、このフラグをクリアすることができ、 フィルタはデータが読み込めるように なるのを戻らずに再び待ちます。 .El .It EVFILT_WRITE 識別子に記述子を引数として取ります。 その記述子が書き込み可能になるたびに戻ります。 ソケット、パイプおよび FIFO では、 .Va data には書き込みバッファの残り領域の大きさが入っています。 読み込み側が切断したときに、フィルタは EV_EOF をセットします。 FIFO の場合、EV_CLEAR を使いこれをクリアすることができます。 このフィルタは vnode をサポートしていないことに注意してください。 .Pp ソケットの場合、最低基準値およびソケットエラーの取り扱いは EVFULT_READ の場合と同じです。 .It EVFILT_AIO 非同期入出力リクエストの sigevent 部分の、 .Va sigev_notify_kqueue にはイベントを付加する kqueue の記述子を入れ、 .Va sigev_value には udata の値を入れ、 .Va sigev_notify には SIGEV_EVENT を入れて、非同期入出力リクエストを埋めます。 aio_* 関数が呼び出されたとき、そのイベントは 指定された kqueue に登録されます。aio_* 関数が返した .Fa aiocb 構造体を .Va ident 引数にセットします。 このフィルタは aio_error と同様の条件で戻ります。 .Pp 別の方法として、 .Va ident に kqueue 記述子を入れて kevent 構造体を初期化し、 そのアドレスを非同期リクエストの .Va aio_lio_opcode フィールドに置くことも可能です。 しかしながら、このアプローチは 64 ビットポインタのアーキテクチャでは 動作しないでしょうし、あてにするべきではありません。 .It EVFILT_VNODE ファイル記述子を識別子に、監視するイベントを .Va fflags に引数として取ります。 指定した記述子に対し 要求されたイベントが 1 つ以上発生したときに戻ります。 監視するイベントを以下に示します。 .Bl -tag -width XXNOTE_RENAME .It NOTE_DELETE 記述子が参照するファイルに対し .Fn unlink が呼ばれました。 .It NOTE_WRITE 記述子が参照するファイルに対し書き込みが起こりました。 .It NOTE_EXTEND 記述子が参照するファイルのサイズが拡張されました。 .It NOTE_ATTRIB 記述子が参照するファイルの属性が変更されました。 .It NOTE_LINK ファイルのリンク数が変更されました。 .It NOTE_RENAME 記述子が参照するファイルがリネームされました。 .It NOTE_REVOKE ファイルへのアクセスが .Xr revoke 2 によって無効にされたか、もしくは、下位層のファイルシステムが マウントされていません。 .El .Pp 戻るときに、 .Va fflags にフィルタをトリガしたイベントが入っています。 .It EVFILT_PROC 監視するプロセス ID を識別子に、監視するイベントを .Va fflags に引数として取ります。 要求されたイベントを 1 つ以上プロセスが実行するときに戻ります。 あるプロセスが他のプロセスを正常に見ることができる場合には、 イベントをそのプロセスに結び付けることができます。 監視するイベントを次に示します。 .Bl -tag -width XXNOTE_TRACKERR .It NOTE_EXIT プロセスが終了しました。 .It NOTE_FORK プロセスが .Fn fork を呼びました。 .It NOTE_EXEC プロセスが .Xr execve 2 または類似の呼び出しにより、新規のプロセスを実行しました。 .It NOTE_TRACK .Fn fork の呼び出しを越えて、プロセスを追跡します。 親プロセスは .Va fflags フィールドに NOTE_TRACK をセットして戻り、一方、子プロセスは .Va fflags に NOTE_CHILD を .Va data に親プロセスの PID をセットし戻ります。 .It NOTE_TRACKERR このフラグは、システムが子プロセスへのイベントを 結び付けることができなかったときに戻ります。 通常、これは資源の制限により生じます。 .El .Pp 戻るときに、 .Va fflags はフィルタをトリガしたイベントが入っています。 .It EVFILT_SIGNAL 監視するシグナル番号を識別子に引数として取ります。 与えられたシグナルがプロセスに配送されたときに戻ります。 これは .Fn signal および .Fn sigaction の仕組みと共存し、低い優先順位を持っています。 たとえそのシグナルが SIG_IGN とマークされていたとしても、 フィルタはプロセスに配送されようとしたシグナル全てを記録します。 通常のシグナル配送処理の後に、イベント通知が発生します。 .Va data には .Fn kevent を最後に呼び出してからのシグナル発生の回数が返ります。 このフィルタは内部で自動的に EV_CLEAR フラグをセットします。 .El .Sh 戻り値 .Fn kqueue は新規のカーネルイベントキューを生成し、ファイル記述子を返します。 カーネルイベントキューの生成時にエラーがあった場合には、 値 -1 が返されて errno がセットされます。 .Pp .Fn kevent は .Fa eventlist に配列されているイベントの数を返します。 この数は、最大 .Fa nevents で与えられた値までです。 .Fa changelist の要素の処理中にエラーが発生し、かつ .Fa eventlist に十分な余地がある場合には、 .Va flags に .Dv EV_ERROR がセットされ、 .Va data にシステムエラーがセットされたイベントが、 .Fa eventlist に置かれます。 さもなければ、 .Dv -1 が返され、 .Dv errno がエラー状態を示すためにセットされます。 時間切れの場合には、 .Fn kevent は 0 を返します。 .Sh エラー .Fn kqueue 関数は以下の場合に失敗します。 .Bl -tag -width Er .It Bq Er ENOMEM カーネルがカーネルキューのための十分なメモリの割り当てに失敗しました。 .It Bq Er EMFILE プロセスの記述子テーブルが満杯です。 .It Bq Er ENFILE システムファイルテーブルが満杯です。 .El .Pp .Fn kevent 関数は以下の場合に失敗します。 .Bl -tag -width Er .It Bq Er EACCES プロセスがフィルタを登録する権限を持っていません。 .It Bq Er EFAULT .Va kevent 構造体の読み込みまたは書き込みでエラーがありました。 .It Bq Er EBADF 指定された記述子が有効ではありません。 .It Bq Er EINTR 時間切れ前や、戻るための何らかのイベントが kqueue に 置かれる前に、シグナルが配送されました。 .It Bq Er EINVAL 指定されたタイムリミットまたはフィルタが無効です。 .It Bq Er ENOENT 修正または削除されるべきイベントが見つかりません。 .It Bq Er ENOMEM イベント登録のためのメモリがありません。 .It Bq Er ESRCH 結び付けるために指定したプロセスが存在しません。 .El .Sh 関連項目 .Xr aio_error 2 , .Xr aio_read 2 , .Xr aio_return 2 , .Xr poll 2 , .Xr read 2 , .Xr select 2 , .Xr sigaction 2 , .Xr write 2 , .Xr signal 3 .Sh 歴史 .Fn kqueue および .Fn kevent 関数は .Fx 4.1 で初めて登場しました。 .Sh 作者 .Fn kqueue システムと、このマニュアルページは .An Jonathan Lemon Aq jlemon@FreeBSD.org が書きました。 .Sh バグ 現在は、UFS ファイルシステムに属さない .Xr vnode 9 を監視することができません。