COPY(9) | Kernel Developer's Manual | COPY(9) |
copy
, copyin
,
copyout
, copystr
,
copyinstr
, copyoutstr
—
#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
copyin_proc
(struct
proc *p, const void
*uaddr, void
*kaddr, size_t
len);
int
copyout_proc
(struct
proc *p, const void
*kaddr, void
*uaddr, size_t
len);
int
ioctl_copyin
(int
ioctlflags, const void
*src, void *dst,
size_t len);
int
ioctl_copyout
(int
ioctlflags, const void
*src, void *dst,
size_t len);
copy
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 copy
routines provide the following
functionality:
copyin
()copyout
()copystr
()copyinstr
()copyoutstr
()copyin_proc
()copyin
(), except it operates on the address
space of the process p.copyout_proc
()copyout
(), except it operates on the address
space of the process p.ioctl_copyin
()copyin
(), except it operates on kernel
addresses when the FKIOCTL
flag is passed in
ioctlflags from the ioctl call.ioctl_copyout
()copyout
(), except it operates on kernel
addresses when the FKIOCTL
flag is passed in
ioctlflags from the ioctl call.copy
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.
August 28, 2005 | NetBSD 9.0 |