標準
標準/拡張機能 |
C/C++ |
依存項目 |
XPG4.2
Single UNIX Specification、バージョン 3
|
両方 |
|
形式
#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/mman.h>
int msync(void *addr, size_t len, int flags);
機能説明
msync() 関数は、[addr, addr + len) の範囲の
ページの変更コピーをすべて基礎ハードウェアに
書き込むか、あるいはすべてのコピーを無効にします。その結果、それ以降のページへの参照が、ページの
永続記憶装置のロケーションからシステムによって取得されます。
flags 引数は以下のとおりです。
- MS_ASYNC
- 非同期書き込みの実行
- MS_INVALIDATE
- マッピングの無効化
- MS_SYNC
- 同期書き込みの実行
この関数は、現在の内容をメモリー領域に突き合わせるため、ファイルの内容を同期化します。
- 呼び出しの前に行われたメモリー領域への書き込み参照は
すべて、そのファイルに関するそれ以降の読み取り操作により
可視である。
- 呼び出し以前のファイルの同一部分への書き込みが、メモリー領域への読み取り参照で可視であるかどうかは
未指定である。
- 指定の範囲の未変更ページも基礎ハードウェアに
書き込まれるかどうかは未指定である。
flags が MS_ASYNC の場合、この関数は、すべての書き込み操作がスケジュールされるとただちに
戻ることができます。一方、flags が MS_SYNC の
場合、この関数は、すべての書き込み操作が完了するまで
戻りません。
MS_INVALIDATE は、現在のファイル内容を
突き合わせるため、メモリー領域の内容を同期化します。
- 呼び出しの前に行われたファイルのマップ部分への書き込み
はすべて、マップ済みメモリー領域へのそれ以降の
読み取り参照により可視である。
- MAP_SHARED を使ってファイルの同じ部分にマップされたメモリー領域への、い
ずれかのプロセスによる、呼び出し前の書き込み参照は、その領域の読み取り参照によっ
て可視であるかどうかは未指定である。
msync() によりファイルへの書き込みが行われると、ファイルの st_ctime フィールドおよび st_mtime フィールドには、更新のマークが付きます。
戻り値
正常に実行された場合、msync() は 0 を戻します。
正常に実行されなかった場合、msync() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EINVAL
- addr 引数が sysnonf の戻す
ページ・サイズの倍数ではありません。
- EIO
- ファイル・システムの読み取り中または書き込み中に、入出力エラーが発生しました。
- ENOMEM
- [addr, addr + range
[addr, addr + len) are len) の範囲の一部またはすべてのアドレスが、プロセスのアドレス・スペースで無効です。または、マップされていない
ページが指定されています。