MSYNC(2) System Calls Manual MSYNC(2)
msync - synchronize memory with physical storage
int msync(addr, len, flags)
int len, flags;
msync() writes all modified copies of pages over the range [addr, addr
+ len) to their permanent storage locations. msync() optionally inval-
idates any copies so that further references to the pages will be
obtained by the system from their permanent storage locations.
Values for flags are defined in <<sys/mman.h>> as:
#define MS_ASYNC 0x1 /* Return immediately */
#define MS_INVALIDATE 0x2 /* Invalidate mappings */
and are used to control the behavior of msync(). One or more flags may
be specified in a single call.
MS_ASYNC returns msync() immediately once all I/O operations are sched-
uled; normally, msync() will not return until all I/O operations are
complete. MS_INVALIDATE invalidates all cached copies of data from
memory objects, requiring them to be re-obtained from the object's per-
manent storage location upon the next reference.
msync() should be used by programs which require a memory object to be
in a known state, for example in building transaction facilities.
0 on success.
-1 on failure and sets errno to indicate the error.
EINVAL addr is not a multiple of the current page size.
len is negative.
One of the flags MS_ASYNC or MS_INVALID is invalid.
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.
21 January 1990 MSYNC(2)