Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CASU(9) 		    Kernel Developer's Manual			 CASU(9)

NAME
     casueword,  casueword32,  casuword,  casuword32 -- fetch, compare and store
     data from user-space

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
     The casueword functions are designed to perform atomic compare-and-swap op-
     eration 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  user-
     space value must be naturally aligned.

     The callers of casuword() and casuword32() functions cannot distinguish be-
     tween -1 read from userspace and function failure.

RETURN VALUES
     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.

SEE ALSO
     atomic(9), fetch(9), store(9)

FreeBSD ports 15.quarterly	 April 19, 2019 			 CASU(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=casueword&sektion=9&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help