New pages for VM interface.
authormickey <mickey@openbsd.org>
Mon, 11 Mar 1996 13:04:48 +0000 (13:04 +0000)
committermickey <mickey@openbsd.org>
Mon, 11 Mar 1996 13:04:48 +0000 (13:04 +0000)
Introduction need to be expanded.

share/man/man9/Makefile
share/man/man9/intro.9 [new file with mode: 0644]
share/man/man9/vm_allocate.9 [new file with mode: 0644]
share/man/man9/vm_deallocate.9 [new file with mode: 0644]
share/man/man9/vm_map_copy.9 [new file with mode: 0644]
share/man/man9/vm_map_inherit.9 [new file with mode: 0644]
share/man/man9/vm_map_protect.9 [new file with mode: 0644]

index e10dc6a..94bc180 100644 (file)
@@ -1,9 +1,13 @@
+#      $OpenBSD: Makefile,v 1.3 1996/03/11 13:04:48 mickey Exp $
 #       $NetBSD: Makefile,v 1.4 1996/01/09 03:23:01 thorpej Exp $
 
 #      Makefile for section 9 (kernel function and variable) manual pages.
 
-MAN=   boot.9 copy.9 disk.9 doshutdownhooks.9 fetch.9 inittodr.9 resettodr.9 \
-       shutdownhook_establish.9 store.9 time.9
+MAN=   boot.9 copy.9 disk.9 doshutdownhooks.9 fetch.9 intro.9 inittodr.9 \
+       resettodr.9 shutdownhook_establish.9 store.9 time.9 \
+       vm_allocate.9 vm_map_copy.9 vm_deallocate.9 vm_map_inherit.9 \
+       vm_map_protect.9
+
 MLINKS+=shutdownhook_establish.9 shutdownhook_disestablish.9
 MLINKS+=time.9 boottime.9 time.9 mono_time.9 time.9 runtime.9
 MLINKS+=copy.9 copyin.9 copy.9 copyout.9 copy.9 copystr.9 \
@@ -15,5 +19,8 @@ MLINKS+=fetch.9 fubyte.9 fetch.9 fuibyte.9 fetch.9 fusword.9 \
        fetch.9 fuswintr.9 fetch.9 fuword.9 fetch.9 fuiword.9
 MLINKS+=store.9 subyte.9 store.9 suibyte.9 store.9 susword.9 \
        store.9 suswintr.9 store.9 suword.9 store.9 suiword.9
+MLINKS+=vm_map_copy.9 vm_copy.9
+MLINKS+=vm_map_inherit.9 vm_inherit.9
+MLINKS+=vm_map_protect.9 vm_protect.9
 
 .include <bsd.prog.mk>
