.\" Copyright (C) 2010, Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI .\" all rights reserved. .\" Translated 2012-05-05, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" .TH LIO_LISTIO 3 2012\-05\-08 "" "Linux Programmer's Manual" .SH 名前 lio_listio \- リストの I/O リクエストを開始する .SH 書式 .nf \fB#include \fP \fBint lio_listio(int \fP\fImode\fP\fB, struct aiocb *const \fP\fIaiocb_list\fP\fB[],\fP \fB int \fP\fInitems\fP\fB, struct sigevent *\fP\fIsevp\fP\fB);\fP \fI\-lrt\fP でリンクする。 .fi .SH 説明 \fBlio_listio\fP() 関数は、配列 \fIaiocb_list\fP で指定された I/O 操作の リストをそれぞれ開始する。 \fImode\fP 引き数には以下のいずれかの値を指定する。 .TP 12 \fBLIO_WAIT\fP 全ての操作が完了するまで、呼び出しは停止 (block) する。 \fIsevp\fP 引き数は無視される。 .TP \fBLIO_NOWAIT\fP I/O 操作は処理を行うためのキューに入れられ、呼び出しは直ちに返る。 全ての I/O 操作が完了すると、 \fIsevp\fP 引き数で指定した非同期通知が 行われる。詳細は \fBsigevent\fP(7) を参照。\fIsevp\fP が NULL の場合、 非同期通知は行われない。 .PP \fIaiocb_list\fP 引き数は、I/O 操作を指定する \fIaiocb\fP 構造体へのポインター の配列である。指定された操作の実行順序は規定されていない。 \fInitems\fP 引き数は、配列 \fIaiocb_list\fP の大きさを指定する。 \fIaiocb_list\fP 内のヌルポインターは無視される。 \fIaiocb_list\fP の各制御ブロックでは、 \fIaio_lio_opcode\fP フィールドで開始する I/O 操作を指定する。 \fIaio_lio_opcode\fP には以下の値が指定できる。 .TP 10 \fBLIO_READ\fP 読み出し操作を開始する。操作はキューに入れられ、 この制御ブロックを指定して \fBaio_read\fP(3) の呼び出しが行われる。 .TP \fBLIO_WRITE\fP 書き込み操作を開始する。操作はキューに入れられ、 この制御ブロックを指定して \fBaio_write\fP(3) の呼び出しが行われる。 .TP \fBLIO_NOP\fP この制御ブロックを無視する。 .PP 各制御ブロックの残りのフィールドは、 \fBaio_read\fP(3) や \fBaio_write\fP(3) の場合と同じ意味を持つ。 各制御ブロックの \fIaio_sigevent\fP フィールドは、 個々の I/O 操作で通知方法を指定するのに使用される (\fBsigevent\fP(7) 参照)。 .SH 返り値 \fImode\fP が \fBLIO_NOWAIT\fP の場合、 \fBlio_listio\fP() は全ての操作が 正常にキューに入れられた場合に 0 を返す。 そうでない場合は、\-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。 \fImode\fP が \fBLIO_WAIT\fP の場合、 \fBlio_listio\fP() は全ての操作が 正常に完了した場合に 0 を返す。 そうでない場合は、\-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。 \fBlio_listio\fP() の返り値から得られる情報は、関数呼び出し自体に関する ものだけであり、個々の I/O 操作に関する情報は得られない。 個々の I/O 操作は失敗することがあるが、これにより他の I/O 操作が完了 しなくなるといったことはない。 \fBaio_error\fP(3) を使うと、 \fIaiocb_list\fP の個々の I/O 操作のステータスを知ることができる。 ある I/O 操作が完了すると、その終了ステータスは\fBaio_return\fP(3) を使う ことで取得できる。個々の I/O 操作は \fBaio_read\fP(3) や \fBaio_write\fP(3) に書かれている理由で失敗する場合がある。 .SH エラー \fBlio_listio\fP() 関数は以下の理由で失敗する。 .TP \fBEAGAIN\fP リソースが足りない。 .TP \fBEAGAIN\fP .\" Doesn't happen in glibc(?) \fInitems\fP で指定された数の I/O 操作を行うと、 非同期 I/O 操作の数が上限 \fBAIO_MAX\fP を超えてしまう状況であった。 .TP \fBEINVAL\fP .\" Doesn't happen in glibc(?) \fImode\fP が不正であるか、 \fInitems\fP が上限 \fBAIO_LISTIO_MAX\fP を超えている。 .TP \fBEINTR\fP \fImode\fP が \fBLIO_WAIT\fP で、全ての I/O 操作が完了する前にシグナルが 捕捉された (非同期 I/O の完了通知に使用されるシグナルの場合もこれに 該当する)。 .TP \fBEIO\fP .\" e.g., ioa_reqprio or aio_lio_opcode was invalid \fIaiocb_list\fP で指定された操作の中に失敗したものがあった。 アプリケーションは、 \fBaio_return\fP(3) を使用して、 個々の操作のステータスを確認することができる。 .PP \fBlio_listio\fP がエラー \fBEAGAIN\fP, \fBEINTR\fP, \fBEIO\fP で失敗した場合、 \fIaiocb_list\fP で指定した操作のいくつかは開始されていることがある。 \fBlio_listio\fP が他の理由で失敗した場合には、 どの I/O 操作も開始されていない。 .SH バージョン The \fBlio_listio\fP() 関数は glibc 2.1 以降で利用できる。 .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 注意 .\" or the control block of the operation 使用前に制御ブロックを 0 で埋めるのは良い考えである。 I/O 操作の実行中は制御ブロックを変更してはならない。データの読み書き先 のバッファー領域に I/O 操作の実行中にアクセスしてはならない。さもないと、 どのような結果になるか分からない。また、関係するメモリー領域も有効な状態 のままにしておかなければならない。 同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、 どのような結果になるかは不定である。 .SH 関連項目 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_return\fP(3), \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBaio\fP(7) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。