AIO_MLOCK(2) | FreeBSD System Calls Manual | AIO_MLOCK(2) |
名称
aio_mlock — 非同期 mlock(2) 操作ライブラリ
Standard C Library (libc, -lc)解説
aio_mlock() システムコールによって、呼び出しているプロセスは、 iocb->aio_buf で始まる iocb->aio_nbytes バイトの仮想アドレス範囲に関連した物理ページをメモリにロックすることができます。ロックする要求がキューに入れられた直後に、呼び出しは、返ります。操作は、呼び出しが返る時点で完了するかもしれないし、完了しなかったかもしれません。iocb ポインタは、進行中の間にキューに入れる操作のためのリターンまたはエラー状態を決定するために aio_return() と aio_error() への引数としてその後に使用されます。
(一般的に、 aio(4) の制限のために) 要求をキューに入れることができなかったなら、呼び出しは、要求をキューに入れずに返ります。
制限
iocb によって指された Asynchronous I/O Control Block (非同期 I/O 制御ブロック) 構造と参照されるその構造体の iocb->aio_buf メンバであるバッファは、操作が完了するまで、有効なままでなければなりません。このため、これらのオブジェクトのための自動 (スタック) 変数の使用は、やめられます。非同期 I/O 制御バッファ iocb は、偽りのコンテキスト情報をカーネルに渡すことを避けるために aio_mlock() 呼び出しの前に 0 にされるべきです。
要求がキューに入れられた後で、要求が完了する前でない、 Asynchronous I/O Control Block (非同期 I/O 制御ブロック) 構造またはバッファの内容の修正は、許可されません。
戻り値
The aio_mlock() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.エラー
aio_read() システムコールは、次の場合に失敗します:- [ EAGAIN]
- 要求がシステムのリソース制限のためにキューに入れられませんでした。
- [ ENOSYS]
- aio_mlock() システムコールは、サポートされていません。
要求が成功してキューに入れられるが、続いてキャンセルされるか、またはエラーが生じるなら、 aio_return() システムコールによって返された値は、 mlock(2) システムコールごとであり、 aio_error() システムコールによって返された値は、 mlock(2) システムコールから返されたエラーの 1 つであり、要求が aio_cancel() への呼び出しによって明示的にキャンセルされたなら、 ECANCELED です。
移植性
aio_mlock() システムコールは、 FreeBSD の拡張で、移植性のあるコードで使用されるべきではありません。歴史
aio_mlock() システムコールは、 FreeBSD 10.0 ではじめて登場しました。作者
システムコールは、 <glebius@FreeBSD.org>によって導入されました。June 3, 2013 | FreeBSD |