diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 5545025b858e..8c0fe46aee97 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1,11 +1,13 @@ -# $NetBSD: Makefile,v 1.2 1996/01/09 01:07:35 thorpej Exp $ +# $NetBSD: Makefile,v 1.3 1996/01/09 01:44:42 thorpej Exp $ # Makefile for section 9 (kernel function and variable) manual pages. -MAN= boot.9 disk.9 doshutdownhooks.9 inittodr.9 resettodr.9 \ +MAN= boot.9 copy.9 disk.9 doshutdownhooks.9 inittodr.9 resettodr.9 \ shutdownhook_establish.9 time.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 \ + copy.9 copyinstr.9 copy.9 copyoutstr.9 MLINKS+=disk.9 disk_init.9 disk.9 disk_attach.9 disk.9 disk_detatch.9 \ disk.9 disk_busy.9 disk.9 disk_unbusy.9 disk.9 disk_find.9 \ disk.9 disk_resetstat.9 diff --git a/share/man/man9/copy.9 b/share/man/man9/copy.9 new file mode 100644 index 000000000000..02903b70051c --- /dev/null +++ b/share/man/man9/copy.9 @@ -0,0 +1,111 @@ +.\" $NetBSD: copy.9,v 1.1 1996/01/09 01:44:43 thorpej Exp $ +.\" +.\" Copyright (c) 1996 Jason R. Thorpe. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed by Kenneth Stailey. +.\" +.\" 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 for the NetBSD Project +.\" by Jason R. Thorpe. +.\" 4. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 Jan 7, 1996 +.Dt COPY 9 +.Os NetBSD +.Sh NAME +.Nm copy +.Nd kernel copy functions +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn copyin "void *uaddr" "void *kaddr" "size_t len" +.Ft int +.Fn copyout "void *kaddr" "void *uaddr" "size_t len" +.Ft int +.Fn copystr "void *kfaddr" "void *kdaddr" "size_t len" "size_t *done" +.Ft int +.Fn copyinstr "void *uaddr" "void *kaddr" "size_t len" "size_t *done" +.Ft int +.Fn copyoutstr "void *kaddr" "void *uaddr" "size_t len" "size_t *done" +.Sh DESCRIPTION +The copy functions are designed to copy contiguous data from one address +to another. All but +.Fn copystr +copy data from user-space to kernel-space or vice-versa. +.Pp +The +.Nm +routines provide the following functionality: +.Bl -tag -width "copyoutstr()" +.It Fn copyin +Copies +.Pa len +bytes of data from the user-space address +.Pa uaddr +to the kernel-space address +.Pa kaddr . +.It Fn copyout +Copies +.Pa len +bytes of data from the kernel-space address +.Pa kaddr +to the user-space address +.Pa uaddr . +.It Fn copystr +Copies a NULL-terminated string, at most +.Pa len +bytes long, from kernel-space address +.Pa kfaddr +to kernel-space address +.Pa kdaddr . +The number of bytes actually copied, including the terminating +NULL, is returned in +.Pa *done . +.It Fn copyinstr +Copies a NULL-terminated string, at most +.Pa len +bytes long, from user-space address +.Pa uaddr +to kernel-space address +.Pa kaddr . +The number of bytes actually copied, including the terminating +NULL, is returned in +.Pa *done . +.It Fn copyoutstr +Copies a NULL-terminated string, at most +bytes long, from kernel-space address +.Pa kaddr +to user-space address +.Pa uaddr . +The number of bytes actually copied, including the terminating +NULL, is returned in +.Pa *done . +.El +.Sh RETURN VALUES +The +.Nm +functions return 0 on success or EFAULT if a bad address is encountered.