1.\" $FreeBSD: src/lib/libc/sys/minherit.2,v 1.7.2.6 2001/12/14 18:34:01 ru Exp $ 2.\" $DragonFly: src/lib/libc/sys/minherit.2,v 1.4 2007/09/14 23:47:53 swildner Exp $ 3.\" 4.\" Copyright (c) 1991, 1993 5.\" The Regents of the University of California. All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 3. All advertising materials mentioning features or use of this software 16.\" must display the following acknowledgement: 17.\" This product includes software developed by the University of 18.\" California, Berkeley and its contributors. 19.\" 4. Neither the name of the University nor the names of its contributors 20.\" may be used to endorse or promote products derived from this software 21.\" without specific prior written permission. 22.\" 23.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33.\" SUCH DAMAGE. 34.\" 35.\" @(#)minherit.2 8.1 (Berkeley) 6/9/93 36.\" 37.Dd February 17, 1996 38.Dt MINHERIT 2 39.Os 40.Sh NAME 41.Nm minherit 42.Nd control the inheritance of pages 43.Sh LIBRARY 44.Lb libc 45.Sh SYNOPSIS 46.In sys/types.h 47.In sys/mman.h 48.Ft int 49.Fn minherit "void *addr" "size_t len" "int inherit" 50.Sh DESCRIPTION 51The 52.Fn minherit 53system call 54changes the specified pages to have the inheritance characteristic 55.Fa inherit . 56Not all implementations will guarantee that the inheritance characteristic 57can be set on a page basis; 58the granularity of changes may be as large as an entire region. 59.Dx 60is capable of adjusting inheritance characteristics on a page basis. 61Inheritance only affects children created by 62.Fn fork . 63It has no effect on 64.Fn exec . 65exec'd processes replace their address space entirely. 66This function also 67has no effect on the parent's address space (other than to potentially 68share the address space with its children). 69.Pp 70Inheritance is a rather esoteric feature largely superseded by the 71.Dv MAP_SHARED 72feature of 73.Fn mmap . 74However, it is possible to use 75.Fn minherit 76to share a block of memory between parent and child that has been mapped 77.Dv MAP_PRIVATE . 78That is, modifications made by parent or child are shared but 79the original underlying file is left untouched. 80.Bl -tag -width ".Dv INHERIT_SHARE" 81.It Dv INHERIT_SHARE 82This option causes the address space in question to be shared between 83parent and child. 84It has no effect on how the original underlying backing 85store was mapped. 86.It Dv INHERIT_NONE 87This option prevents the address space in question from being inherited 88at all. 89The address space will be unmapped in the child. 90.It Dv INHERIT_COPY 91This option causes the child to inherit the address space as copy-on-write. 92This option also has an unfortunate side effect of causing the parent 93address space to become copy-on-write when the parent forks. 94If the original mapping was 95.Dv MAP_SHARED , 96it will no longer be shared in the parent 97after the parent forks and there is no way to get the previous 98shared-backing-store mapping without unmapping and remapping the address 99space in the parent. 100.El 101.Sh RETURN VALUES 102.Rv -std minherit 103.Sh ERRORS 104The 105.Fn minherit 106function will fail if: 107.Bl -tag -width Er 108.It Bq Er EINVAL 109The virtual address range specified by the 110.Fa addr 111and 112.Fa len 113arguments is not valid. 114.It Bq Er EACCES 115The flags specified by the 116.Fa inherit 117argument were not valid for the pages specified 118by the 119.Fa addr 120and 121.Fa len 122arguments. 123.El 124.Sh SEE ALSO 125.Xr fork 2 , 126.Xr madvise 2 , 127.Xr mincore 2 , 128.Xr mprotect 2 , 129.Xr msync 2 , 130.Xr munmap 2 , 131.Xr rfork 2 132.Sh HISTORY 133The 134.Fn minherit 135function first appeared in 136.Ox . 137