Provided by: freebsd-manpages_12.2-1_all bug

NAME

       copy, copyin, copyin_nofault, copyout, copyout_nofault, copystr, copyinstr — kernel 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
       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 to another.  All but copystr()
       copy data from user-space to kernel-space or vice-versa.

       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 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.

SEE ALSO

       fetch(9), store(9)

Debian                                            June 15, 2017                                          COPY(9)