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 -- 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  ad-
       dress 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 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)

FreeBSD	13.2			 May 11, 2020			       COPY(9)

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=copy&sektion=9&manpath=FreeBSD+14.1-RELEASE+and+Ports>

home | help