| COPY(9) | Kernel Developer's Manual | COPY(9) | 
copy, copyin,
  copyout, copystr,
  copyinstr, copyoutstr —
#include <sys/types.h>
#include <sys/systm.h>
int
  
  copyin(const
    void *uaddr, void
    *kaddr, size_t
    len);
int
  
  copyout(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);
int
  
  copyoutstr(const
    void *kaddr, void
    *uaddr, size_t len,
    size_t *done);
int
  
  copyin_proc(struct
    proc *p, const void
    *uaddr, void
    *kaddr, size_t
    len);
int
  
  copyout_proc(struct
    proc *p, const void
    *kaddr, void
    *uaddr, size_t
    len);
int
  
  ioctl_copyin(int
    ioctlflags, const void
    *src, void *dst,
    size_t len);
int
  
  ioctl_copyout(int
    ioctlflags, const void
    *src, void *dst,
    size_t len);
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 copy routines provide the following
    functionality:
copyin()copyout()copystr()copyinstr()copyoutstr()copyin_proc()copyin(), except it operates on the address
      space of the process p.copyout_proc()copyout(), except it operates on the address
      space of the process p.ioctl_copyin()copyin(), except it operates on kernel
      addresses when the FKIOCTL flag is passed in
      ioctlflags from the ioctl call.ioctl_copyout()copyout(), except it operates on kernel
      addresses when the FKIOCTL flag is passed in
      ioctlflags from the ioctl call.copy functions return 0 on success or
  EFAULT if a bad address is encountered. In addition,
  the copystr(), copyinstr(),
  and copyoutstr() functions return
  ENAMETOOLONG if the string is longer than
  len bytes.
| August 28, 2005 | NetBSD 9.3 |