[OpenBSD]

Manual Page Search Parameters

MSYNC(2) System Calls Manual MSYNC(2)

NAME

msyncsynchronize a mapped region

SYNOPSIS

#include <sys/mman.h>
int
msync(void *addr, size_t len, int flags);

DESCRIPTION

The msync() system call writes all pages with shared modifications in the specified region starting from addr and continuing for len bytes. addr should be a multiple of the page size. Any required synchronization of memory caches will also take place at this time. Filesystem operations 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 conform to IEEE Std 1003.1b-1993 (“POSIX.1b”)

BUGS

Writes are currently done synchronously even if the MS_ASYNC flag is specified.
October 29, 2015 OpenBSD-current