GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
CASU(9) FreeBSD 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, -1 on failure to access memory, and 1 when comparison or store failed. The store can fail on load-linked/store-conditional architectures.

atomic(9), fetch(9), store(9)
April 19, 2019 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 9 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.