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 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.

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 SunOS 4.0 and has been available since 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.

December 10, 2019 OpenBSD-current