xref: /freebsd/share/man/man9/copy.9 (revision ce834215a70ff69e7e222827437116eee2f9ac6f)
1.\"	$NetBSD: copy.9,v 1.2 1996/01/09 03:23:04 thorpej Exp $
2.\"
3.\" Copyright (c) 1996 Jason R. Thorpe.
4.\" All rights reserved.
5.\"
6.\" This code is derived from software contributed by Kenneth Stailey.
7.\"
8.\" Redistribution and use in source and binary forms, with or without
9.\" modification, are permitted provided that the following conditions
10.\" are met:
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\" 2. Redistributions in binary form must reproduce the above copyright
14.\"    notice, this list of conditions and the following disclaimer in the
15.\"    documentation and/or other materials provided with the distribution.
16.\" 3. All advertising materials mentioning features or use of this software
17.\"    must display the following acknowledgement:
18.\"	This product includes software developed for the NetBSD Project
19.\"	by Jason R. Thorpe.
20.\" 4. The name of the author may not be used to endorse or promote products
21.\"    derived from this software without specific prior written permission.
22.\"
23.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
30.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31.\" 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.Dd Jan 7, 1996
36.Dt COPY 9
37.Os FreeBSD
38.Sh NAME
39.Nm copy ,
40.Nm copyin ,
41.Nm copyout ,
42.Nm copystr ,
43.Nm copyinstr
44.Nd kernel copy functions
45.Sh SYNOPSIS
46.Fd #include <sys/types.h>
47.Fd #include <sys/systm.h>
48.Ft int
49.Fn copyin "const void *uaddr" "void *kaddr" "size_t len"
50.Ft int
51.Fn copyout "const void *kaddr" "void *uaddr" "size_t len"
52.Ft int
53.Fn copystr "const void *kfaddr" "void *kdaddr" "size_t len" "size_t *done"
54.Ft int
55.Fn copyinstr "const void *uaddr" "void *kaddr" "size_t len" "size_t *done"
56.\" .Ft int
57.\" .Fn copyoutstr "const void *kaddr" "void *uaddr" "size_t len" "size_t *done"
58.Sh DESCRIPTION
59The
60.Nm
61functions are designed to copy contiguous data from one address
62to another.  All but
63.Fn copystr
64copy data from user-space to kernel-space or vice-versa.
65.Pp
66The
67.Nm
68routines provide the following functionality:
69.Bl -tag -width "copyoutstr()"
70.It Fn copyin
71Copies
72.Pa len
73bytes of data from the user-space address
74.Pa uaddr
75to the kernel-space address
76.Pa kaddr .
77.It Fn copyout
78Copies
79.Pa len
80bytes of data from the kernel-space address
81.Pa kaddr
82to the user-space address
83.Pa uaddr .
84.It Fn copystr
85Copies a NULL-terminated string, at most
86.Pa len
87bytes long, from kernel-space address
88.Pa kfaddr
89to kernel-space address
90.Pa kdaddr .
91The number of bytes actually copied, including the terminating
92NULL, is returned in
93.Pa *done .
94.It Fn copyinstr
95Copies a NULL-terminated string, at most
96.Pa len
97bytes long, from user-space address
98.Pa uaddr
99to kernel-space address
100.Pa kaddr .
101The number of bytes actually copied, including the terminating
102NULL, is returned in
103.Pa *done .
104.\" .It Fn copyoutstr
105.\" Copies a NULL-terminated string, at most
106.\" bytes long, from kernel-space address
107.\" .Pa kaddr
108.\" to user-space address
109.\" .Pa uaddr .
110.\" The number of bytes actually copied, including the terminating
111.\" NULL, is returned in
112.\" .Pa *done .
113.El
114.Sh RETURN VALUES
115The
116.Nm
117functions return 0 on success or EFAULT if a bad address is encountered.
118In addition, the
119.Fn copystr ,
120and
121.Fn copyinstr
122.\" .Fn copyinstr ,
123.\" and
124.\" .Fn copyoutstr
125functions return ENAMETOOLONG if the string is longer than
126.Pa len
127bytes.
128.Sh SEE ALSO
129.Xr fetch 9 ,
130.Xr store 9 .
131