OpenBSD manual page server

Manual Page Search Parameters

MSYNC(2) System Calls Manual MSYNC(2)

msyncsynchronize a mapped region

#include <sys/mman.h>

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

The () 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.

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.

The following errors may be reported:

[]
The MS_INVALIDATE flag was specified and a portion of the specified region was locked with mlock(2).
[]
The specified flags argument was invalid.
[]
The addr parameter was not page aligned or addr and size specify a region that would extend beyond the end of the address space.
[]
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.
[]
An I/O error occurred while writing.

madvise(2), minherit(2), mprotect(2), munmap(2)

The msync() function first appeared in 4.4BSD. It was modified to conform to IEEE Std 1003.1b-1993 (“POSIX.1b”)

Writes are currently done synchronously even if the MS_ASYNC flag is specified.

January 11, 2019 OpenBSD-6.6