MSYNC(2)

NAME
msync - synchronize a mapped region

SYNOPSIS
#include <sys/mman.h>
int
msync(void *addr, size_t len, int flags);

DESCRIPTION
The msync() system call writes all pages with shared modifications in the specified region starting from addr and continuing for len bytes. addr should be a multiple of the page size. Any required synchronization of memory caches will also take place at this time. Filesystem operations on a file that is mapped for shared modifications are unpredictable except after an msync().

The flags argument is the bitwise OR of zero or more of the following values:

    MS_ASYNC	Perform asynchronous writes.
    MS_SYNC		Perform synchronous writes.
    MS_INVALIDATE	Invalidate cached data after writing.

RETURN VALUES

ERRORS
The following errors may be reported:

[EBUSY]
    The MS_INVALIDATE flag was specified and a portion of the specified region was locked with mlock(2).

[EINVAL]
    The specified flags argument was invalid.

[EINVAL]
    The addr parameter was not page aligned or addr and size specify a region that would extend beyond the end of the address space.

[EPERM]
    The addr and len parameters specify a region which contains at least one page marked immutable.

[ENOMEM]
    Addresses in the specified region are outside the range allowed for the address space of the process, or specify one or more pages which are unmapped.

[EFAULT]
    For the MS_INVALIDATE operation, the addr and len parameters specify a region which contains at least one page which is not PROT_WRITE.

[EIO]
    An I/O error occurred while writing.

SEE ALSO
madvise(2), minherit(2), mprotect(2), munmap(2)

HISTORY
The msync() function has been available since 4.3BSD Net/2. It was modified to conform to p1003.1b-93

BUGS
Writes are currently done synchronously even if the MS_ASYNC flag is specified.