diff --git a/share/man/man9/intro.9 b/share/man/man9/intro.9
new file mode 100644 (file)
index 0000000..4795f32
--- /dev/null
@@ -0,0 +1,44 @@
+.\"    $OpenBSD: intro.9,v 1.1 1996/03/11 13:04:49 mickey Exp $
+.\"
+.\" Copyright (c) 1996 Michael Shalayeff
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by Michael Shalayeff
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd March 11, 1996
+.Dt INTRO 9
+.Os BSD 4.2
+.Sh NAME
+.Nm intro
+.Nd "introduction to the kernel internals"
+.Sh DESCRIPTION
+This section contains information related to the internal kernel
+data structures, variables and functions.
+.Sh HISTORY
+The
+.Nm intro
+section manual page appeared in OpenBSD 1.2.
diff --git a/share/man/man9/vm_allocate.9 b/share/man/man9/vm_allocate.9
new file mode 100644 (file)
index 0000000..7dbee03
--- /dev/null
@@ -0,0 +1,119 @@
+.\" 
+.\"    $OpenBSD: vm_allocate.9,v 1.1 1996/03/11 13:04:50 mickey Exp $
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" All Rights Reserved.
+.\" 
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\" 
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\" 
+.\" Carnegie Mellon requests users of this software to return to
+.\" 
+.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+.\"  School of Computer Science
+.\"  Carnegie Mellon University
+.\"  Pittsburgh PA 15213-3890
+.\" 
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\" 
+.TH vm_allocate 9 9/19/93
+.CM 4
+.SH NAME
+.nf
+vm_allocate  \-  allocates virtual memory for a task
+.SH SYNOPSIS
+.nf
+.ft B
+#include <vm/vm_extern.h>
+
+.nf
+.ft B
+int    vm_allocate(map, address, size, anywhere)
+       vm_map_t        map;
+       vm_address_t    *address;       /* in/out */
+       vm_size_t       size;
+       boolean_t       anywhere;
+
+
+.fi
+.ft P
+.SH ARGUMENTS
+.TP 15
+.B
+map
+Virtual address space to be affected.
+.TP 15
+.B
+address
+Starting address.  If the 
+.B anywhere
+option is false, 
+an attempt is made to allocate virtual memory starting at
+this virtual address. If this address is not at the beginning
+of a virtual page, it will be rounded down to one. 
+If there is not enough space at this address, no memory will be allocated.
+If the anywhere option is true, the input value of this address will
+be ignored, and the space will be allocated wherever it is available.
+In either case, the address at which memory was actually allocated will 
+be returned in 
+.B address
+.
+.TP 15
+.B
+size
+Number of bytes to allocate (rounded by the system in a 
+machine dependent way to an integral number of virtual pages).
+.TP 15
+.B
+anywhere
+If true, the kernel should find and allocate any region of 
+the specified size, and return the address of the resulting region in 
+.B address
+.  If false, virtual memory will be allocated starting at
+.B address
+, rounded to a virtual page boundary if there 
+is sufficient space.
+
+.SH DESCRIPTION
+.B vm_allocate
+allocates a region of virtual memory, placing it in the
+specified task's address space.  The physical memory is not actually
+allocated until the new virtual memory is referenced.  By default, 
+the kernel rounds all addresses down 
+to the nearest page boundary and all memory sizes up to the nearest page 
+size.  The global variable 
+.B cnt.vm_page_size
+contains the page size.
+Initially, the pages of allocated memory will be protected
+to allow all forms of access, and will be inherited in child tasks as
+a copy.  Subsequent calls to 
+.B vm_map_protect
+and 
+.B vm_map_inherit
+may
+be used to change these properties.  The allocated region is always 
+zero-filled. 
+
+.SH DIAGNOSTICS
+.TP 25
+KERN_SUCCESS
+Memory allocated.
+.TP 25
+KERN_INVALID_ADDRESS
+Illegal address specified.
+.TP 25
+KERN_NO_SPACE
+Not enough space left to satisfy this request
+
+.SH SEE ALSO
+.B vm_deallocate, vm_map_inherit, vm_map_protect
+
diff --git a/share/man/man9/vm_deallocate.9 b/share/man/man9/vm_deallocate.9
new file mode 100644 (file)
index 0000000..30052e8
--- /dev/null
@@ -0,0 +1,97 @@
+.\" 
+.\"    $OpenBSD: vm_deallocate.9,v 1.1 1996/03/11 13:04:51 mickey Exp $
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" All Rights Reserved.
+.\" 
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\" 
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\" 
+.\" Carnegie Mellon requests users of this software to return to
+.\" 
+.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+.\"  School of Computer Science
+.\"  Carnegie Mellon University
+.\"  Pittsburgh PA 15213-3890
+.\" 
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\" 
+.TH vm_deallocate 9 9/19/93
+.CM 4
+.SH NAME
+.nf
+vm_deallocate  \-  releases a region of a task's address space
+.SH SYNOPSIS
+.nf
+.ft B
+#include <vm/vm_extern.h>
+
+.nf
+.ft B
+int vm_deallocate(map, address, size)
+       vm_map_t        map;
+       vm_address_t    address;
+       vm_size_t       size;
+
+
+.fi
+.ft P
+.SH ARGUMENTS
+.TP 15
+.B
+map
+Virtual memory map to be affected.
+.TP 15
+.B
+address
+Starting address (will be rounded down to a page boundary).
+.TP 15
+.B
+size
+Number of bytes to deallocate (will be rounded up to give a 
+page boundary).
+
+.SH DESCRIPTION
+.B vm_deallocate
+relinquishes access to a region of a map's
+address space, causing further access to that memory to fail.
+This address range will be available for reallocation.
+Note, that because of the rounding to virtual page boundaries, more
+than 
+.B size
+bytes may be deallocated. Use 
+.B cnt.vm_page_size
+find out the current virtual page size.
+
+This call may be used to deallocte memory that was passed to a task
+in a message (via out of line data). In that case, the rounding should
+cause no trouble, since the region of memory was allocated as a set
+of pages.
+
+The 
+.B vm_deallocate
+call affects only the map specified by the 
+.B map
+.
+Other maps which may have access to this memory may continue to reference it.
+
+.SH DIAGNOSTICS
+.TP 25
+KERN_SUCCESS
+Memory deallocated.
+.TP 25
+KERN_INVALID_ADDRESS
+Illegal or non-allocated address specified.
+
+.SH SEE ALSO
+.B vm_allocate
+
diff --git a/share/man/man9/vm_map_copy.9 b/share/man/man9/vm_map_copy.9
new file mode 100644 (file)
index 0000000..db6a650
--- /dev/null
@@ -0,0 +1,102 @@
+.\" 
+.\"    $OpenBSD: vm_map_copy.9,v 1.1 1996/03/11 13:04:51 mickey Exp $
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" All Rights Reserved.
+.\" 
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\" 
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\" 
+.\" Carnegie Mellon requests users of this software to return to
+.\" 
+.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+.\"  School of Computer Science
+.\"  Carnegie Mellon University
+.\"  Pittsburgh PA 15213-3890
+.\" 
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\" 
+.TH vm_map_copy 9 9/19/93
+.CM 4
+.SH NAME
+.nf
+vm_map_copy  \-  copies memory to a destination address
+.SH SYNOPSIS
+.nf
+.ft B
+#include <vm/vm_map.h>
+
+.nf
+.ft B
+void vm_map_copy (dst_map, src_map, dst_addr, len, sc_addr, dst_alloc, src_destroy)
+       vm_map_t        src_map, dst_map;
+       vm_offset_t     src_addr, dst_addr;
+       vm_size_t       len;
+       boolean_t       dst_alloc, src_destroy;
+.fi
+.ft P
+.SH ARGUMENTS
+.TP 15
+.B
+dst_map
+Virtual memory map to be affected.
+.TP 15
+.B
+src_map
+Virtual memory map to copy from.
+.TP 15
+.B
+dst_addr
+Address in \fBdst_map\fR
+of the start of the destination range.
+.TP 15
+.B
+len
+Number of bytes to copy.
+.TP 15
+.B
+src_addr
+Address in \fBsrc_map\fR
+of the start of the source range.
+.TP 15
+.B
+dst_alloc
+Allocate space for destination if none exists.
+.TP 15
+.B
+src_destroy
+Destroy the source after copy completion.
+.SH DESCRIPTION
+\fBvm_map_copy\fR causes the source memory range to be copied to
+the destination address.  The source and destination memory ranges
+may overlap.  The destination address range must already be allocated and
+writable; the source range must be readable.
+
+\fBvm_map_copy\fR is equivalent to vm_read followed by vm_write.
+.SH DIAGNOSTICS
+.TP 25
+KERN_SUCCESS
+Memory copied.
+.TP 25
+KERN_PROTECTION_FAILURE
+Either the destination region was not 
+not writable, or the source region was not readable.
+.TP 25
+KERN_INVALID_ADDRESS
+Illegal or non-allocated address specified or 
+insufficient memory allocated at one of the addresses.
+.SH BUGS
+The current implementation requires that \fBsrc_addr\fR,
+\fBlen\fR, and \fBdst_addr\fR all be page-aligned.
+Otherwise, KERN_INVALID_ARGUMENT is returned.
+.SH SEE ALSO
+vm_map_protect(9),
diff --git a/share/man/man9/vm_map_inherit.9 b/share/man/man9/vm_map_inherit.9
new file mode 100644 (file)
index 0000000..5172ec3
--- /dev/null
@@ -0,0 +1,112 @@
+.\" 
+.\"    $OpenBSD: vm_map_inherit.9,v 1.1 1996/03/11 13:04:52 mickey Exp $
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" All Rights Reserved.
+.\" 
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\" 
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\" 
+.\" Carnegie Mellon requests users of this software to return to
+.\" 
+.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+.\"  School of Computer Science
+.\"  Carnegie Mellon University
+.\"  Pittsburgh PA 15213-3890
+.\" 
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\" 
+.TH vm_map_inherit 9 9/19/93
+.CM 4
+.SH NAME
+.nf
+vm_map_inherit  \-  specifies inheritence of address space 
+.SH SYNOPSIS
+.nf
+.ft B
+#include <vm/vm_map.h>
+
+.nf
+.ft B
+int    vm_inherit(map, start, end, new_inheritance)
+       vm_map_t        map;
+       vm_offset_t     start, end;
+       vm_inherit_t    new_inheritance;
+
+
+.fi
+.ft P
+.SH ARGUMENTS
+.TP 15
+.B
+map
+Virtual memory map to be affected.
+.TP 15
+.B
+start
+Starting address (will be rounded down to a page
+boundary). 
+.TP 15
+.B
+end
+Ending address (will be rounded down to a page
+boundary). 
+.TP 15
+.B
+new_inheritance
+How this memory is to be inherited in child maps.  
+Inheritance is specified by using one of these following three values:
+.TP 15
+.B
+VM_INHERIT_SHARE
+Child maps will share this memory with this map.
+.TP 15
+.B
+VM_INHERIT_COPY
+Child maps will receive a copy of this region.
+.TP 15
+.B
+VM_INHERIT_NONE
+This region will be absent from child maps.
+
+.SH DESCRIPTION
+.B vm_map_inherit
+specifies how a region of a virtual address space
+is to be passed to child maps at the time of map creation.
+Inheritance is an attribute of virtual pages, thus the addresses
+and size of memory to be set will be rounded out to refer to
+whole pages.
+
+Setting 
+.B vm_map_inherit
+to 
+.B VM_INHERIT_SHARE
+and forking a child
+map is the only way two
+.B tasks
+can share physical memory.
+Remember that all the 
+.B theads
+of a given task share all the same
+memory.
+
+.SH DIAGNOSTICS
+.TP 25
+KERN_SUCCESS
+Memory protected.
+.TP 25
+KERN_INVALID_ADDRESS
+Illegal address specified.
+
+.SH SEE ALSO
+.B vm_map_fork
+
diff --git a/share/man/man9/vm_map_protect.9 b/share/man/man9/vm_map_protect.9
new file mode 100644 (file)
index 0000000..1dedcfc
--- /dev/null
@@ -0,0 +1,103 @@
+.\" 
+.\"    $OpenBSD: vm_map_protect.9,v 1.1 1996/03/11 13:04:53 mickey Exp $
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" All Rights Reserved.
+.\" 
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\" 
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\" 
+.\" Carnegie Mellon requests users of this software to return to
+.\" 
+.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+.\"  School of Computer Science
+.\"  Carnegie Mellon University
+.\"  Pittsburgh PA 15213-3890
+.\" 
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\" 
+.TH vm_map_protect 9 9/19/93
+.CM 4
+.SH NAME
+.nf
+vm_map_protect  \-  change protection of memory
+.SH SYNOPSIS
+.nf
+.ft B
+#include <vm/vm_map.h>
+
+.nf
+.ft B
+int    vm_map_protect(map, start, end, new_prot, set_max)
+       vm_map_t        map;
+       vm_offset_t     start, end;
+       vm_prot_t       new_protection;
+       boolean_t       set_maximum;
+
+
+.fi
+.ft P
+.SH ARGUMENTS
+.TP 15
+.B
+map
+Virtual memory map to be affected.
+.TP 15
+.B
+start
+Starting address (will be rounded down to a
+page boundary).
+.TP 15
+.B
+end
+Ending address (will be rounded down to a
+page boundary).
+.TP 15
+.B
+new_prot
+A new protection value for this region; a set of:
+\fBVM_PROT_READ\fR, \fBVM_PROT_WRITE\fR, \fBVM_PROT_EXECUTE\fR.
+.TP 15
+.B
+set_max
+If set, make the protection change apply to the 
+maximum protection associated with this address range;
+otherwise, the current protection on this
+range is changed.  If the maximum protection is reduced below the
+current protection, both will be changed to reflect the new maximum.
+
+.SH DESCRIPTION
+.B vm_map_protect
+sets the virtual memory access privileges for a
+range of allocated addresses in a task's virtual address space.
+The protection argument describes a combination of read, write,
+and execute accesses that should be \fBpermitted\fR.
+
+The enforcement of virtual memory protection is machine-dependent.
+Nominally read access requires VM_PROT_READ permission, write access
+requires VM_PROT_WRITE permission, and execute access requires
+VM_PROT_EXECUTE permission.  However, some combinations of access
+rights may not be supported.  In particular, the kernel interface
+allows write access to require VM_PROT_READ and VM_PROT_WRITE
+permission and execute access to require VM_PROT_READ permission.
+
+.SH DIAGNOSTICS
+.TP 25
+KERN_SUCCESS
+Memory protected.
+.TP 25
+KERN_PROTECTION_FAILURE
+An attempt was made to increase the current 
+or maximum protection beyond the existing maximum protection value.
+.TP 25
+KERN_INVALID_ADDRESS
+Illegal or non-allocated address specified.