| UCAS(9) | Kernel Developer's Manual | UCAS(9) | 
NAME
 ucas — atomic memory operations on user-space address
SYNOPSIS
 #include <sys/systm.h>
int
ucas_ptr(volatile void *uptr, void *old, void *new, void *retp);
int
ucas_int(volatile int *uptr, int old, int new, int *retp);
 
DESCRIPTION
 These functions provide compare-and-swap (CAS) functionality on user-space address.
Except that they can be safely used for the kernel to access user-space address, they are semantically equivalents of atomic_cas(3).
- 
uptr
- 
The pointer to the variable. This should be a user-space pointer.
- 
old
- 
The value to compare with the variable.
- 
new
- 
The value to store to the variable.
- 
retp
- 
The pointer to the memory to store the old value of the variable.
 
RETURN VALUES
 On success, these functions return 0. In that case, the caller can consult the value returned via 
retp to check the result of the CAS operation. Otherwise, these functions return an appropriate 
errno(9) error code, typically 
EFAULT.
 
BUGS
 Conceptually, the retp argument of ucas_ptr() would be of void **. The current prototype is a compromise for usability.