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.