NAME
msync
—
synchronize a mapped region
LIBRARY
library “libc”
SYNOPSIS
#include
<sys/mman.h>
int
msync
(void
*addr, size_t len,
int flags);
DESCRIPTION
Themsync
()
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. |
RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.
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.
- [
EINVAL
] - The addr parameter did not specify an address part of a mapped region.
- [
EIO
] - An I/O error occurred while writing to the file system.
- [
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.
SEE ALSO
STANDARDS
The msync
() function conforms to
IEEE Std 1003.1b-1993 (“POSIX.1b”)
HISTORY
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.