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.