MINHERIT(2)

NAME
minherit - control the inheritance of pages

SYNOPSIS
#include <sys/mman.h>
int
minherit(void *addr, size_t len, int inherit);

DESCRIPTION
The minherit() system call changes the specified pages to have the inheritance characteristic inherit. A page's inheritance characteristic controls how it will be mapped in child processes as created by fork(2).

The possible inheritance characteristics are:

MAP_INHERIT_NONE
    Pages are not mapped in the child process.
MAP_INHERIT_COPY
    Private copy of pages are mapped in the child process.
MAP_INHERIT_SHARE
    Mapped pages are shared between the parent and child processes.
MAP_INHERIT_ZERO
    New anonymous pages (initialized to all zero bytes) are mapped in the child process.

Not all implementations will guarantee that the inheritance characteristic can be set on a page basis; the granularity of changes may be as large as an entire region.

RETURN VALUES

ERRORS
The minherit() system call will fail if:

[EPERM]
    The addr and len parameters specify a region that contains at least one page which is immutable, or MAP_INHERIT_ZERO is being requested on a page without PROT_WRITE permission.

[EINVAL]
    The virtual address range specified by the addr and len arguments is not valid.

[EINVAL]
    The inherit argument is invalid.

SEE ALSO
madvise(2), mimmutable(2), mprotect(2), msync(2), munmap(2)

HISTORY
The minherit() function first appeared in OpenBSD 2.0.