IO_GETEVENTS

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

名前

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 のラッパー関数は存在しない。「注意」の節を参照。  

説明

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

The io_getevents() system call attempts to read at least min_nr events and up to nr events from the completion queue of the AIO context specified by ctx_id.

The timeout argument specifies the amount of time to wait for events, and is specified as a relative timeout in a structure of the following form:

struct timespec {
    time_t tv_sec;      /* seconds */
    long   tv_nsec;     /* nanoseconds [0 .. 999999999] */ };

The specified time will be rounded up to the system clock granularity and is guaranteed not to expire early.

Specifying timeout as NULL means block indefinitely until at least min_nr events have been obtained.  

返り値

成功すると、 io_getevents() は読み出したイベント数を返す。 timeout 時間が経過した場合は、 0 もしくは min_nr 未満の値が返る。呼び出しがシグナルハンドラーに割り込まれた場合にも、 0 もしくは min_nr 未満の値が返ることがある。

失敗時の返り値については、「注意」の節を参照すること。  

エラー

EFAULT
events または timeout が無効なポインターである。
EINTR
シグナルハンドラーにより割り込まれた。 signal(7) 参照。
EINVAL
ctx_id が無効である。もしくは、min_nr または nr が 範囲外の値である。
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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。


関連キーワード

エラー, 注意, getevents, GETEVENTS, ctx, 関数, timeout, events, min, libaio 

Index

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

This document was created by man2html, using the manual pages.
Time: 13:30:29 GMT, January 09, 2022