table of contents
| CASU(9) | Kernel Developer's Manual | CASU(9) | 
NAME¶
casueword,
    casueword32, casuword,
    casuword32 — fetch, compare
    and store data from user-space
SYNOPSIS¶
#include
    <sys/types.h>
  
  #include <sys/systm.h>
int
  
  casueword(volatile
    u_long *base, u_long
    oldval, u_long
    *oldvalp, u_long
    newval);
int
  
  casueword32(volatile
    uint32_t *base, uint32_t
    oldval, uint32_t
    *oldvalp, uint32_t
    newval);
u_long
  
  casuword(volatile
    u_long *base, u_long
    oldval, u_long
    newval);
uint32_t
  
  casuword32(volatile
    uint32_t *base, uint32_t
    oldval, uint32_t
    newval);
DESCRIPTION¶
The casueword functions are designed to
    perform atomic compare-and-swap operation on the value in the usermode
    memory of the current process.
The casueword routines
    reads the value from user memory with address base,
    and compare the value read with oldval. If the
    values are equal, newval is written to the
    *base. In case of
    casueword32()
    and
    casueword(),
    old value is stored into the (kernel-mode) variable pointed by
    *oldvalp. The userspace value must be naturally
    aligned.
The callers of
    casuword()
    and
    casuword32()
    functions cannot distinguish between -1 read from userspace and function
    failure.
RETURN VALUES¶
The casuword() and
    casuword32() functions return the data fetched or -1
    on failure. The casueword() and
    casueword32() functions return 0 on success and -1
    on failure.
SEE ALSO¶
| October 21, 2014 | Debian |