Manpages

名 前

aio_suspend − 非 同 期 I/O 操 作 ま た は タ イ ム ア ウ ト を 待 つ

書 式

#include <aio.h>

int aio_suspend(const struct aiocb * const aiocb_list[],
int
nitems, const struct timespec *timeout);

−lrt で リ ン ク す る 。

説 明

aio_suspend() 関 数 は 、 以 下 の い ず れ か が 発 生 す る ま で 呼 び 出 し た ス レ ッ ド の 実 行 を 停 止 (suspend) す る 。

*

aiocb_list リ ス ト 内 の 非 同 期 I/O リ ク エ ス ト の う ち 、 少 な く と も 一 つ が 完 了 し た 。

*

シ グ ナ ル が 配 送 さ れ た 。

*

timeout が NULL で な い 場 合 に 、 指 定 し た 時 間 が 経 過 し た (timespec 構 造 体 の 詳 細 は nanosleep(2) を 参 照 )。

nitems 引 き 数 は aiocb_list の 要 素 数 を 指 定 す る 。 aiocb_list が 指 す リ ス ト の 各 要 素 は 、 NULL (こ れ は 無 視 さ れ る ) か 、 aio_read(3), aio_write(3), lio_listio(3) を 使 っ て I/O が 開 始 さ れ た 制 御 ブ ロ ッ ク へ の ポ イ ン タ ー で な け れ ば な ら な い 。 (aiocb 構 造 体 の 説 明 は aio(7) を 参 照 )

CLOCK_MONOTONIC が サ ポ ー ト さ れ る 場 合 、 こ の ク ロ ッ ク を 使 っ て タ イ ム ア ウ ト の 間 隔 が 計 測 さ れ る (clock_gettime(3) を 参 照 )。

返 り 値

aiocb_list で 指 定 さ れ た I/O リ ク エ ス ト の 1 つ が 完 了 し た 後 に こ の 関 数 が 返 っ た 場 合 は 、 0 が 返 さ れ る 。 そ れ 以 外 の 場 合 は 、 −1 が 返 り 、 errno に エ ラ ー を 示 す 値 に 設 定 さ れ る 。

エ ラ ー

EAGAIN 指 示 さ れ た 操 作 の ど れ も 完 了 し な い う ち に 、 呼 び 出 し が タ イ ム ア ウ ト し た 。

EINTR こ の 呼 び 出 し が シ グ ナ ル に よ っ て 終 了 さ せ ら れ た

(こ の シ グ ナ ル は 、 完 了 を 待 っ て い た 操 作 の い ず れ か の 完 了 シ グ ナ ル の 可 能 性 も あ る )。 signal(7) 参 照 。

ENOSYS

aio_suspend() は 実 装 さ れ て い な い 。

バ ー ジ ョ ン

The aio_suspend() 関 数 は glibc 2.1 以 降 で 利 用 で き る 。

準 拠

POSIX.1−2001, POSIX.1−2008.

注 意

時 間 間 隔 が 0 で あ る こ と を 指 定 す る NULL で は な い timeout を 使 っ て 、 ポ ー リ ン グ を 行 う こ と も で き る 。

aiocb_list リ ス ト で 指 定 し た 非 同 期 I/O 操 作 の う ち 、 aio_suspend() を 呼 び 出 し た 時 点 で す で に 完 了 し た も の が あ る 場 合 、 aio_suspend() は す ぐ に 返 る 。

aio_suspend() が 成 功 で 返 っ た 後 で ど の I/O 操 作 が 完 了 し た か を 特 定 す る に は 、 aio_error(3) を 使 っ て aiocb_list が 指 す aiocb 構 造 体 の リ ス ト を ス キ ャ ン す る 。

関 連 項 目

aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3), aio_return(3), aio_write(3), lio_listio(3), aio(7), time(7)

こ の 文 書 に つ い て

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