msync - Synchronize a mapped file
#include <sys/mman.h>
int msync(
void *addr,
size_t len,
int flags );
The following function declaration does not conform to
current industry standards and is supported only for backward
compatibility: #include <sys/types.h> #include
<sys/mman.h>
int msync(
caddr_t addr,
size_t len,
int flags );
Interfaces documented on this reference page conform to
industry standards as follows:
msync(): XSH4.2, XSH5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
Specifies the starting address of the region to be synchronized.
Specifies the length in bytes of the region to
be synchronized. This parameter must be a multiple of the
page size as returned by sysconf(_SC_PAGE_SIZE). If len
is not a multiple of the page size as returned by
sysconf(_SC_PAGE_SIZE), the length of the region will be
rounded up to the next multiple of the page size. Specifies
one of the following symbolic constants defined in
the <sys/mman.h> file: Specifies an asynchronous cache
flush. The msync() function returns after the system
schedules all write operations. Specifies a synchronous
cache flush. The msync() function returns after the system
completes all write operations. Specifies invalidating
all cached pages. New copies of the pages must be obtained
from the file system the next time they are referenced.
The msync() function controls the caching operations of a
mapped file region. The msync() function can be used to
ensure that modified pages in the region are transferred
to the file's underlying storage device. (However, normal
system activity can cause pages to be written to a storage
device, so there is no guarantee that a call to the
msync() function is the only control over when pages are
written.) You can also use the function to control the
visibility of modifications with respect to file system
operations.
After a successful call to the msync() function with the
flags parameter set to MS_SYNC, all previous modifications
to the mapped region are visible to processes using the
read() function. Previous modifications to the file using
the write() function might be lost.
After a successful call to the msync() function with the
flags parameter set to MS_INVALIDATE, all previous modifications
to the file using the write() function are visible
to the mapped region. Previous direct modifications to the
mapped region might be lost.
Upon successful completion, the msync() function returns 0
(zero). Otherwise, the msync() function returns -1 and
sets errno to indicate the error.
The msync() function sets errno to the specified values
for the following conditions:
Some or all of the addresses in the range starting at addr
and continuing for len bytes are locked, and MS_INVALIDATE
is specified. [Tru64 UNIX] The range [addr, addr + len)
includes an invalid address. One of the following conditions
applies: The addr parameter is not a multiple of the
page size as returned by sysconf(_SC_PAGE_SIZE). The
flags parameter is invalid. [Tru64 UNIX] An I/O error
occurred while reading from or writing to the file system.
The range specified by [addr, addr + len) is invalid for a
process' address space, or the range specifies one or more
unmapped pages.
Functions: fsync(2), mmap(2), read(2), write(2),
sysconf(3)
Standards: standards(5)
msync(2)
[ Back ] |