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

FreeBSD Manual Pages

  
 
  

home | help
COPY(9)			 BSD 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 des-
     tination 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)

BSD				 May 11, 2020				   BSD

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO

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

home | help