Manual Page Search Parameters

COPY(9) Kernel Developer's Manual COPY(9)

copy, copyin, copyin_nofault, copyinptr, copyinptr_nofault, copyout, copyout_nofault, copyoutptr, copyoutptr_nofault, copystr, copyinstrheterogenous address space copy functions

#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
copyinptr(const void *uaddr, void *kaddr, size_t len);

int
copyinptr_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
copyoutptr(const void *kaddr, void *uaddr, size_t len);

int
copyoutptr_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);

The copy functions are designed to copy contiguous data from one address space to another.

() is deprecated and should be replaced with strlcpy(9). It will be removed from FreeBSD 13.

The () and copyin_nofault() functions copy len bytes of data from the user-space address uaddr to the kernel-space address kaddr without preserving pointer provenance. The copyinptr() and copyinptr_nofault() functions do the same, but preserve the provenance of copied pointers.

The () and () functions copy len bytes of data from the kernel-space address kaddr to the user-space address uaddr without perservice pointer provenance. The () and () functions do the same, but preserve the provenance of copied pointers.

The () and () 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 (), (), (), and () functions must be used when copying data which may contain pointers, but they should only be used when necessary to limit the number of code paths that could leak pointers.

The () 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 () 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).

The copy functions return 0 on success. All but copystr() return EFAULT if a bad address is encountered. The copyin_nofault() and copyout_nofault() functions return EFAULT if a page fault occurs. The copystr() and copyinstr() functions return ENAMETOOLONG if the string is longer than len bytes.

fetch(9), store(9)

December 9, 2025 release-26.07