Manpages

名 前

epoll_create, epoll_create1 − epoll フ ァ イ ル デ ィ ス ク リ プ タ ー を オ ー プ ン す る

書 式

#include <sys/epoll.h>

int epoll_create(int size);
int epoll_create1(int
flags);

説 明

epoll_create()は epoll(7) イ ン ス タ ン ス を 作 成 す る 。 Linux 2.6.8 以 降 で は 、 size 引 き 数 は 無 視 さ れ る が 、 0 よ り 大 き な 値 で な け れ ば な ら な い 。 下 記 の 「 注 意 」 を 参 照 。

epoll_create() は 、 新 し い epoll イ ン ス タ ン ス を 参 照 す る フ ァ イ ル デ ィ ス ク リ プ タ ー を 返 す 。 こ の フ ァ イ ル デ ィ ス ク リ プ タ ー は 、 そ の 後 の epoll イ ン タ ー フ ェ ー ス の 呼 び 出 し に 使 わ れ る 。 も う 必 要 で な く な っ た 場 合 は 、 epoll_create() で 返 さ れ た フ ァ イ ル デ ィ ス ク リ プ タ ー は close(2) を 使 っ て ク ロ ー ズ さ れ る べ き で あ る 。 あ る epoll イ ン ス タ ン ス を 参 照 す る 全 て の フ ァ イ ル デ ィ ス ク リ プ タ ー が ク ロ ー ズ さ れ る と 、 カ ー ネ ル は そ の イ ン ス タ ン ス を 破 壊 し て 、 対 応 す る リ ソ ー ス を 解 放 し 、 再 使 用 で き る よ う に す る 。

epoll_create1()
epoll_create1
() は 、 flags が 0 の 場 合 、 現 在 で は 使 わ れ て い な い size 引 き 数 が な く な っ て い る 点 を 除 け ば epoll_create() と 同 じ で あ る 。 flags に 以 下 の 値 を ビ ッ ト 毎 の 論 理 和 (OR) で 指 定 す る こ と で 、 異 な る 動 作 を さ せ る こ と が で き る 。
EPOLL_CLOEXEC
新 し い フ ァ イ ル デ ィ ス ク リ プ タ ー に 対 し て close−on−exec (FD_CLOEXEC) フ ラ グ を セ ッ ト す る 。 こ の フ ラ グ が 役 に 立 つ 理 由 に つ い て は 、 open(2)O_CLOEXEC フ ラ グ の 説 明 を 参 照 の こ と 。

返 り 値

成 功 す る と 、 こ れ ら の シ ス テ ム コ ー ル は 非 負 の フ ァ イ ル デ ィ ス ク リ プ タ ー を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー を 示 す 値 を 設 定 す る 。

エ ラ ー

EINVAL

size が 正 で な い 。

EINVAL

(epoll_create1()) flags に 無 効 な 値 が 指 定 さ れ た 。

EMFILE

/proc/sys/fs/epoll/max_user_instances に よ っ て 指 定 さ れ て い る 、 epoll イ ン ス タ ン ス の ユ ー ザ ー 単 位 の 制 限 に 達 し た 。 更 な る 詳 細 に つ い て は epoll(7) を 参 照 の こ と 。

ENFILE

オ ー プ ン さ れ た フ ァ イ ル の 総 数 が シ ス テ ム 制 限 に 達 し た 。

ENOMEM カ ー ネ ル オ ブ ジ ェ ク ト を 作 成 す る の に 十 分 な メ モ リ ー が な か っ た 。

バ ー ジ ョ ン

epoll_create() は カ ー ネ ル 2.6 で 追 加 さ れ た 。 ラ イ ブ ラ リ に よ る サ ポ ー ト は glibc バ ー ジ ョ ン 2.3.2 以 降 で 提 供 さ れ て い る 。

epoll_create1() は カ ー ネ ル 2.6.27 で 追 加 さ れ た 。 ラ イ ブ ラ リ に よ る サ ポ ー ト は glibc バ ー ジ ョ ン 2.9 以 降 で 提 供 さ れ て い る 。

準 拠

epoll_create() は Linux 独 自 で あ る 。

注 意

初 期 の epoll_create() の 実 装 で は 、 size 引 き 数 は 、 呼 び 出 し 元 が epoll イ ン ス タ ン ス に 追 加 し よ う と す る フ ァ イ ル デ ィ ス ク リ プ タ ー 数 を カ ー ネ ル に 教 え る の に 使 わ れ て い た 。 カ ー ネ ル は こ の 情 報 を イ ベ ン ト の 情 報 を 格 納 す る 内 部 デ ー タ 構 造 に 最 初 に 割 り 当 て る 大 き さ を 決 め る 際 の ヒ ン ト と し て 使 用 し て い た (size で 渡 さ れ た ヒ ン ト よ り も 使 用 量 が 大 き く な っ た 場 合 に は 、 必 要 に 応 じ て カ ー ネ ル は 追 加 で 領 域 を 割 り 当 て る )。 現 在 で は 、 こ の ヒ ン ト は も は や 必 要 な く な っ て い る (カ ー ネ ル は ヒ ン ト な し で 必 要 な デ ー タ 構 造 の サ イ ズ を 動 的 に 変 更 す る ) が 、 今 も size に は 0 よ り 大 き い 値 を 指 定 し な け れ ば な ら な い 。 こ れ は 、 epoll を 使 う ア プ リ ケ ー シ ョ ン が 古 い カ ー ネ ル で 実 行 さ れ る 際 の 後 方 互 換 性 を 保 証 す る た め で あ る 。

関 連 項 目

close(2), epoll_ctl(2), epoll_wait(2), epoll(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。