EN JA
AIO_MLOCK(2)
AIO_MLOCK(2) FreeBSD System Calls Manual AIO_MLOCK(2)

名称

aio_mlock非同期 mlock(2) 操作

ライブラリ

Standard C Library (libc, -lc)

書式

#include < aio.h>

int
aio_mlock( struct aiocb *iocb);

解説

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 ではじめて登場しました。

作者

システムコールは、 Gleb Smirnoff <glebius@FreeBSD.org>によって導入されました。
June 3, 2013 FreeBSD