int
msync(
void *addr
, size_t len
, int flags
)
)
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 |
EBUSY
]
MS_INVALIDATE
flag was specified and a portion of the specified region
was locked with
mlock(2).
EINVAL
]
flags
argument was invalid.
EINVAL
]
addr
parameter was not page aligned.
EINVAL
]
addr
parameter did not specify an address part of a mapped region.
EINVAL
]
len
parameter was negative.
EIO
]
ENOMEM
]
)
function first appeared in
4.4BSD.
It was modified to conform to
IEEE Std 1003.1b-1993 (``POSIX.1'')
in
NetBSD1.3.