2004-11-03 13:51:07 +00:00
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
.\"
|
|
|
|
.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl)
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
|
|
|
.\"
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
|
|
|
.\"
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.TH MSYNC 2 2003-08-21 "Linux 2.4" "Linux Programmer's Manual"
|
|
|
|
.SH NAME
|
|
|
|
msync \- synchronize a file with a memory map
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <sys/mman.h>
|
|
|
|
.sp
|
|
|
|
.BI "int msync(void *" start ", size_t " length ", int " flags );
|
|
|
|
.SH DESCRIPTION
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR msync ()
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
|
|
|
there is no guarantee that changes are written back before
|
|
|
|
.BR munmap (2)
|
|
|
|
is called. To be more precise, the part of the file that
|
|
|
|
corresponds to the memory area starting at
|
|
|
|
.I start
|
|
|
|
and having length
|
|
|
|
.I length
|
2006-09-06 08:36:15 +00:00
|
|
|
is updated.
|
|
|
|
|
|
|
|
The
|
2004-11-03 13:51:07 +00:00
|
|
|
.I flags
|
2006-09-06 08:36:15 +00:00
|
|
|
argument may have the bits
|
|
|
|
.BR MS_ASYNC ,
|
|
|
|
.BR MS_SYNC ,
|
|
|
|
and
|
|
|
|
.B MS_INVALIDATE
|
|
|
|
set, but not both
|
|
|
|
.B MS_ASYNC
|
|
|
|
and
|
|
|
|
.BR MS_SYNC .
|
|
|
|
.B MS_ASYNC
|
|
|
|
specifies that an update be scheduled, but the call
|
2004-11-03 13:51:07 +00:00
|
|
|
returns immediately.
|
2006-09-06 08:36:15 +00:00
|
|
|
.B MS_SYNC
|
|
|
|
asks for an update and waits for it to complete.
|
|
|
|
.B MS_INVALIDATE
|
|
|
|
asks to invalidate other mappings of the same file
|
2004-11-03 13:51:07 +00:00
|
|
|
(so that they can be updated with the fresh values just written).
|
|
|
|
.SH "RETURN VALUE"
|
|
|
|
On success, zero is returned. On error, \-1 is returned, and
|
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
2006-09-06 08:36:15 +00:00
|
|
|
.BR EBUSY
|
|
|
|
MS_INVALIDATE was specified in
|
|
|
|
.IR flags ,
|
|
|
|
and a memory lock exists for the specified address range.
|
|
|
|
.TP
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR EINVAL
|
|
|
|
.I start
|
2006-05-22 22:37:56 +00:00
|
|
|
is not a multiple of PAGESIZE; or any bit other than
|
2004-11-03 13:51:07 +00:00
|
|
|
MS_ASYNC | MS_INVALIDATE | MS_SYNC is set in
|
2006-05-22 22:37:56 +00:00
|
|
|
.IR flags ;
|
|
|
|
or both
|
|
|
|
MS_SYNC and MS_ASYNC are set in
|
2005-07-19 15:36:19 +00:00
|
|
|
.IR flags .
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
The indicated memory (or part of it) was not mapped.
|
|
|
|
.SH AVAILABILITY
|
|
|
|
On POSIX systems on which
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR msync ()
|
2004-11-03 13:51:07 +00:00
|
|
|
is available, both
|
|
|
|
.B _POSIX_MAPPED_FILES
|
|
|
|
and
|
|
|
|
.B _POSIX_SYNCHRONIZED_IO
|
|
|
|
are defined in <unistd.h> to a value greater than 0. (See also
|
|
|
|
.BR sysconf (3).)
|
2006-08-03 13:57:17 +00:00
|
|
|
.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" -1: unavailable, 0: ask using sysconf().
|
|
|
|
.\" glibc defines them to 1.
|
|
|
|
.SH "CONFORMING TO"
|
2006-08-03 13:57:17 +00:00
|
|
|
POSIX.1-2001.
|
2004-11-03 13:51:07 +00:00
|
|
|
|
|
|
|
This call was introduced in Linux 1.3.21, and then used EFAULT instead of
|
|
|
|
ENOMEM. In Linux 2.4.19 this was changed to the POSIX value ENOMEM.
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR mmap (2)
|
|
|
|
.br
|
|
|
|
B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
|