日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
AIO_READ(2) FreeBSD システムコールマニュアル AIO_READ(2)
名称
aio_read, aio_readv -- ファイルからの非同期読み込み (REALTIME)
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <aio.h>
int
aio_read(struct aiocb *iocb);
#include <sys/uio.h>
int
aio_readv(struct aiocb *iocb);
解説
aio_read() と aio_readv() システムコールによって、呼び出したプロセスは、
オフセット iocb->aio_offset で始まる記述子 iocb->aio_fildes から読み込む
ことができます。aio_read() は、iocb->aio_buf によって指されるバッファから
iocb->aio_nbytes を読み込みむのに対して、aio_readv() は、iocb->aio_iov 配
列のメンバによって指定される iocb->aio_iovcnt バッファにデータを読み込み
ます。どちらのシステムコールも、読み込み要求が記述子にエンキューされた直
後に返ります。コールが返ってきた時点で、読み込みが完了しているかどうか分
かりません。
aio_readv() について、iovec 構造体は、readv(2) で定義されています。
_POSIX_PRIORITIZED_IO が定義され、記述子がそれをサポートするなら、キュー
に入れる操作は、呼び出しているプロセス - (マイナス) iocb->aio_reqprio と
等しい優先度で発行されます。
iocb->aio_lio_opcode 引数は、aio_read() と aio_readv() システムコールに
よって無視されます。
iocb ポインタは、進行中の間に、キューに入れられた操作のための返りまたはエ
ラー状態を決定するために、aio_return() と aio_error() への引数として後で
使用されます。
(一般的に無効の引数のために) 要求がキューに入れられないなら、呼び出しは、
要求をキューに入れずに返ります。
要求が成功してキューに入れられるなら、コンテキストとして要求の間に
iocb->aio_offset の値を修正することができるので、要求がキューに入れられた
後に、この値を参照してはなりません。
aio(4) で説明されるように操作の完了の通知を要求するために
iocb->aio_sigevent 構造体を使用することができます。
制限
iocb よって指された非同期 I/O 制御ブロック構造とその構造体の
iocb->aio_buf メンバが参照するバッファは、操作が完了するまで、有効であり
続けなければなりません。
非同期 I/O 制御バッファ iocb は、偽のコンテキスト情報をカーネルに渡すこと
を避けるために、aio_read() 呼び出しの前に、0 クリアされるべきです。
要求がキューに入れられる間、Asynchronous I/O Control Block (非同期 I/O 制
御ブロック) 構造またはバッファの内容は、許可されません。
iocb->aio_offset のファイルオフセットが、iocb->aio_fildes ためのオフセッ
トの最大を越えているなら、I/O は、起こりません。
戻り値
関数 aio_read() および aio_readv() は、処理が成功すると値 0 を返します。
そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値が設
定されます。
診断
なし。
エラー
aio_read() と aio_readv() システムコールは、次の場合に失敗します:
[EAGAIN] システムのリソース制限のために、要求が、キューに入れら
れませんでした。
[EFAULT] aio_iov の一部は、プロセスの割り付けられたアドレス空間
の外側を指しています。
[EINVAL] iocb->aio_sigevent.sigev_notify の非同期の通知方法が、
無効であるか、またはサポートしていません。
[EOPNOTSUPP] ファイル記述子 iocb->aio_fildes の非同期の読み込み操作
が、安全でなく、安全でない非同期の I/O 操作は、無効に
されます。
次の条件は、aio_read() と aio_readv() システムコールが行われたとき、同期
的に検出されるか、またはその後いつでも、非同期的に検出されます。それらが
呼び出し時に検出されるなら、aio_read() または aio_readv() は、-1 を返し、
適切に errno を設定します。そうでなければ、aio_return() システムコール
が、呼び出されなければならず、-1 を返し、aio_error() は、errno で返された
実際の値を決定するために呼び出されなければなりません。
[EBADF] iocb->aio_fildes 引数が、無効です。
[EINVAL] オフセット iocb->aio_offset が、有効ではなく、
iocb->aio_reqprio によって指定された優先度が、有効な優
先度ではないか、または iocb->aio_nbytes によって指定さ
れたバイト数が、有効ではありません。
[EOVERFLOW] ファイルが、通常のファイルであり、iocb->aio_nbytes
が、0 より大きく、iocb->aio_offset の開始オフセット
が、ファイルの終わりの前ですが、iocb->aio_fildes のオ
フセットの最大または越えています。
要求が成功してキューに入れられますが、その後にキャンセルされるか、または
エラーが起こるなら、aio_return() システムコールによって返された値が、
read(2) システムコールごとであり、aio_error() システムコールによって返さ
れた値が、read(2) システムコールからのエラーの返りの 1 つ、または次の 1
つのいずれかです:
[EBADF] iocb->aio_fildes 引数が、読み込みのために無効です。
[ECANCELED] 要求が、aio_cancel() への呼び出しによって明示的にキャ
ンセルされました。
[EINVAL] オフセット iocb->aio_offset が、無効です。
関連項目
aio_cancel(2), aio_error(2), aio_return(2), aio_suspend(2),
aio_waitcomplete(2), aio_write(2), sigevent(3), siginfo(3), aio(4)
規格
aio_read() システムコールは、IEEE Std 1003.1 (``POSIX.1'') に適合するはず
です。aio_readv() システムコールは、FreeBSD の拡張で、移植性のあるコード
で使用するべきではありません。
歴史
aio_read() システムコールは、FreeBSD 3.0 ではじめて登場しました。
aio_readv() システムコールは、FreeBSD 13.0 ではじめて登場しました。
作者
このマニュアルページは、Terry Lambert <terry@whistle.com> によって書かれ
ました。
バグ
iocb->_aiocb_private の無効の情報は、カーネルを混乱させるかもしれません。
FreeBSD 13.2 January 2, 2021 FreeBSD 13.2