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
]ENOMEM
]EIO
]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.
December 21, 2019 | OpenBSD-current |