FreeBSD manual
download PDF document: copy.9.pdf
COPY(9) FreeBSD Kernel Developer's Manual COPY(9)
NAME
copy, copyin, copyin_nofault, copyout, copyout_nofault, copystr,
copyinstr - heterogenous address space copy functions
SYNOPSIS
#include <sys/types.h>
#include <sys/systm.h>
int
copyin(const void *uaddr, void *kaddr, size_t len);
int
copyin_nofault(const void *uaddr, void *kaddr, size_t len);
int
copyout(const void *kaddr, void *uaddr, size_t len);
int
copyout_nofault(const void *kaddr, void *uaddr, size_t len);
int __deprecated
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);
DESCRIPTION
The copy functions are designed to copy contiguous data from one address
space to another.
copystr() is deprecated and should be replaced with strlcpy(9). It will
be removed from FreeBSD 13.
The copyin() and copyin_nofault() functions copy len bytes of data from
the user-space address uaddr to the kernel-space address kaddr.
The copyout() and copyout_nofault() functions copy len bytes of data from
the kernel-space address kaddr to the user-space address uaddr.
The copyin_nofault() and copyout_nofault() functions require that the
kernel-space and user-space data be accessible without incurring a page
fault. The source and destination addresses must be physically mapped
for read and write access, respectively, and neither the source nor
destination addresses may be pageable.
The copystr() function copies a NUL-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 NUL, is
returned in *done (if done is non-NULL).
The copyinstr() function copies a NUL-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 NUL, is
returned in *done (if done is non-NULL).
RETURN VALUES
The copy functions return 0 on success. All but copystr() return EFAULT
FreeBSD 14.0-RELEASE-p11 May 11, 2020 FreeBSD 14.0-RELEASE-p11