kazmax - Linux で自宅サーバー

epoll_wait - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 関連項目

名前

epoll_wait - epoll ファイルディスクリプタの I/O イベントを待つ

書式

#include <sys/epoll.h>

int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);

説明

epoll ファイルディスクリプタ epfd のイベントを最大 timeout ミリ秒待つ。 events が指すメモリ領域には、呼び出し側が利用可能なイベントが格納される。 最大 maxevents 個のイベントが   epoll_wait (2) によって返される。 maxevents 引き数は 0 より大きくなければならない。 timeout を -1 に指定すると、   epoll_wait (2) は無限に待つ。 また timeout を 0 に指定すると、   epoll_wait (2) はイベントが利用可能でなくても、すぐに返る (返り値は 0 である)。 struct epoll_event は以下のように定義される:


typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t;
struct epoll_event { __uint32_t events; /* epoll イベント */ epoll_data_t data; /* ユーザデータ変数 */ };

返される構造体の data メンバは、ユーザが   epoll_ctl (2)  ( EPOLL_CTL_ADD , EPOLL_CTL_MOD ) で指定したデータが格納される。 一方、 events メンバには返された利用可能なイベントのビットフィールドが格納される。

返り値

成功した場合、   epoll_wait (2) は要求された I/O に対して準備ができているファイルディスクリプタの数を返す。 また要求された timeout ミリ秒の間にファイルディスクリプタが準備できない場合は、0 を返す。 エラーが起こった場合、   epoll_wait (2) は -1 を返し、 errno が適切に設定される。

エラー

EBADF
epfd が有効なファイルディスクリプタでない。
EFAULT
events で指されるメモリ領域が書き込み権限でアクセスできない。
EINTR
要求されたどのイベントも起きないうちに、または timeout の期限が切れる前に、この呼び出しがシグナルハンドラによって割り込まれた。
EINVAL
epfdepoll ファイルディスクリプタでない。 または maxevents が 0 以下である。

準拠

  epoll_wait (2) は Linux カーネル 2.5.44 に導入された新しい API である。 インタフェースは Linux カーネル 2.5.66 で確定されるべきである。

関連項目