EN JA
AIO_WAITCOMPLETE(2)
AIO_WAITCOMPLETE(2) FreeBSD System Calls Manual AIO_WAITCOMPLETE(2)

名称

aio_waitcomplete非同期入出力要求の完了までの待機

ライブラリ

Standard C Library (libc, -lc)

書式

#include < aio.h>

int
aio_waitcomplete( struct aiocb **iocbp, struct timespec *timeout);

解説

aio_waitcomplete() システムコールは、非同期入出力の完了まで待ちます。完了次第、 aio_waitcomplete() は、その関数の結果を返し、元の要求に関連する構造体へのポインタを iocbp に設定します。もし、 aio_waitcomplete() 関数が呼び出される前に非同期入出力要求が完了していた場合には、完了した要求の結果を即座に返します。

timeout が NULL ポインタでない場合、それは、非同期入出力要求が完了するまで待機する最大時間を指定します。 timeout が NULL ポインタの場合は、 aio_waitcomplete() は、無期限に待機します。ポーリングする場合は、引数 timeout は、NULL ではなく、0 の値を持つ timeval 構造体を指すようにするべきです。

aio_waitcomplete() システムコールは、 aio_return() の役割もします。従って、制御ブロックは、 iocbp で返されているので、 aio_return() を呼び出すべきではありません。

戻り値

非同期入出力要求が完了した場合、 iocbp に元の要求から渡された制御ブロックを指すポインタを設定し、 read(2), write(2), fsync(2) で述べられているのと同様の状態を返します。失敗した場合、 aio_waitcomplete() は、 -1 を返し、 iocbp に NULL を設定します。そして、 errno にエラーの状況を設定します。

エラー

aio_waitcomplete() システムコールは、次の場合に失敗します:
[ EINVAL]
指定された制限時間が無効です。
[ EAGAIN]
プロセスは、まだ aio_read() や aio_write() を呼び出していません。
[ EINTR]
タイムアウトする前で、かつ非同期入出力要求が完了する前にシグナルが届きました。
[ EWOULDBLOCK]
[ EINPROGRESS]
非同期入出力要求が完了する前に、指定された制限時間に達しました。

規格

aio_waitcomplete() システムコールは、 FreeBSD 特有の拡張です。

歴史

aio_waitcomplete() システムコールは、 FreeBSD 4.0 ではじめて登場しました。

作者

aio_waitcomplete() システムコールとこのマニュアルページは、 Christopher M Sedore <cmsedore@maxwell.syr.edu>によって書かれました。
January 19, 2000 FreeBSD