OpenBSD manual page server

Manual Page Search Parameters

MINHERIT(2) System Calls Manual MINHERIT(2)

minheritcontrol the inheritance of pages

#include <sys/mman.h>

int
minherit(void *addr, size_t len, int inherit);

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

Pages are not mapped in the child process.
Private copy of pages are mapped in the child process.
Mapped pages are shared between the parent and child processes.
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.

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 minherit() system call will fail if:

[]
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.
[]
The virtual address range specified by the addr and len arguments is not valid.
[]
The inherit argument is invalid.

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

The minherit() function first appeared in OpenBSD 2.0.

January 21, 2024 OpenBSD-current