---
name: "copystr"
section: "9"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/copystr"
---

# copystr(9)

kernel copy functions

## NAME

**copy**, **copyin**, **copyout**, **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*\

**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*);

## 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 **copy** routines provide the following functionality:

- **copyin**()

  Copies *len* bytes of data from the user-space address *uaddr* to the kernel-space address *kaddr*.

- **copyout**()

  Copies *len* bytes of data from the kernel-space address *kaddr* to the user-space address *uaddr*.

- **copystr**()

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

- **copyinstr**()

  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 or EFAULT if a bad address is encountered. In addition, the **copystr**(), and **copyinstr**() functions return ENAMETOOLONG if the string is longer than *len* bytes.

## SEE ALSO

[fetch(9)](/fetch/9.md), [store(9)](/store/9.md)
