IO_SUBMIT

Section: Linux Programmer's Manual (2)
Updated: 2012-07-13
Index JM Home Page
 

名前

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

関連キーワード

submit   ラッパー   無効   キュー   登録   コンテキスト   返り値   非同期   ブロック   context   引き数   提供   起動   通常   慣習   long   struct   iocb   リクエスト   制御   成功   個数   何個   リソース   構造

Linux マニュアル 一覧

関連するコマンド・関数

io_cancel.2   io_destroy.2   io_setup.2   io_getevents.2   atexit.3   aio_error.3
 

Index

名前
書式
説明
返り値
エラー
バージョン
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:01 GMT, October 11, 2026