| MSYNC(2) | System Calls Manual | MSYNC(2) |
msync —
synchronize a mapped region
Standard C Library (libc, -lc)
#include
<sys/mman.h>
int
msync(void
*addr, size_t len,
int flags);
The
msync()
system call writes all pages with shared modifications in the specified
region of the process's address space back to permanent storage, and, if
requested, invalidates cached data mapped in the region. If
len is 0, all modified pages within the region
containing addr will be flushed; if
len is non-zero, only modified pages containing
addr and len succeeding
locations will be flushed. 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 formed by or'ing the following values
MS_ASYNC |
Perform asynchronous writes. |
MS_SYNC |
Perform synchronous writes. |
MS_INVALIDATE |
Invalidate cached data after writing. |
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.
The following errors may be reported:
EBUSY]MS_INVALIDATE flag was specified and a portion
of the specified region was locked with
mlock(2).EINVAL]EINVAL]EINVAL]EIO]ENOMEM]The msync() function conforms to
IEEE Std 1003.1b-1993 (“POSIX.1b”)
The msync() function first appeared in
4.4BSD. It was modified to conform to
IEEE Std 1003.1b-1993 (“POSIX.1b”) in
NetBSD 1.3.
| May 9, 2014 | NetBSD 11.0 |