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

名称

msyncマップされたリージョンを同期化する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/mman.h>

int
msync( void *addr, size_t len, int flags);

解説

msync() システムコールは、あらゆる修正されたページをファイルシステムに書き込み、ファイルの更新時刻を更新します。 len が 0 であるなら、 addr を含んでいるリージョン (region) 内の修正されたすべてのページは、フラッシュされます。 len が 0 でないなら、 addr と続く len-1 の位置を含んでいるページだけが検査されます。 flags 引数は、次のように指定されます:

MS_ASYNC
直ちに返ります。
MS_SYNC
同期の書き込みを実行します。
MS_INVALIDATE
すべてのキャッシュされたデータを無効にします。

戻り値

The msync() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

msync() システムコールは、次の場合に失敗します:
[ EBUSY]
指定された領域のページのいくつかまたはすべてが、ロックされていて、 MS_INVALIDATE が指定されています。
[ EINVAL]
addr 引数が、ハードウェアのページサイズの倍数ではありません。
[ EINVAL]
len 引数が、大きすぎるか、または負です。
[ EINVAL]
flags 引数が MS_ASYNC と MS_INVALIDATE の両方でした。これらのフラグのうちの 1 つだけが許可されています。
[ EIO]
指定された領域で少なくとも 1 つのページを書き込んでいる間にエラーが生じました。

歴史

msync() システムコールは、 4.4BSD ではじめて登場しました。

バグ

BSD は、一貫性のあるファイルシステムバッファキャッシュを実装しているので、 msync() システムコールは、通常必要ではありません。しかしながら、ダーティ (汚い) VM ページとファイルシステムバッファを関連付けるために使用され、したがって、後ではなくすぐに物理的なメディアにそれらをフラッシュします。
March 18, 2012 FreeBSD