IO_SETUP

Section: Linux Programmer's Manual (2)
Updated: 2020-12-21
Index JM Home Page
 

名前

io_setup - 非同期 I/O コンテキストを作成する  

書式

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

long io_setup(unsigned nr_events, aio_context_t *ctx_idp);

注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。  

説明

注意:このページは生の Linux のシステムコールのインターフェースについて説明している。 libaio で提供されるラッパー関数では ctx_idp 引数に違う型が使われている。「注意」を参照。

io_setup() システムコールは、 nr_events 個のイベントを 同時に実行に適した非同期 I/O (AIO) コンテキストの作成を行う。 ctx_idp 引数は、すでに存在する AIO コンテキストを指していてはならず、 io_setup() の呼び出しの前に 0 に初期化されていなければならない。 AIO コンテキストの作成に成功すると、 *ctx_idp に作成された AIO コンテキストへのポインターがセットされる。  

返り値

成功した場合、 io_setup() は 0 を返す。 失敗時の返り値については、「注意」の節を参照すること。  

エラー

EAGAIN
指定された nr_events がイベント数の上限を越えている。イベント数の上限は /proc/sys/fs/aio-max-nr で定義されている (proc(5) 参照)。
EFAULT
ctx_idp に無効なポインターが指定されている。
EINVAL
ctx_idp が初期化されていないか、指定された nr_events が内部の 制限値を越えている。また、 nr_events は 0 より大きい値に設定 すべきである。
ENOMEM
必要なカーネルリソースを得られない。
ENOSYS
io_setup() がこのアーキテクチャーでは実装されていない。
 

バージョン

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

準拠

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

注意

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

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

関連項目

io_cancel(2), io_destroy(2), io_getevents(2), io_submit(2), aio(7)  

この文書について

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

関連キーワード

setup   ラッパー   コンテキスト   events   非同期   提供   イベント   返り値   context   初期化   成功   ポインター   上限   起動   通知   通常   慣習   インターフェース   同時   セット   proc   無効   内部   制限   カーネル

Linux マニュアル 一覧

関連するコマンド・関数

io_getevents.2   io_destroy.2   io_cancel.2   io_submit.2   setup.2   spu_create.2
 

Index

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

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