fetch, fubyte,
fuword, fuword16,
fuword32, fuword64,
fueword, fueword32,
fueword64 — fetch data from
user-space
#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);
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.
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.
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.