table of contents
CASU(9) | Kernel Developer's Manual | CASU(9) |
NAME¶
casueword
, casueword32
,
casuword
, casuword32
—
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¶
Thecasueword
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¶
Thecasuword
() 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¶
atomic(9), fetch(9), store(9)October 21, 2014 | Linux 4.19.0-10-amd64 |