| 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 |