NAME
copyin, copyout,
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
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
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.
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 copyinstr() and
copyoutstr() functions return
ENAMETOOLONG if the string is longer than
len bytes.