MSYNC(2) System Calls Manual MSYNC(2)

msyncsynchronize a mapped region

Standard C Library (libc, -lc)

#include <sys/mman.h>

int
msync(void *addr, size_t len, int flags);

The () system call writes modified whole pages back to the filesystem and updates the file modification time. Only those pages containing addr and len-1 succeeding locations will be examined.

The flags argument may be specified as follows:

MS_ASYNC	Return immediately
MS_SYNC		Perform synchronous writes
MS_INVALIDATE	Invalidate all cached data

The MS_ASYNC flag is not permitted to be combined with other flags.

If any errors occur, -1 is returned and errno is set to indicate the error. Otherwise, a 0 value is returned.

msync() will fail if:

[]
Some of the specified addresses are locked and MS_INVALIDATE is specified.
[]
addr is not a multiple of the hardware page size.
[]
len is too large, or less than 1.
[]
flags is invalid (e.g., it combines MS_ASYNC with another flag, which is not permitted).
[]
An I/O error occurs while writing to the file system.
[]
The specified address range is outside of the address range of the process or includes an unmapped page.

#include <sys/types.h> #include <sys/mman.h>

The include file <sys/types.h> is necessary.

madvise(2), mincore(2), mprotect(2), munmap(2), compat(5)

The msync() function first appeared in 4.4BSD.

June 21, 1994 macOS 14.4