CASU(9) | Kernel Developer's Manual | CASU(9) |
casueword
,
casueword32
, casuword
,
casuword32
— fetch, compare
and store data from user-space
#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);
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.
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.
October 21, 2014 | Debian |