OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man2 / epoll_wait.2
index 3ba3e1c..efec651 100644 (file)
@@ -36,9 +36,9 @@
 .\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH EPOLL_WAIT 2 2012\-08\-17 Linux "Linux Programmer's Manual"
+.TH EPOLL_WAIT 2 2014\-08\-19 Linux "Linux Programmer's Manual"
 .SH 名前
-epoll_wait, epoll_pwait \- epoll ファイルディスクリプタの I/O イベントを待つ
+epoll_wait, epoll_pwait \- epoll ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81® I/O ã\82¤ã\83\99ã\83³ã\83\88ã\82\92å¾\85ã\81¤
 .SH 書式
 .nf
 \fB#include <sys/epoll.h>\fP
@@ -50,20 +50,26 @@ epoll_wait, epoll_pwait \- epoll ファイルディスクリプタの I/O イベ
 \fB               const sigset_t *\fP\fIsigmask\fP\fB);\fP
 .fi
 .SH 説明
-\fBepoll_wait\fP() システムコールは、ファイルディスクリプタ \fIepfd\fP で参照される
-\fBepoll\fP(7) インスタンスに対するイベントを待つ。 \fIevents\fP が指すメモリ領域には、
+\fBepoll_wait\fP() システムコールは、ファイルディスクリプタ \fIepfd\fP で参照される
+\fBepoll\fP(7) インスタンスに対するイベントを待つ。 \fIevents\fP が指すメモリ領域には、
 呼び出し側が利用可能なイベントが格納される。最大 \fImaxevents\fP 個のイベントが
 \fBepoll_wait\fP() によって返される。
 \fImaxevents\fP 引き数は 0 より大きくなければならない。
 
-\fItimeout\fP 引き数は、 \fBepoll_wait\fP() が停止する最小時間をミリ秒で指定
-する (この停止時間はシステムクロックの粒度に切り上げられ、カーネルの
-スケジューリング遅延により少しだけ長くなる可能性がある)。
-\fItimeout\fP を \-1 に指定すると、 \fBepoll_wait\fP() は無限に停止する。
-\fItimeout\fP を 0 に指定すると、 \fBepoll_wait\fP() は利用可能なイベントが
-なくても、すぐに返る。
+\fItimeout\fP 引き数は \fBepoll_wait\fP() が停止する時間をミリ秒で指定する。 \fBepoll_wait\fP()
+の呼び出しは以下のいずれかになるまで停止する。
+.IP * 3
+ファイルディスクリプターがイベントを配送した
+.IP *
+呼び出しがシグナルハンドラーにより割り込まれた
+.IP *
+タイムアウトが満了する
+.PP
+\fItimeout\fP 時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある点に注意すること。
+\fItimeout\fP を \-1 に指定すると、 \fBepoll_wait\fP() は無限に停止する。 \fItimeout\fP を 0 に指定すると、
+\fBepoll_wait\fP() は利用可能なイベントがなくても、すぐに返る。
 
-\fIstruct epoll_event\fP は以下のように定義される:
+\fIstruct epoll_event\fP は以下のように定義される
 .sp
 .in +4n
 .nf
