USCAS(3P)							     USCAS(3P)
      uscas, uscas32 - compare and swap operator
      #include <ulocks.h>
     int  uscas(void *destp, ptrdiff_t old, ptrdiff_t new, usptr_t *u);
     int  uscas32(void *destp, int32_t old, int32_t new, usptr_t *u);
     uscas emulates a hardware compare and swap	instruction.  It works on both
     single and	multi-processor	machines.  The exact algorithm used depends on
     the chip and system type.	uscas checks that the contents of destp	are
     equal to old and if they are, atomically changes the contents of destp to
     new.  If the contents are not the same, a zero is returned	and the
     operation may be repeated.	 Note that even	with one process performing
     this algorithm, the compare and swap operation may	fail, so the caller
     must always be prepared to	loop.  u points	to a previously	set up arena
     (using usinit(3P)).
     uscas does	a compare and swap on 32-bits for 32-bit processes and 64-bits
     for 64-bit	processes.
     uscas32 does a compare and	swap on	32-bits	regardless of the type of the
     process.
     acquire_lock(3), usinit(3P), ussetlock(3P), uspsema(3P).
     A value of	1 returned when	a successful compare and swap has been
     performed.	 Otherwise 0 is	returned.  There are no	errors.
									PPPPaaaaggggeeee 1111 [ Back ]
 |