NAME
msync —
synchronize a mapped region
LIBRARY
library “libc”
SYNOPSIS
#include
<sys/mman.h>
int
msync(void *addr,
size_t len, int flags);
DESCRIPTION
The
msync()
system call writes modified whole pages back to the filesystem and updates
the file modification time. Only those pages containing
addr and len-1 succeeding
locations will be examined.
The flags argument may be specified as follows:
MS_ASYNC Return immediately MS_SYNC Perform synchronous writes MS_INVALIDATE Invalidate all cached data
The MS_ASYNC flag is not permitted to be combined with other flags.
RETURN VALUES
If any errors occur, -1 is returned and errno is set to indicate the error. Otherwise, a 0 value is returned.
ERRORS
msync() will fail if:
- [
EBUSY] - Some of the specified addresses are locked and MS_INVALIDATE is specified.
- [
EINVAL] - addr is not a multiple of the hardware page size.
- [
EINVAL] - len is too large, or less than 1.
- [
EINVAL] - flags is invalid (e.g., it combines MS_ASYNC with another flag, which is not permitted).
- [
EIO] - An I/O error occurs while writing to the file system.
- [
ENOMEM] - The specified address range is outside of the address range of the process or includes an unmapped page.
LEGACY SYNOPSIS
#include
<sys/types.h> #include
<sys/mman.h>
The include file
<sys/types.h> is
necessary.
SEE ALSO
HISTORY
The msync() function first appeared in
4.4BSD.