Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
COPY(9) 		    Kernel Developer's Manual			 COPY(9)

NAME
     copy,  copyin, copyin_nofault, copyout, copyout_nofault, copystr, copyinstr
     -- heterogeneous 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  ker-
     nel-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 ad-
     dresses 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  copyin-
     str() functions return ENAMETOOLONG if the string is longer than len bytes.

SEE ALSO
     fetch(9), store(9)

FreeBSD ports 15.1		  May 11, 2020				 COPY(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=copy&sektion=9&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help