NAME
copyin, copyout,
copystr, 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
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);
DESCRIPTION
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()- 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.
copystr()- Copies a null-terminated string, at most len bytes
long, from kernel-space address kfaddr to
kernel-space address kdaddr. The number of bytes
actually copied, including the terminating null, is returned in
*done, if done is not
NULL.Unlike the other
copyinfunctions,copystr() does not support returningEFAULTwhen a bad address is encountered. 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 copystr(),
copyinstr(), and
copyoutstr() functions return
ENAMETOOLONG if the string is longer than
len bytes.