MINHERIT(2)						      BSD System Calls Manual						       MINHERIT(2)

NAME
minherit -- control the inheritance of pages LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <sys/mman.h> int minherit(void *addr, size_t len, int inherit); DESCRIPTION
The minherit() system call changes the specified range of virtual addresses to have the specified fork-time inheritance characteristic inherit, which can be set to MAP_INHERIT_NONE, MAP_INHERIT_COPY, or MAP_INHERIT_SHARE. Also possible is MAP_INHERIT_DEFAULT, which defaults to MAP_INHERIT_COPY. 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. Normally, the entire address space is marked MAP_INHERIT_COPY; when the process calls fork(), the child receives a (virtual) copy of the entire address space. Pages or regions marked MAP_INHERIT_SHARE are shared between the address spaces, while pages or regions marked MAP_INHERIT_NONE will be unmapped in the child. RETURN VALUES
The minherit() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indi- cate the error. ERRORS
minherit() will fail if: [EINVAL] An invalid region or invalid parameters were specified. SEE ALSO
fork(2), madvise(2), mincore(2), mprotect(2), msync(2), munmap(2) HISTORY
The minherit() function first appeared in OpenBSD. BUGS
If a particular port does not support page-granularity inheritance, there's no way to figure out how large a region is actually affected by minherit(). BSD
October 7, 2006 BSD