MSYNC
Section: Linux Programmer's Manual (2)
Updated: 2003-08-21
Index
JM Home Page
roff page
名前
msync - ファイルをマップしたメモリと同期させる
書式
#include <sys/mman.h>
int msync(void *start, size_t length, int flags);
説明
msync()
は
mmap(2)
を使ってメモリにマップされたファイルの、
メモリ上のコピーになされた変更をディスクに反映させる。
この関数を使用しないと、
munmap(2)
が呼び出されるまで変更が書き戻される保証はない。
より正確には、ファイルのうち
start
から始まり長さ
length
のメモリ領域に対応する部分が更新される。
flags
引数にはビット
MS_ASYNC,
MS_SYNC,
MS_INVALIDATE
を設定することができるが、
MS_ASYNC
と
MS_SYNC
を同時に指定することはできない。
MS_ASYNC
は更新を予定に組み込むことを表し、呼び出しは直ちに返る。
MS_SYNC
は更新を要求し、更新が完了するまで待つ。
MS_INVALIDATE
は(たった今書き込んだ新しい値でマッピングを更新することができるように)
同じファイルに対する他のマッピングを無効にすることを要求する。
返り値
成功した場合、 0 が返る。エラーの場合、 -1 が返り、
errno
が適切に設定される。
エラー
- EBUSY
-
I flags
に
MS_INVALIDATE
が指定されたが、指定されたアドレス範囲にロックが存在する。
- EINVAL
-
start
が PAGESIZE の倍数でない。または、
flags
に
MS_ASYNC、MS_INVALIDATE、MS_SYNC
以外のビットが設定された。
または、
flags
に
MS_SYNC
と
MS_ASYNC
の両方が設定された。
- ENOMEM
-
指定されたメモリ (またはその一部) がマップされていない。
準拠
POSIX.1-2001.
この関数は Linux 1.3.21 で導入されたが、
ENOMEM
ではなく
EFAULT
が使われていた。
これは Linux 2.4.19 で POSIX における値
ENOMEM
に変更された。
可用性
msync()
が使用可能な POSIX システムでは
_POSIX_MAPPED_FILES
と
_POSIX_SYNCHRONIZED_IO
の両方が <unistd.h> で 0 より大きい値に定義される。
(sysconf(3)
を参照すること。 )
関連項目
mmap(2)
B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 可用性
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:54 GMT, November 19, 2007