msyncのヘルプ・マニュアル
日本語 英語
msync --help
man msync
MSYNC(2) Linux Programmer’s Manual MSYNC(2)
名前
msync - ファイルをマップしたメモリと同期させる
書式
#include
int msync(void *addr, size_t length, int flags);
説明
msync() は mmap(2) を使ってメモリにマップされたファイルの、メモリ上のコ
ピーになされた変更をディスクに反映させる。この関数を使用しないと、 mun-
map(2) が呼び出されるまで変更が書き戻される保証はない。より正確には、フ
ァイルのうち addr から始まり長さ 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 addr が 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 の両方が で 0 より大きい値に定義され
る。 (sysconf(3) を参照すること。 )
関連項目
mmap(2)
B.O. Gallmeister, POSIX.4, O’Reilly, pp. 128-129 and 389-391.
Linux 2008-04-22 MSYNC(2)
MSYNC(2) Linux Programmer’s Manual MSYNC(2)
NAME
msync - synchronize a file with a memory map
SYNOPSIS
#include
int msync(void *addr, size_t length, int flags);
DESCRIPTION
msync() flushes changes made to the in-core copy of a file that was
mapped into memory using mmap(2) back to disk. Without use of this
call there is no guarantee that changes are written back before mun-
map(2) is called. To be more precise, the part of the file that corre-
sponds to the memory area starting at addr and having length length is
updated.
The flags argument may have the bits MS_ASYNC, MS_SYNC, and MS_INVALI-
DATE set, but not both MS_ASYNC and MS_SYNC. MS_ASYNC specifies that
an update be scheduled, but the call returns immediately. MS_SYNC asks
for an update and waits for it to complete. MS_INVALIDATE asks to
invalidate other mappings of the same file (so that they can be updated
with the fresh values just written).
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is
set appropriately.
ERRORS
EBUSY MS_INVALIDATE was specified in flags, and a memory lock exists
for the specified address range.
EINVAL addr is not a multiple of PAGESIZE; or any bit other than
MS_ASYNC | MS_INVALIDATE | MS_SYNC is set in flags; or both
MS_SYNC and MS_ASYNC are set in flags.
ENOMEM The indicated memory (or part of it) was not mapped.
CONFORMING TO
POSIX.1-2001.
This call was introduced in Linux 1.3.21, and then used EFAULT instead
of ENOMEM. In Linux 2.4.19 this was changed to the POSIX value ENOMEM.
AVAILABILITY
On POSIX systems on which msync() is available, both
_POSIX_MAPPED_FILES and _POSIX_SYNCHRONIZED_IO are defined in
to a value greater than 0. (See also sysconf(3).)
SEE ALSO
mmap(2)
B.O. Gallmeister, POSIX.4, O’Reilly, pp. 128-129 and 389-391.
COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2008-04-22 MSYNC(2)