名 前
io_submit − 非 同 期 I/O ブ ロ ッ ク を 処 理 待 ち キ ュ ー に 登 録 す る
書 式
#include <linux/aio_abi.h> /* 必 要 な 型 の 定 義 */
int io_submit(aio_context_t ctx_id, long nr, struct iocb **iocbpp); 注 : こ の シ ス テ ム コ ー ル に は glibc の ラ ッ パ ー 関 数 は 存 在 し な い 。 「 注 意 」 の 節 を 参 照 。
説 明
io_submit() シ ス テ ム コ ー ル は 、 AIO コ ン テ キ ス ト ctx_id に nr 個 の I/O リ ク エ ス ト を 処 理 待 ち と し て キ ュ ー に 追 加 す る 。 iocbpp 引 き 数 は 、 AIO コ ン テ キ ス ト ctx_id に 登 録 さ れ る nr 個 の AIO 制 御 ブ ロ ッ ク の 配 列 に な っ て い な け れ ば な ら な い 。
返 り 値
成 功 す る と 、 io_submit() は 登 録 し た iocb の 個 数 を 返 す (nr が 0 の 場 合 は 0 を 返 す )。 失 敗 時 の 返 り 値 に つ い て は 、 「 注 意 」 の 節 を 参 照 す る こ と 。
エ ラ ー
EAGAIN 何 個 か の |
iocb を キ ュ ー に 入 れ る の に 必 要 な リ ソ ー ス が 得 ら れ な い 。 | |
EBADF 先 頭 の |
iocb に 指 定 さ れ た フ ァ イ ル デ ィ ス ク リ プ タ ー が 無 効 で あ る 。 | |
EFAULT デ ー タ 構 |
造 の 中 に 無 効 な デ ー タ を 指 し て い る も の が あ る 。
EINVAL |
ctx_id で 指 定 さ れ た AIO コ ン テ キ ス ト が 無 効 で あ る 。 nr が 0 未 満 で あ る 。 *iocbpp[0] の iocb が 適 切 に 初 期 化 さ れ て い な い か 、 指 定 さ れ た 操 作 が そ の iocb 中 の フ ァ イ ル デ ィ ス ク リ プ タ ー に 対 し て 無 効 で あ る 。 | ||
ENOSYS |
io_submit() は こ の ア ー キ テ ク チ ャ ー で は 実 装 さ れ て い な い 。 |
バ ー ジ ョ ン
非 同 期 I/O シ ス テ ム コ ー ル は Linux 2.5 で 初 め て 登 場 し た 。
準 拠
io_submit() は Linux 固 有 で あ り 、 移 植 を 想 定 し た プ ロ グ ラ ム で 使 用 す べ き で は な い 。
注 意
glibc は
こ の シ ス テ ム
コ ー ル の ラ ッ
パ ー 関 数 を 提
供 し て い な い
。 syscall(2) を 使 っ
て こ の シ ス テ
ム コ ー ル を 起
動 す る こ と が
で き る 。 し か
し 、 た い て い
は 、 こ の シ ス
テ ム コ ー ル を
呼 び 出 し た い
の で は な く 、
libaio が 提 供 し て
い る io_submit ラ ッ
パ ー 関 数 を 呼
び 出 し た い 場
合 が ほ と ん ど
で あ ろ う 。
libaio の ラ ッ パ ー 関 数 で は ctx_id 引 き 数 に 別 の 型 (io_context_t) が 使 わ れ る こ と に 注 意 す る こ と 。 ま た 、 libaio の ラ ッ パ ー 関 数 は 、 エ ラ ー の 通 知 が 通 常 の C ラ イ ブ ラ リ の 慣 習 に し た が っ て お ら ず 、 エ ラ ー の 場 合 に は 負 の エ ラ ー 番 号 (エ ラ ー の 節 に 列 挙 さ れ て い る 値 の 一 つ を 負 に し た も の ) が 返 り 値 と な る 点 に も 注 意 す る こ と 。 syscall(2) 経 由 で シ ス テ ム コ ー ル を 起 動 す る と 、 返 り 値 は 通 常 の エ ラ ー 通 知 の 慣 習 に し た が っ て も の と な り 、 エ ラ ー の 場 合 に は −1 が 返 り 、 errno に エ ラ ー を 示 す (正 の ) 値 が 設 定 さ れ る 。
関 連 項 目
io_cancel(2), io_destroy(2), io_getevents(2), io_setup(2), aio(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。