---
name: "fetch"
section: "9freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/fetch/9freebsd"
---

# fetch(9freebsd)

fetch data from user-space

## NAME

**fetch**, **fubyte**, **fuword**, **fuword16**, **fuword32**, **fuword64**, **fueword**, **fueword32**, **fueword64** – fetch data from user-space

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<sys/systm.h\>**

*int*\

**fubyte**(*volatile const void \*base*);

*long*\

**fuword**(*volatile const void \*base*);

*int*\

**fuword16**(*volatile const void \*base*);

*int32\_t*\

**fuword32**(*volatile const void \*base*);

*int64\_t*\

**fuword64**(*volatile const void \*base*);

*int*\

**fueword**(*volatile const void \*base*, *long \*val*);

*int*\

**fueword32**(*volatile const void \*base*, *int32\_t \*val*);

*int*\

**fueword64**(*volatile const void \*base*, *int64\_t \*val*);

**#include \<sys/resourcevar.h\>**

## DESCRIPTION

The **fetch** functions are designed to copy small amounts of data from user-space of the current process. If read is successful, it is performed atomically. The data read must be naturally aligned.

The **fetch** routines provide the following functionality:

- **fubyte**()

  Fetches a byte of data from the user-space address *base*. The byte read is zero-extended into the results variable.

- **fuword**()

  Fetches a word of data (long) from the user-space address *base*.

- **fuword16**()

  Fetches 16 bits of data from the user-space address *base*. The half-word read is zero-extended into the results variable.

- **fuword32**()

  Fetches 32 bits of data from the user-space address *base*.

- **fuword64**()

  Fetches 64 bits of data from the user-space address *base*.

- **fueword**()

  Fetches a word of data (long) from the user-space address *base* and stores the result in the variable pointed by *val*.

- **fueword32**()

  Fetches 32 bits of data from the user-space address *base* and stores the result in the variable pointed by *val*.

- **fueword64**()

  Fetches 64 bits of data from the user-space address *base* and stores the result in the variable pointed by *val*.

The callers of **fuword**(), **fuword32**() and **fuword64**() functions cannot distinguish between -1 read from userspace and function failure.

## RETURN VALUES

The **fubyte**(), **fuword**(), **fuword16**(), **fuword32**(), and **fuword64**() functions return the data fetched or -1 on failure. The **fueword**(), **fueword32**() and **fueword64**() functions return 0 on success and -1 on failure.

## SEE ALSO

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