NAME
msync —
synchronize a mapped
region
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <sys/mman.h>
int
msync(
void
*addr,
size_t len,
int flags);
DESCRIPTION
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. |
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
mlock(2),
mmap(2),
munlock(2)
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.