msync(2) msync(2)
msync - synchronize memory with physical storage
#include <sys/types.h>
#include <sys/mman.h>
int msync(void *addr, size_t len, int flags);
The function msync writes all modified copies of pages over the range
[addr, addr + len) to their backing storage locations. msync optionally
invalidates any copies so that further references to the pages will be
obtained by the system from their backing storage locations. The backing
storage for a modified MAP_SHARED mapping is the file the page is mapped
to; the backing storage for a modified MAP_PRIVATE mapping is its swap
area.
flags is a bit pattern built from the following values:
MS_ASYNC perform asynchronous writes
MS_SYNC perform synchronous writes
MS_INVALIDATE invalidate mappings
If MS_ASYNC is set, msync returns immediately once all write operations
are scheduled; if MS_SYNC is set, msync does not return until all write
operations are completed.
MS_INVALIDATE invalidates all cached copies of data in memory, so that
further references to the pages will be obtained by the system from their
backing storage locations.
msync will fail if:
[EINVAL] If addr is not a multiple of the page size as returned by
sysconf(3C).
[EIO] An I/O error occurred while reading from or writing to the
file system.
[ENOMEM] Addresses in the range (addr, addr + len) are outside the
valid range for the address space of a process or pages
not mapped are specified.
[EBUSY] MS_INVALIDATE was specified and one or more of the pages
was locked in memory.
mmap(2), mpin(2), sysconf(3C).
Page 1
msync(2) msync(2)
Upon successful completion, the function msync returns 0; otherwise, it
returns -1 and sets errno to indicate the error.
msync should be used by programs that require a memory object to be in a
known state, for example, in building transaction facilities.
PPPPaaaaggggeeee 2222 [ Back ]
|