@@ -76,18 +82,18 @@ typedef union epoll_data {
 
 struct epoll_event {
     uint32_t     events;    /* epoll イベント */
-    epoll_data_t data;      /* ユーザデータ変数 */
+    epoll_data_t data;      /* ã\83¦ã\83¼ã\82¶ã\83¼ã\83\87ã\83¼ã\82¿å¤\89æ\95° */
 };
 .fi
 .in
 
-返される構造体の \fIdata\fP メンバには、ユーザが \fBepoll_ctl\fP(2)  (\fBEPOLL_CTL_ADD\fP,
+è¿\94ã\81\95ã\82\8cã\82\8bæ§\8bé\80 ä½\93ã\81® \fIdata\fP ã\83¡ã\83³ã\83\90ã\81«ã\81¯ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\81\8c \fBepoll_ctl\fP(2)  (\fBEPOLL_CTL_ADD\fP,
 \fBEPOLL_CTL_MOD\fP)  で指定したデータが格納される。 一方、 \fIevents\fP
 メンバには返された利用可能なイベントのビットフィールドが格納される。
 .SS epoll_pwait()
 \fBepoll_wait\fP()  と \fBepoll_pwait\fP()  の関係は、 \fBselect\fP(2)  と \fBpselect\fP(2)
 の関係と同様である。 \fBpselect\fP(2)  同様、 \fBepoll_pwait\fP()
-を使うと、アプリケーションは、ファイルディスクリプタが準備できた状態になるか、 シグナルが捕捉されるまで、安全に待つことができる。
\82\92使ã\81\86ã\81¨ã\80\81ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cæº\96å\82\99ã\81§ã\81\8dã\81\9fç\8a¶æ\85\8bã\81«ã\81ªã\82\8bã\81\8bã\80\81 ã\82·ã\82°ã\83\8aã\83«ã\81\8cæ\8d\95æ\8d\89ã\81\95ã\82\8cã\82\8bã\81¾ã\81§ã\80\81å®\89å\85¨ã\81«å¾\85ã\81¤ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82
 
 以下の \fBepoll_pwait\fP()  の呼び出しは、
 .nf
@@ -108,24 +114,23 @@ struct epoll_event {
 \fIsigmask\fP 引き数には NULL を指定してもよい。 その場合には、 \fBepoll_pwait\fP()  は \fBepoll_wait\fP()
 と等価となる。
 .SH 返り値
-成功した場合、 \fBepoll_wait\fP()  は要求された I/O に対して準備ができているファイルディスクリプタの数を返す。 また要求された
-\fItimeout\fP ã\83\9fã\83ªç§\92ã\81®é\96\93ã\81«ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81\8cæº\96å\82\99ã\81§ã\81\8dã\81ªã\81\84å ´å\90\88ã\81¯ã\80\810 ã\82\92è¿\94ã\81\99ã\80\82 ã\82¨ã\83©ã\83¼ã\81\8cèµ·ã\81\93ã\81£ã\81\9få ´å\90\88ã\80\81 \fBepoll_wait\fP()  ã\81¯
-\-1 を返し、 \fIerrno\fP を適切に設定する。
\88\90å\8a\9fã\81\97ã\81\9få ´å\90\88ã\80\81 \fBepoll_wait\fP()  ã\81¯è¦\81æ±\82ã\81\95ã\82\8cã\81\9f I/O ã\81«å¯¾ã\81\97ã\81¦æº\96å\82\99ã\81\8cã\81§ã\81\8dã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\95°ã\82\92è¿\94ã\81\99ã\80\82 ã\81¾ã\81\9fè¦\81æ±\82ã\81\95ã\82\8cã\81\9f
+\fItimeout\fP ã\83\9fã\83ªç§\92ã\81®é\96\93ã\81«ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cæº\96å\82\99ã\81§ã\81\8dã\81ªã\81\84å ´å\90\88ã\81¯ã\80\810 ã\82\92è¿\94ã\81\99ã\80\82 ã\82¨ã\83©ã\83¼ã\81\8cèµ·ã\81\93ã\81£ã\81\9få ´å\90\88ã\80\81 \fBepoll_wait\fP()
+は \-1 を返し、 \fIerrno\fP を適切に設定する。
 .SH エラー
 .TP 
 \fBEBADF\fP
-\fIepfd\fP が有効なファイルディスクリプタでない。
+\fIepfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81ªã\81\84ã\80\82
 .TP 
 \fBEFAULT\fP
-\fIevents\fP で指されるメモリ領域に書き込み権限でアクセスできない。
+\fIevents\fP で指されるメモリ領域に書き込み権限でアクセスできない。
 .TP 
 \fBEINTR\fP
-要求されたどのイベントも発生せず、かつ \fItimeout\fP の期限が切れる前に、
-システムコールがシグナルハンドラによって割り込まれた。
-\fBsignal\fP(7) 参照。
+(1) 要求されたどのイベントも発生せず、かつ (2) \fItimeout\fP
+の期限が切れる前に、システムコールがシグナルハンドラーによって割り込まれた。 \fBsignal\fP(7) 参照。
 .TP 
 \fBEINVAL\fP
-\fIepfd\fP が \fBepoll\fP ファイルディスクリプタでない。 または \fImaxevents\fP が 0 以下である。
+\fIepfd\fP ã\81\8c \fBepoll\fP ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81ªã\81\84ã\80\82 ã\81¾ã\81\9fã\81¯ \fImaxevents\fP ã\81\8c 0 ä»¥ä¸\8bã\81§ã\81\82ã\82\8bã\80\82
 .SH バージョン
 .\" To be precise: kernel 2.5.44.
 .\" The interface should be finalized by Linux kernel 2.5.66.
@@ -138,20 +143,24 @@ struct epoll_event {
 \fBepoll_wait\fP() は Linux 独自である。
 .SH 注意
 あるスレッドが \fBepoll_pwait\fP() を呼び出して停止されている間に、
-別のスレッドが wait 中の \fBepoll\fP インストールにファイルディスクリプタを
-追加することがある。新しいファイルディスクリプタでイベントが発生すると、
\88¥ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c wait ä¸­ã\81® \fBepoll\fP ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«ã\81«ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92
+追å\8a ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81\82ã\82\8bã\80\82æ\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\82¤ã\83\99ã\83³ã\83\88ã\81\8cç\99ºç\94\9fã\81\99ã\82\8bã\81¨ã\80\81
 \fBepoll_wait\fP() の呼び出しによる停止が解除されることになる。
 
 \fBepoll_wait\fP() で監視中の \fBepoll\fP
-インスタンス内のファイルディスクリプタが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2)
\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹å\86\85ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\88¥ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81«ã\82\88ã\81£ã\81¦ã\82¯ã\83­ã\83¼ã\82ºã\81\95ã\82\8cã\81\9få ´å\90\88ã\81«ä½\95ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\81®è­°è«\96ã\81«ã\81¤ã\81\84ã\81¦ã\81¯ã\80\81 \fBselect\fP(2)
 を参照してほしい。
 .SH バグ
 バージョン 2.6.37 より前のカーネルでは、おおよそ \fILONG_MAX / HZ\fP ミリ秒より大きい \fItimeout\fP 値は \-1
 (つまり無限大) として扱われる。したがって、例えば、\fIsizeof(long)\fP が 4 で、カーネルの \fIHZ\fP の値が 1000
 のシステムでは、 35.79 分よりも大きなタイムアウトは無限大として扱われるということである。
+.SS "C ライブラリとカーネル ABI の違い"
+素の \fBepoll_pwait\fP() システムコールは 6 番目の引き数 \fIsize_t sigsetsize\fP を取る。 この引き数は
+\fIsigmask\fP 引き数のバイト単位のサイズを指定する。 glibc の \fBepoll_pwait\fP() ラッパー関数は、この引き数に固定値
+(\fIsizeof(sigset_t)\fP と同じ) を指定する。
 .SH 関連項目
 \fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。