]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/msync.2
dlopen.3: tfix
[thirdparty/man-pages.git] / man2 / msync.2
index d189e7436d9f9567e084590b38e71017b6d855b9..ae8ffba53fc82f235283a8087278f4b06cf856ad 100644 (file)
 .\" the source, must acknowledge the copyright and authors of this work.
 .\" %%%LICENSE_END
 .\"
-.TH MSYNC 2 2014-03-04 "Linux" "Linux Programmer's Manual"
+.TH MSYNC 2 2017-09-15 "Linux" "Linux Programmer's Manual"
 .SH NAME
 msync \- synchronize a file with a memory map
 .SH SYNOPSIS
 .B #include <sys/mman.h>
-.sp
+.PP
 .BI "int msync(void *" addr ", size_t " length ", int " flags );
 .SH DESCRIPTION
 .BR msync ()
 flushes changes made to the in-core copy of a file that was mapped
 into memory using
 .BR mmap (2)
-back to disk.
-Without use of this call
+back to the filesystem.
+Without use of this call,
 there is no guarantee that changes are written back before
 .BR munmap (2)
 is called.
@@ -45,25 +45,28 @@ corresponds to the memory area starting at
 and having length
 .I length
 is updated.
-
+.PP
 The
 .I flags
-argument may have the bits
-.BR MS_ASYNC ,
-.BR MS_SYNC ,
+argument should specify exactly one of
+.BR MS_ASYNC
 and
+.BR MS_SYNC ,
+and may additionally include the
 .B MS_INVALIDATE
-set, but not both
-.B MS_ASYNC
-and
-.BR MS_SYNC .
+bit.
+These bits have the following meanings:
+.TP
 .B MS_ASYNC
-specifies that an update be scheduled, but the call
-returns immediately.
+Specifies that an update be scheduled, but the call returns immediately.
+.TP
 .B MS_SYNC
-asks for an update and waits for it to complete.
+Requests an update and waits for it to complete.
+.TP
 .B MS_INVALIDATE
-asks to invalidate other mappings of the same file
+.\" Since Linux 2.4, this seems to be a no-op (other than the
+.\" EBUSY check for VM_LOCKED).
+Asks to invalidate other mappings of the same file
 (so that they can be updated with the fresh values just written).
 .SH RETURN VALUE
 On success, zero is returned.
@@ -94,13 +97,13 @@ are set in
 .B ENOMEM
 The indicated memory (or part of it) was not mapped.
 .SH CONFORMING TO
-POSIX.1-2001.
-
+POSIX.1-2001, POSIX.1-2008.
+.PP
 This call was introduced in Linux 1.3.21, and then used
 .B EFAULT
 instead of
 .BR ENOMEM .
-In Linux 2.4.19 this was changed to the POSIX value
+In Linux 2.4.19, this was changed to the POSIX value
 .BR ENOMEM .
 .SH AVAILABILITY
 On POSIX systems on which
@@ -118,12 +121,15 @@ to a value greater than 0.
 .\" -1: unavailable, 0: ask using sysconf().
 .\" glibc defines them to 1.
 .SH NOTES
-According to POSIX, exactly one of
+According to POSIX, either
 .BR MS_SYNC
-and
+or
 .BR MS_ASYNC
-must be specified in 
-.IR flags .
+must be specified in
+.IR flags ,
+and indeed failure to include one of these flags will cause
+.BR msync ()
+to fail on some systems.
 However, Linux permits a call to
 .BR msync ()
 that specifies neither of these flags,
@@ -135,14 +141,13 @@ with semantics that are (currently) equivalent to specifying
 is in fact a no-op, since the kernel properly tracks dirty
 pages and flushes them to storage as necessary.)
 Notwithstanding the Linux behavior,
-portable, future-proof applications should ensure that
-they specify exactly one of
+portable, future-proof applications should ensure that they specify either
 .BR MS_SYNC
-and
+or
 .BR MS_ASYNC
 in
 .IR flags .
 .SH SEE ALSO
 .BR mmap (2)
-
-B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
+.PP
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\(en129 and 389\(en391.