Manpages

名 前

io_getevents − 完 了 キ ュ ー か ら 非 同 期 I/O イ ベ ン ト を 読 み 出 す

書 式

#include <linux/aio_abi.h> /* 必 要 な 型 の 定 義 */
#include <linux/time.h>
/* ’struct timespec’ の 定 義 */

int io_getevents(aio_context_t ctx_id, long min_nr, long nr,
struct io_event *
events, struct timespec *timeout); : こ の シ ス テ ム コ ー ル に は glibc の ラ ッ パ ー 関 数 は 存 在 し な い 。 「 注 意 」 の 節 を 参 照 。

説 明

io_getevents() シ ス テ ム コ ー ル は 、 少 な く と も min_nr の 、 最 大 nr 個 の イ ベ ン ト を 、 ctx_id 引 き 数 で 指 定 さ れ た AIO (非 同 期 I/O) コ ン テ キ ス ト の 完 了 キ ュ ー か ら 読 み 出 そ う と す る 。 timeout は イ ベ ン ト 読 み 出 し の 待 ち 時 間 の 合 計 を 指 定 す る 。 タ イ ム ア ウ ト に NULL を 指 定 し た 場 合 、 少 な く と も min_nr 個 の イ ベ ン ト が 読 み 出 さ れ る ま で 待 つ こ と を 意 味 す る 。 注 意 点 を 以 下 に あ げ る : timeout は 相 対 的 な 指 定 で あ る 。

返 り 値

成 功 す る と 、 io_getevents() は 読 み 出 し た イ ベ ン ト 数 を 返 す 。 イ ベ ン ト が 一 つ も 読 み 出 さ れ な か っ た 場 合 は 0 が 返 さ れ 、 timeout 時 間 が 経 過 し た 場 合 は min_nr 未 満 の 値 が 返 さ れ る 。 失 敗 時 の 返 り 値 に つ い て は 、 「 注 意 」 の 節 を 参 照 す る こ と 。

エ ラ ー

EFAULT

events ま た は timeout が 無 効 な ポ イ ン タ ー で あ る 。

EINVAL

ctx_id が 無 効 で あ る 。 も し く は 、 min_nr ま た は nr が 範 囲 外 の 値 で あ る 。

EINTR

シ グ ナ ル ハ ン ド ラ ー に よ り 割 り 込 ま れ た 。 signal(7) 参 照 。
ENOSYS

io_getevents() が こ の ア ー キ テ ク チ ャ ー で は 実 装 さ れ て い な い 。

バ ー ジ ョ ン

非 同 期 I/O シ ス テ ム コ ー ル は Linux 2.5 で 初 め て 登 場 し た 。

準 拠

io_getevents() は Linux 固 有 で あ り 、 移 植 を 想 定 し た プ ロ グ ラ ム で 使 用 す べ き で は な い 。

注 意

glibc は こ の シ ス テ ム コ ー ル の ラ ッ パ ー 関 数 を 提 供 し て い な い 。 syscall(2) を 使 っ て こ の シ ス テ ム コ ー ル を 起 動 す る こ と が で き る 。 し か し 、 た い て い は 、 こ の シ ス テ ム コ ー ル を 呼 び 出 し た い の で は な く 、
libaio
が 提 供 し て い る io_getevents ラ ッ パ ー 関 数 を 呼 び 出 し た い 場 合 が ほ と ん ど で あ ろ う 。

libaio の ラ ッ パ ー 関 数 で は ctx_id 引 き 数 に 別 の 型 (io_context_t) が 使 わ れ る こ と に 注 意 す る こ と 。 ま た 、 libaio の ラ ッ パ ー 関 数 は 、 エ ラ ー の 通 知 が 通 常 の C ラ イ ブ ラ リ の 慣 習 に し た が っ て お ら ず 、 エ ラ ー の 場 合 に は 負 の エ ラ ー 番 号 (エ ラ ー の 節 に 列 挙 さ れ て い る 値 の 一 つ を 負 に し た も の ) が 返 り 値 と な る 点 に も 注 意 す る こ と 。 syscall(2) 経 由 で シ ス テ ム コ ー ル を 起 動 す る と 、 返 り 値 は 通 常 の エ ラ ー 通 知 の 慣 習 に し た が っ て も の と な り 、 エ ラ ー の 場 合 に は −1 が 返 り 、 errno に エ ラ ー を 示 す (正 の ) 値 が 設 定 さ れ る 。

バ グ

無 効 な ctx_id を 指 定 し た 場 合 、 エ ラ ー EINVAL が 生 成 さ れ ず 、 セ グ メ ン テ ー シ ョ ン 違 反 (segmentation fault) が 発 生 す る 場 合 が あ る 。

関 連 項 目

io_cancel(2), io_destroy(2), io_setup(2), io_submit(2), aio(7), time(7)

こ の 文 書 に つ い て

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