名 前
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/ に 書 か れ て い る 。