copy(9)
- NetBSD Manual Pages
COPY(9) NetBSD Kernel Developer's Manual COPY(9)
NAME
copy, copyin, copyout, copystr, copyinstr, copyoutstr -- kernel space
to/from user space 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
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);
DESCRIPTION
The 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() Copies len bytes of data from the user-space address
uaddr in the current process to the kernel-space address
kaddr.
copyout() Copies len bytes of data from the kernel-space address
kaddr to the user-space address uaddr in the current
process.
copystr() Copies a NUL-terminated string, at most len bytes long,
from kernel-space address kfaddr to kernel-space address
kdaddr. If the done argument is non-NULL, the number of
bytes actually copied, including the terminating NUL, is
returned in *done.
copyinstr() Copies a NUL-terminated string, at most len bytes long,
from user-space address uaddr in the current process to
kernel-space address kaddr. If the done argument is non-
NULL, the number of bytes actually copied, including the
terminating NUL, is returned in *done.
copyoutstr() Copies a NUL-terminated string, at most len bytes long,
from kernel-space address kaddr to user-space address
uaddr in the current process. If the done argument is
non-NULL, the number of bytes actually copied, including
the terminating NUL, is returned in *done.
copyin_proc() Like copyin(), except it operates on the address space of
the process p.
copyout_proc() Like copyout(), except it operates on the address space
of the process p.
ioctl_copyin() Like copyin(), except it operates on kernel addresses
when the FKIOCTL flag is passed in ioctlflags from the
ioctl call.
ioctl_copyout()
Like copyout(), except it operates on kernel addresses
when the FKIOCTL flag is passed in ioctlflags from the
ioctl call.
RETURN VALUES
The 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.
SEE ALSO
ufetch(9), ustore(9)
NetBSD 10.99 August 28, 2005 NetBSD 10.99
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.