COPYIN(9) | Kernel Developer's Manual | COPYIN(9) |
copyin
, copyout
,
copystr
, copyinstr
,
copyoutstr
, kcopy
—
kernel copy functions
#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
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);
int
copyoutstr
(const
void *kaddr, void
*uaddr, size_t len,
size_t *done);
int
kcopy
(const
void *kfaddr, void
*kdaddr, size_t
len);
The copyin
functions are designed to copy
contiguous data from one address to another. All but
copystr
()
and
kcopy
()
copy data from user-space to kernel-space or vice-versa.
The copyin
routines provide the following
functionality:
copyin
()copyout
()copystr
()NULL
.
Unlike the other copyin
functions,
copystr
()
does not
support returning EFAULT
when a bad address is
encountered.
copyinstr
()NULL
.copyoutstr
()NULL
.kcopy
()The copyin
functions return 0 on success
or EFAULT
if a bad address is encountered. In
addition, the copystr
(),
copyinstr
(), and
copyoutstr
() functions return
ENAMETOOLONG
if the string is longer than
len bytes.
November 23, 2015 | OpenBSD-current |