JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... る。 説明 aio_return () 関数は aiocbp で指された制御ブロックにおける非同期 I/O リクエストの最終的な返り値を返す。 ( aiocb 構造体の説明は aio (7) を参照) この関数は、 aio_error (3) が EINPROGRESS 以 ... 外を返した後で、 与えられたリクエストに対して 1 回だけ呼ばれるべきである。 返り値 非同期 I/O 操作が完了した場合、この関数は、同期呼び出し read (2), write (2), fsync (2), fdatasync (2) が返すのと同じ値を返す。エラ ... ーの場合、 -1 が返され、 errno が適切に設定される。 非同期 I/O 操作が完了していない場合、 aio_return () の返り値とその影響は不定である。 エラー EINVAL aiocbp が、返り値がまだ取得され ... ... ) 関数は、 aiocbp->aio_fildes で関連付けられているまだ 完了していない全ての非同期 I/O 操作を同期させる。 ( aiocb 構造体の説明は aio (7) を参照) より正確に言うと、 op が O_SYNC の場合、現在キューに入れられ ... の I/O 操作は、 fsync (2) が呼ばれたかのように完了されるだろう。 また op が O_DSYNC の場合、この呼び出しは fdatasync (2) の非同期版となる。 この関数はリクエストを行うだけである点に注意すること。 I/O の完了の待ち合わせは行わない。 aiocbp で指される構造体 ... に使用されるのは aio_sigevent フィールド ( sigevent 構造体、説明は sigevent (7) 参照) のみである。このフィールドは、完了時の非同期通知に使用 したいタイプを示す。 その他のフィールドは無視される。 返り値 成功した場合 (同期リクエストをキューに入れるのに成功 ... ... ある。 POSIX AIO インターフェースは以下の関数で構成されている。 aio_read (3) 読み出しリクエストをキューに入れる。 read (2) の非同期版である。 aio_write (3) 書き込みリクエストをキューに入れる。 write (2) の非同期版である。 aio_fsync (3) ファイルディスクリプ ... ターに対して行われた I/O 操作の 同期 (sync) リクエストをキューに入れる。 fsync (2) や fdatasync (2) の非同期版である。 aio_error (3) キューに入れられた I/O リクエストのエラー状態を取得する。 aio_return (3) 完了した I/O リクエストの終 ... ない I/O リクエストのキャンセルを試みる。 lio_listio (3) 一回の関数呼び出しで複数の I/O リクエストをキューに入れる。 aiocb ("非同期 I/O 制御ブロック (asynchronous I/O control block)") 構造体は、I/O 操作を制御するパラメーターを定義する。この型の引数は上記 ... ... _error () 関数は aiocbp で指された制御ブロックでの非同期 I/O リクエス トのエラー状態を返す。( aiocb 構造体の説明は aio (7) を参照) 返り値 この関数の返り値は以下のいずれかである。 ... だ完了していない場合) * ECANCELED (リクエストがキャンセルされた場合) * 0 (リクエストが正常に完了した場合) * 正のエラー番号 (非同期 I/O 命令が失敗した場合)。 同期の read (2), write (2), fsync (2), fdatasync (2) の呼び出しの場合で errno 変数に格納されるの ... と同じ値になる。 エラー EINVAL aiocbp が、まだ返り値 (return status) ( aio_return (3) を参照) が取得されていない非同期 I/O リクエストの制御ブロックを指していない。 ENOSYS aio_error () は実装されていない。 バージョン aio_error () 関数は glibc ... ... バッファーに記載された I/O リクエストを キューに入れる。この関数は read (2) の非同期版である。 呼び出し read(fd, buf, count) の各引数は aiocb が指す構造体の aio_fildes , aio_buf , aio_nbytes に (この順序で) 対 ... セットに関係なく、絶対位置 aiocbp->aio_offset を開始点として行われる。呼び出しの後のファイルオフセットは規定されていない。 「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」 ということである。 呼び出しから戻った時に、読み込みは完 ... トできる。 完了した I/O 操作の返り値は aio_return (3) で取得できる。 aiocbp->aio_sigevent を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は sigevent (7) を参照。 _POSIX_PRIORITIZED_IO が定義されていて、 かつファイルがこれをサポート ... ... 指すバッファーに記載された I/O リクエストをキューに入れる。この関数は write (2) の非同期版である。 呼び出し write(fd, buf, count) の各引数は aiocb が指す構造体の aio_fildes , aio_buf , aio_nbytes に (この順序で) ... に、 aio_write () の呼び出しが行われたのと同じ順序で書き込まれる。この呼び出しの後のファイルオフセットは規定されていない。 「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」 ということである。 呼び出しから戻った時に、書き込みは完 ... トできる。 完了した I/O 操作の返り値は aio_return (3) で取得できる。 aiocbp->aio_sigevent を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は sigevent (7) を参照。 _POSIX_PRIORITIZED_IO が定義されていて、 かつファイルがこれをサポート ... ... ンクする。 説明 aio_cancel () 関数は、ファイルディスクリプター fd についての完了して いない非同期 I/O リクエストをキャンセルしようとする。 aiocbp が NULL の場合、そのような全てのリクエストがキャンセルされる。 aiocbp が N ... 述されたリクエ ストのみがキャンセルされる。( aiocb 構造体の説明は aio (7) を参照) キャンセルされたリクエストに対して、通常の非同期通知が起こる ( aio (7) と sigevent (7) を参照)。 リクエストの返り値 ( aio_return (3)) は -1 に設定され、 リクエストのエラー状 ... 実行後と同じように終了する。 (この場合、 aio_error (3) はステータス EINPROGRESSS を返す)。 aiocbp が NULL でなく、かつ fd が非同期操作が開始されたファイルディスクリプターと異なる場合、 生じる結果は不定である。 どの操作をキャンセルできるかは、実装定義であ ... ... aio_suspend () 関数は、以下のいずれかが発生するまで 呼び出したスレッドの実行を停止 (suspend) する。 * aiocb_list リスト内の非同期 I/O リクエストのうち、少なくとも一つが完了した。 * シグナルが配送された。 * timeout が NULL でない場合に、指定した時間が経 ... 時間間隔が 0 であることを指定する NULL ではない timeout を使って、ポーリングを行うこともできる。 aiocb_list リストで指定した非同期 I/O 操作のうち、 aio_suspend () を呼び出した時点ですでに完了したものがある場合、 aio_suspend () はすぐに返る。 aio_suspend ... 構造体のリストを スキャンする。 バグ aio_suspend () の glibc 実装は、 POSIX.1 の要件を満たしていないが、 async-signal-safe (非同期シグナルで安全) ではない。 関連項目 aio_cancel (3), aio_error (3), aio_fsync (3), aio_read (3), aio_return (3), aio_write (3 ... ... gaicb * req ); -lanl でリンクする。 説明 getaddrinfo_a () 関数は getaddrinfo (3) と同じ処理を実行するが、 複数の名前検索を非同期で実行でき、 検索処理の完了の通知ができる点が異なる。 mode 引数は以下の値のいずれかを指定する。 GAI_WAIT 検索を同期で実行する ... 。 呼び出しは検索が完了するまで停止 (block) する。 GAI_NOWAIT 検索を非同期で実行する。 呼び出しは直ちに返り、 要求はバックグラウンドで処理される。 以下の sevp 引数の議論を参照。 配列 list は処理すべ ... 数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ばれなかったかのように処理が行 ... ... gaicb * req ); -lanl でリンクする。 説明 getaddrinfo_a () 関数は getaddrinfo (3) と同じ処理を実行するが、 複数の名前検索を非同期で実行でき、 検索処理の完了の通知ができる点が異なる。 mode 引数は以下の値のいずれかを指定する。 GAI_WAIT 検索を同期で実行する ... 。 呼び出しは検索が完了するまで停止 (block) する。 GAI_NOWAIT 検索を非同期で実行する。 呼び出しは直ちに返り、 要求はバックグラウンドで処理される。 以下の sevp 引数の議論を参照。 配列 list は処理すべ ... 数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ばれなかったかのように処理が行 ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。