| MINHERIT(2) | 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 indicate the error.
ERRORS
 minherit() will fail if:
- 
[EINVAL]
- 
An invalid region or invalid parameters were specified.
 
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().