| MSYNC(2) | System Calls Manual | MSYNC(2) |
msync —
synchronize a mapped region
#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 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.
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable 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]EPERM]ENOMEM]EIO]madvise(2), mimmutable(2), minherit(2), mprotect(2), munmap(2)
The msync() function has been available
since 4.3BSD-Net/2. It was modified to conform to
IEEE Std 1003.1b-1993 (“POSIX.1b”)
Writes are currently done synchronously even if the
MS_ASYNC flag is specified.
| January 21, 2024 | openbsd |