table of contents
other sections
COPY(9) | Kernel Developer's Manual | COPY(9) |
NAME¶
copy
,
copyin
,
copyin_nofault
,
copyout
,
copyout_nofault
,
copystr
,
copyinstr
—
kernel copy functions
SYNOPSIS¶
#include
<sys/types.h>
#include
<sys/systm.h>
int
copyin
(const
void *uaddr,
void *kaddr,
size_t len);
int
copyin_nofault
(const
void *uaddr,
void *kaddr,
size_t len);
int
copyout
(const
void *kaddr,
void *uaddr,
size_t len);
int
copyout_nofault
(const
void *kaddr,
void *uaddr,
size_t len);
int
copystr
(const
void *kfaddr,
void *kdaddr,
size_t len,
size_t *done);
int
copyinstr
(const
void *uaddr,
void *kaddr,
size_t len,
size_t *done);
DESCRIPTION¶
Thecopy
functions are designed to copy
contiguous data from one address to another. All but
copystr
() copy data from user-space to
kernel-space or vice-versa.
The copyin
() and
copyin_nofault
() functions copy
len bytes of data from the user-space address
uaddr to the kernel-space address
kaddr.
The copyout
() and
copyout_nofault
() functions copy
len bytes of data from the kernel-space
address kaddr to the user-space address
uaddr.
The copyin_nofault
() and
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.
The copystr
() function copies a
NUL-terminated string, at most len bytes
long, from kernel-space address kfaddr to
kernel-space address kdaddr. The number of
bytes actually copied, including the terminating NUL, is returned in
*done (if
done is
non-NULL
).
The copyinstr
() function copies a
NUL-terminated string, at most len bytes
long, from user-space address uaddr to
kernel-space address kaddr. The number of
bytes actually copied, including the terminating NUL, is returned in
*done (if
done is
non-NULL
).
RETURN VALUES¶
Thecopy
functions return 0 on success or
EFAULT
if a bad address is encountered. In
addition, the copyin_nofault
() and
copyout_nofault
() functions return
EFAULT
if a page fault occurs, and the
copystr
() and
copyinstr
() functions return
ENAMETOOLONG
if the string is longer than
len bytes.
SEE ALSO¶
fetch(9), store(9)July 9, 2011 | Debian |