msync(2)

msync2

Synchronize a mapped region

Usage

#include <sys/mman.h>

int

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

Library

Standard C Library (libc, -lc)

Overview

The msync() system call writes modified whole pages back to the filesystem and updates the file modification time. Only those pages containing addr and len-1 succeeding locations will be examined.

The flags argument may be specified as follows:

MS_ASYNC	Return immediately
MS_SYNC		Perform synchronous writes
MS_INVALIDATE	Invalidate all cached data

The MS_ASYNC flag is not permitted to be combined with other flags.

Return values

If any errors occur, -1 is returned and errno is set to indicate the error. Otherwise, a 0 value is returned.

Errors

msync() will fail if:

[EBUSY]

Some of the specified addresses are locked and MS_INVALIDATE is specified.

[EINVAL]

addr is not a multiple of the hardware page size.

[EINVAL]

len is too large, or less than 1.

[EINVAL]

flags is invalid (e.g., it combines MS_ASYNC with another flag, which is not permitted).

[EIO]

An I/O error occurs while writing to the file system.

[ENOMEM]

The specified address range is outside of the address range of the process or includes an unmapped page.

Legacy synopsis

#include <sys/types.h> #include <sys/mman.h>

The include file ⟨sys/types.h⟩ is necessary.

Releases

161 releases since Mac OS X 10.0; the text changed 12 times.

  1. 10.0–10.2.8
  2. 10.3
  3. 10.3.1
  4. 10.3.2–10.4.4
  5. 10.4.4
  6. 10.4.5
  7. 10.4.5
  8. 10.4.6
  9. 10.4.6
  10. 10.4.7
  11. 10.4.7
  12. 10.4.8–10.4.11
  13. 10.5–26.5

History

The msync() function first appeared in 4.4BSD.

From xnu 12377.121.6 in macOS 26.5. Parsed by carta from the page's mdoc source.