msync

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
MSYNC(2)		  Linux Programmer’s Manual		     MSYNC(2)



NAME
       msync - synchronize a file with a memory map

SYNOPSIS
       #include <sys/mman.h>

       int msync(void *start, size_t length, int flags);

DESCRIPTION
       msync  flushes  changes	made  to  the in-core copy of a file that was
       mapped into memory using mmap(2) back to disk.  Without	use  of	 this
       call  there  is no guarantee that changes are written back before mun-
       map(2) is called.  To be more precise, the part of the file that	 cor-
       responds to the memory area starting at start and having length length
       is updated.  The flags argument may have the  bits  MS_ASYNC,  MS_SYNC
       and  MS_INVALIDATE  set,	 but not both MS_ASYNC and MS_SYNC.  MS_ASYNC
       specifies that an update be scheduled, but the  call  returns  immedi-
       ately.	MS_SYNC	 asks  for  an	update	and waits for it to complete.
       MS_INVALIDATE asks to invalidate other mappings of the same  file  (so
       that they can be updated with the fresh values just written).

RETURN VALUE
       On  success, zero is returned.  On error, -1 is returned, and errno is
       set appropriately.

ERRORS
       EINVAL start is not a multiple of PAGESIZE,  or	any  bit  other	 than
	      MS_ASYNC | MS_INVALIDATE | MS_SYNC is set in flags.

       ENOMEM The indicated memory (or part of it) was not mapped.

AVAILABILITY
       On POSIX systems on which msync is available, both _POSIX_MAPPED_FILES
       and _POSIX_SYNCHRONIZED_IO  are	defined	 in  <unistd.h>	 to  a	value
       greater than 0. (See also sysconf(3).)

CONFORMING TO
       POSIX.1b (formerly POSIX.4)

       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.

SEE ALSO
       mmap(2), B.O. Gallmeister, POSIX.4, O’Reilly, pp. 128-129 and 389-391.



Linux 2.4			  2003-08-21			     MSYNC(2)