Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
msync(3C)		 Standard C Library Functions		     msync(3C)

       msync - synchronize memory with physical	storage

       #include	<sys/mman.h>

       int msync(void *addr, size_t len, int flags);

       The   msync()  function	writes	all  modified copies of	pages over the
       range [addr, addr + len)	to the underlying hardware, or invalidates any
       copies  so that further references to the pages will be obtained	by the
       system from their permanent storage locations.  The  permanent  storage
       for  a  modified	 MAP_SHARED mapping is the file	the page is mapped to;
       the permanent storage for a modified MAP_PRIVATE	mapping	 is  its  swap

       The flags argument is a bit pattern built from the following values:

       MS_ASYNC	       perform asynchronous writes

       MS_SYNC	       perform synchronous writes

       MS_INVALIDATE   invalidate mappings

       If  flags  is  MS_ASYNC	or MS_SYNC, the	function synchronizes the file
       contents	to match the current contents of the memory region.

	 o  All	write references to the	memory region made prior to  the  call
	    are	visible	by subsequent read operations on the file.

	 o  All	 writes	 to the	same portion of	the file prior to the call may
	    or may not be visible by read references to	the memory region.

	 o  Unmodified pages in	the specified range are	not written to the un-
	    derlying hardware.

       If  flags  is  MS_ASYNC,	 the  function may return immediately once all
       write operations	are scheduled; if flags	is MS_SYNC, the	function  does
       not return until	all write operations are completed.

       If  flags  is  MS_INVALIDATE, the function synchronizes the contents of
       the memory region to match the current file contents.

	 o  All	writes to the mapped portion of	the file  made	prior  to  the
	    call  are visible by subsequent read references to the mapped mem-
	    ory	region.

	 o  All	write references prior to the call, by any process, to	memory
	    regions  mapped  to	the same portion of the	file using MAP_SHARED,
	    are	visible	by read	references to the region.

       If msync() causes any write to the file,	then the file's	 st_ctime  and
       st_mtime	fields are marked for update.

       Upon successful completion, msync() returns 0; otherwise, it returns -1
       and sets	errno to indicate the error.

       The msync() function will fail if:

       EBUSY	       Some or all of the addresses in the range [addr,	addr +
		       len)  are locked	and MS_SYNC with the MS_INVALIDATE op-
		       tion is specified.

       EAGAIN	       Some or all pages in the	range [addr,  addr +  len) are
		       locked for I/O.

       EINVAL	       The  addr  argument is not a multiple of	the  page size
		       as returned by sysconf(3C).

		       The flags argument is not some combination of  MS_ASYNC
		       and MS_INVALIDATE.

       EIO	       An  I/O error occurred while reading from or writing to
		       the file	system.

       ENOMEM	       Addresses in the	range [addr, addr + len)  are  outside
		       the  valid range	for the	address	space of a process, or
		       specify one or more pages that are not mapped.

       EPERM	       MS_INVALIDATE was specified and	one  or	 more  of  the
		       pages is	locked in memory.

       The  msync()  function should be	used by	programs that require a	memory
       object to be in a known state, for example in building transaction  fa-

       Normal  system  activity	can cause pages	to be written to disk.	There-
       fore, there are no guarantees that msync() is  the  only	 control  over
       when pages are or are not written to disk.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |
       |MT-Level		     |MT-Safe			   |

       memcntl(2), mmap(2), sysconf(3C), attributes(5),	standards(5)

SunOS 5.10			  24 Jul 2002			     msync(3C)


Want to link to this manual page? Use this URL:

home | help