MINHERIT(2) BSD Programmer's Manual MINHERIT(2)
minherit - control the inheritance of pages
#include <sys/mman.h> int minherit(void *addr, size_t len, int inherit);
The minherit() system call changes the specified pages to have the inher- itance characteristic inherit. A page's inheritance characteristic con- trols 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 characteris- tic can be set on a page basis; the granularity of changes may be as large as an entire region.
The minherit() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
The minherit() system call will fail if: [EINVAL] The virtual address range specified by the addr and len ar- guments is not valid. [EINVAL] The inherit argument is invalid.
madvise(2), mincore(2), mprotect(2), msync(2), munmap(2)
The minherit() function first appeared in OpenBSD 2.0. The MAP_INHERIT_ZERO flag first appeared in OpenBSD 5.6. MirBSD #10-current July 13, 2014 1