unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OpenBSD-5.7)
Page:
Section:
Apropos / Subsearch:
optional field

MSYNC(2)                    BSD System Calls Manual                   MSYNC(2)

NAME
     msync -- synchronize a mapped region

SYNOPSIS
     #include <&lt;sys/mman.h>&gt;

     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 stor-
     age, 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-1 succeeding locations will be flushed.  Any required synchronization
     of memory caches will also take place at this time.  Filesystem opera-
     tions on a file that is mapped for shared modifications are unpredictable
     except after an msync().

     The flags argument is the bitwise OR of zero or more of 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, the value 0 is returned; otherwise the
     value -1 is returned and the global variable 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 or addr and
                        size specify a region that would extend beyond the end
                        of the address space.

     [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.

     [EIO]              An I/O error occurred while writing.

SEE ALSO
     madvise(2), mincore(2), minherit(2), mprotect(2), munmap(2)

HISTORY
     The msync() function first appeared in 4.4BSD.  It was modified to con-
     form to IEEE Std 1003.1b-1993 (``POSIX.1'')

BUGS
     Writes are currently done synchronously even if the MS_ASYNC flag is
     specified.

BSD                             April 29, 2017                             BSD