Man

Command Section
FETCH(9)               FreeBSD Kernel Developer's Manual              FETCH(9)

NAME
     fetch, fubyte, fuswintr, 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);

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

     int32_t
     fueword32(volatile const void *base, int32_t *val);

     int64_t
     fueword64(volatile const void *base, int64_t *val);

     #include <sys/resourcevar.h>

     int
     fuswintr(void *base);

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.

     fuswintr()   Fetches a short word of data from the user-space address
                  base.  This function is safe to call during an interrupt
                  context.

     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(), fuword64(), and
     fuswintr() 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), store(9)

FreeBSD 11.1-RELEASE-p4        October 29, 2014        FreeBSD 11.1-RELEASE-p4
Command Section