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_ZERO
is being requested on a page withoutPROT_WRITE
permission. - [
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.