NAME
copyin
, copyout
,
copyinstr
, copyoutstr
,
kcopy
—
kernel copy functions
SYNOPSIS
#include
<sys/types.h>
#include <sys/systm.h>
int
copyin
(const
void *uaddr, void
*kaddr, size_t
len);
int
copyout
(const
void *kaddr, void
*uaddr, size_t
len);
int
copyinstr
(const
void *uaddr, void
*kaddr, size_t len,
size_t *done);
int
copyoutstr
(const
void *kaddr, void
*uaddr, size_t len,
size_t *done);
int
kcopy
(const
void *kfaddr, void
*kdaddr, size_t
len);
DESCRIPTION
The copyin
functions are designed to copy
contiguous data from one address to another. All but
kcopy
()
copy data from user-space to kernel-space or vice-versa.
The copyin
routines provide the following
functionality:
copyin
()- Copies len bytes of data from the user-space address uaddr to the kernel-space address kaddr.
copyout
()- Copies len bytes of data from the kernel-space address kaddr to the user-space address uaddr.
copyinstr
()- Copies a null-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 null, is returned in
*done, if done is not
NULL
. copyoutstr
()- Copies a null-terminated string, at most len bytes
long, from kernel-space address kaddr to user-space
address uaddr. The number of bytes actually copied,
including the terminating null, is returned in
*done, if done is not
NULL
. kcopy
()- Copies len bytes of data from the kernel-space address kfaddr to the kernel-space address kdaddr.
RETURN VALUES
The copyin
functions return 0 on success
or EFAULT
if a bad address is encountered. In
addition, the copyinstr
() and
copyoutstr
() functions return
ENAMETOOLONG
if the string is longer than
len bytes.