diff options
Diffstat (limited to 'share/man/man9/copy.9')
-rw-r--r-- | share/man/man9/copy.9 | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/share/man/man9/copy.9 b/share/man/man9/copy.9 new file mode 100644 index 0000000..37c7a0c --- /dev/null +++ b/share/man/man9/copy.9 @@ -0,0 +1,173 @@ +.\" $NetBSD: copy.9,v 1.2 1996/01/09 03:23:04 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. +.\" +.\" $FreeBSD$ +.\" +.Dd July 9, 2011 +.Dt COPY 9 +.Os +.Sh NAME +.Nm copy , +.Nm copyin , +.Nm copyin_nofault , +.Nm copyout , +.Nm copyout_nofault , +.Nm copystr , +.Nm copyinstr +.Nd kernel copy functions +.Sh SYNOPSIS +.In sys/types.h +.In sys/systm.h +.Ft int +.Fn copyin "const void *uaddr" "void *kaddr" "size_t len" +.Ft int +.Fn copyin_nofault "const void *uaddr" "void *kaddr" "size_t len" +.Ft int +.Fn copyout "const void *kaddr" "void *uaddr" "size_t len" +.Ft int +.Fn copyout_nofault "const void *kaddr" "void *uaddr" "size_t len" +.Ft int +.Fn copystr "const void *kfaddr" "void *kdaddr" "size_t len" "size_t *done" +.Ft int +.Fn copyinstr "const void *uaddr" "void *kaddr" "size_t len" "size_t *done" +.\" .Ft int +.\" .Fn copyoutstr "const void *kaddr" "void *uaddr" "size_t len" "size_t *done" +.Sh DESCRIPTION +The +.Nm +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 +.Fn copyin +and +.Fn copyin_nofault +functions copy +.Fa len +bytes of data from the user-space address +.Fa uaddr +to the kernel-space address +.Fa kaddr . +.Pp +The +.Fn copyout +and +.Fn copyout_nofault +functions copy +.Fa len +bytes of data from the kernel-space address +.Fa kaddr +to the user-space address +.Fa uaddr . +.Pp +The +.Fn copyin_nofault +and +.Fn copyout_nofault +functions require that the kernel-space and user-space data be +accessible without incurring a page fault. +The source and destination addresses must be physically mapped for +read and write access, respectively, and neither the source nor +destination addresses may be pageable. +.Pp +The +.Fn copystr +function copies a NUL-terminated string, at most +.Fa len +bytes long, from kernel-space address +.Fa kfaddr +to kernel-space address +.Fa kdaddr . +The number of bytes actually copied, including the terminating +NUL, is returned in +.Fa *done +(if +.Fa done +is +.No non- Ns Dv NULL ) . +.Pp +The +.Fn copyinstr +function copies a NUL-terminated string, at most +.Fa len +bytes long, from user-space address +.Fa uaddr +to kernel-space address +.Fa kaddr . +The number of bytes actually copied, including the terminating +NUL, is returned in +.Fa *done +(if +.Fa done +is +.No non- Ns Dv NULL ) . +.\" .It Fn copyoutstr +.\" Copies a NUL-terminated string, at most +.\" bytes long, from kernel-space address +.\" .Fa kaddr +.\" to user-space address +.\" .Fa uaddr . +.\" The number of bytes actually copied, including the terminating +.\" NUL, is returned in +.\" .Fa *done . +.Sh RETURN VALUES +The +.Nm +functions return 0 on success or +.Er EFAULT +if a bad address is encountered. +In addition, the +.Fn copyin_nofault +and +.Fn copyout_nofault +functions return +.Er EFAULT +if a page fault occurs, and the +.Fn copystr +and +.Fn copyinstr +.\" .Fn copyinstr , +.\" and +.\" .Fn copyoutstr +functions return +.Er ENAMETOOLONG +if the string is longer than +.Fa len +bytes. +.Sh SEE ALSO +.Xr fetch 9 , +.Xr store 9 |