Reference

fuword32(9)

fetch data from user-space

Part of fetch(9).

NAME

fetch, fubyte, fuword, fuword16, fuword32, fuword64, fueptr, 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

fueptr(volatile const void *base, intptr_t *val);

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

DESCRIPTION

The fetch functions are designed to copy small amounts of data from user-space of the current process. If the user address is naturally aligned, then the operation will be performed atomically. Otherwise it may fail or be performed non-atomically, depending on the platform.

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.

fueptr()

Fetches a pointer from the user-space address base and stores the result in the variable pointed by val. fueptr() preserves the provenance of pointers fetched from user-space (see memory_model(7) for further information).

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 fueptr(), fueword(), fueword32() and fueword64() functions return 0 on success and -1 on failure.

SEE ALSO

copy(9), store(9)

History