minherit - control the inheritance of pages
Standard C Library (libc, -lc)
#include <sys/mman.h>
int
minherit(void *addr, size_t len, int inherit);
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.
fork(2), madvise(2), mincore(2), mprotect(2), msync(2), munmap(2)
The minherit() function first appeared in OpenBSD.
If the 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 June 9, 1993 BSD
[ Back ] |