NAME
minherit —
control the inheritance of
pages
SYNOPSIS
#include
<sys/mman.h>
int
minherit(void
*addr, size_t len,
int inherit);
DESCRIPTION
The
minherit()
system call changes the specified pages to have the inheritance
characteristic inherit. A page's inheritance
characteristic controls 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 characteristic can be set on a page basis; the granularity of changes may be as large as an entire region.
RETURN VALUES
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
ERRORS
The minherit() system call will fail
if:
- [
EPERM] - The addr and len parameters
specify a region that contains at least one page which is immutable, or
MAP_INHERIT_ZEROis being requested on a page withoutPROT_WRITEpermission. - [
EINVAL] - The virtual address range specified by the addr and len arguments is not valid.
- [
EINVAL] - The inherit argument is invalid.
SEE ALSO
HISTORY
The minherit() function first appeared in
OpenBSD 2.0.