1 .\" Copyright (C) 2003 Davide Libenzi
2 .\" Davide Libenzi <davidel@xmailserver.org>
4 .\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
5 .\" This program is free software; you can redistribute it and/or modify
6 .\" it under the terms of the GNU General Public License as published by
7 .\" the Free Software Foundation; either version 2 of the License, or
8 .\" (at your option) any later version.
10 .\" This program is distributed in the hope that it will be useful,
11 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
12 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 .\" GNU General Public License for more details.
15 .\" You should have received a copy of the GNU General Public
16 .\" License along with this manual; if not, see
17 .\" <http://www.gnu.org/licenses/>.
20 .\"*******************************************************************
22 .\" This file was generated with po4a. Translate the source file.
24 .\"*******************************************************************
26 .\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO
27 .\" all rights reserved.
28 .\" Translated 2004-06-15, Yuichi SATO <ysato444@yahoo.co.jp>
29 .\" Updated & Modified 2004-12-29, Yuichi SATO
30 .\" Updated & Modified 2005-04-20, Yuichi SATO
31 .\" Updated & Modified 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
32 .\" Updated 2006-07-19, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
33 .\" Updated 2009-02-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.19
35 .TH EPOLL_CTL 2 2012\-04\-15 Linux "Linux Programmer's Manual"
37 epoll_ctl \- epoll ディスクリプタのインタフェースを操作する
39 \fB#include <sys/epoll.h>\fP
41 \fBint epoll_ctl(int \fP\fIepfd\fP\fB, int \fP\fIop\fP\fB, int \fP\fIfd\fP\fB, struct
42 epoll_event *\fP\fIevent\fP\fB);\fP
44 このシステムコールは、ファイルディスクリプタ \fIepfd\fP が参照する \fBepoll\fP(7)
45 インスタンスに対する操作を行う。 対象のファイルディスクリプタ \fIfd\fP に対して、
46 操作 \fIop\fP の実行が要求される。
48 \fIop\fP 引き数に指定できる有効な値は以下の通りである。
51 対象のファイルディスクリプタ \fIfd\fP をファイルディスクリプタ \fIepfd\fP が参照する \fBepoll\fP インスタンスに登録し、イベント
52 \fIevent\fP を \fIfd\fP に結び付けられた内部ファイルに関連付ける。
55 イベント \fIevent\fP を対象のファイルディスクリプタ \fIfd\fP に関連付けるように変更する。
58 対象のファイルディスクリプタ \fIfd\fP を \fIepfd\fP が参照する \fBepoll\fP インスタンスから削除する。 \fIevent\fP
59 引き数は無視されるので、NULL にすることもできる (但し、下記の「バグ」を参照)。
61 \fIevent\fP 引き数は、ファイルディスクリプタ \fIfd\fP にリンクされたオブジェクトを表す。 \fIstruct epoll_event\fP
66 typedef union epoll_data {
74 uint32_t events; /* epoll イベント */
75 epoll_data_t data; /* ユーザデータ変数 */
80 \fIevents\fP メンバは、以下のような使用可能なイベントタイプを使って構成された ビットセットである。
83 関連付けられたファイルに対して、 \fBread\fP(2) 操作が可能である。
86 関連付けられたファイルに対して、 \fBwrite\fP(2) 操作が可能である。
88 \fBEPOLLRDHUP"\fP(Linux\fB2.6.17\fP以降)"
89 ストリームソケットの他端が、コネクションの close 、 またはコネクションの書き込み側の shutdown を行った。
90 (このフラグを使うと、エッジトリガの監視を行う場合に、 通信のもう一端が閉じられたことを検知するコードを 非常に簡潔に書くことができる。)
93 \fBread\fP(2) 操作が可能な緊急 (urgent) データがある。
96 関連付けられたファイルディスクリプタにエラー条件が起こった。 \fBepoll_wait\fP(2) は常にこのイベントを待つので、 \fIevents\fP
100 関連付けられたファイルディスクリプタにハングアップが起こった。 \fBepoll_wait\fP(2) は常にこのイベントを待つので、 \fIevents\fP
104 関連付けられたファイルディスクリプタに エッジトリガ動作 (Edge Triggered behavior) を設定する。 \fBepoll\fP
105 のデフォルトの動作は、レベルトリガ (Level Triggered) である。 エッジトリガとレベルトリガによるイベント分配機構 (event
106 distribution architectures) についての詳細な情報は、 \fBepoll\fP(7) を参照すること。
108 \fBEPOLLONESHOT\fP (Linux 2.6.2 以降)
109 関連付けられたファイルディスクリプタに 一撃動作 (One\-Shot behavior) を設定する。 これはイベントが
110 \fBepoll_wait\fP(2) によって引き出された後、 関連付けられたファイルディスクリプタが内部的に破棄され、 \fBepoll\fP
111 インタフェースによってイベントが報告されなくなることを意味する。 新しいイベントマスクでファイルディスクリプタを再度有効にするためには、
112 \fBepoll_ctl\fP() に \fBEPOLL_CTL_MOD\fP を指定して呼び出さなければならない。 \fIop\fP
113 引き数に指定できる有効な値は、以下の通り:
115 成功した場合、 \fBepoll_ctl\fP() は 0 を返す。 エラーが起こった場合、 \fBepoll_ctl\fP() は \-1 を返し、
116 \fIerrno\fP を適切に設定する。
120 \fIepfd\fP か \fIfd\fP が有効なファイルディスクリプタでない。
123 \fIop\fP が \fBEPOLL_CTL_ADD\fP であり、かつ与えられたファイルディスクリプタ \fIfd\fP がこの epoll
127 \fIepfd\fP が \fBepoll\fP ファイルディスクリプタでない。 または \fIfd\fP が \fIepfd\fP と同一である。 または要求された操作
128 \fIop\fP がこのインタフェースでサポートされていない。
131 \fIop\fP が \fBEPOLL_CTL_MOD\fP または \fBEPOLL_CTL_DEL\fP で、かつ \fIfd\fP がこの epoll
135 要求された \fIop\fP 制御操作を扱うのに十分なメモリがない。
138 epoll インスタンスに新しいファイルディスクリプタを登録 (\fBEPOLL_CTL_ADD\fP) しようとした際に、
139 \fI/proc/sys/fs/epoll/max_user_watches\fP で決まる上限に達した。 詳細は \fBepoll\fP(7) を参照。
142 対象ファイル \fIfd\fP が \fBepoll\fP をサポートしていない。
144 .\" To be precise: kernel 2.5.44.
145 .\" The interface should be finalized by Linux kernel 2.5.66.
146 \fBepoll_ctl\fP() はカーネル 2.6 で追加された。
148 \fBepoll_ctl\fP() は Linux 独自である。
149 ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。
151 \fBepoll\fP インタフェースは、 \fBpoll\fP(2) に対応している全てのファイルディスクリプタに対応している。
153 Linux 2.6.9 より前では、 \fBEPOLL_CTL_DEL\fP 操作の際、引き数 \fIevent\fP に (たとえ無視される場合であっても)
154 NULL でないポインタを渡す必要があった。 カーネル 2.6.9 以降では、 \fBEPOLL_CTL_DEL\fP を使う際に \fIevent\fP に
155 NULL を指定できるようになっている。 2.6.9 より前のカーネルへの移植性が必要なアプリケーションでは、 \fIevent\fP に NULL
158 \fBepoll_create\fP(2), \fBepoll_wait\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)
160 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
161 である。プロジェクトの説明とバグ報告に関する情報は
162 http://www.kernel.org/doc/man\-pages/ に書かれている。