aio_waitcomplete(2) FreeBSD 一般コマンドマニュアル

aio_waitcomplete

前のページ 上に戻る 次のページ

aio_waitcomplete




書式

     #include <aio.h>

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


解説

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

     timeout がヌルポインタでない場合、それは非同期入出力要求が完了するまで待
     機する最大時間を指定します。 timeout がヌルポインタの場合は、
     aio_waitcomplete() は無期限に待機します。ポーリングする場合は、引数
     timeout はヌルではなく、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_cancel(2), aio_error(2), aio_read(2), aio_return(2), aio_suspend(2),
     aio_write(2), fsync(2), read(2), write(2)


規格



ABELNET VPSサービス