ATOMIC_CAS man page on NetBSD

Man page or keyword search:  
man Server   9087 pages
apropos Keyword Search (all sections)
Output format
NetBSD logo
[printable version]

ATOMIC_CAS(3)		 BSD Library Functions Manual		 ATOMIC_CAS(3)

NAME
     atomic_cas, atomic_cas_32, atomic_cas_uint, atomic_cas_ulong,
     atomic_cas_ptr, atomic_cas_64, atomic_cas_32_ni, atomic_cas_uint_ni,
     atomic_cas_ulong_ni, atomic_cas_ptr_ni, atomic_cas_64_ni — atomic com‐
     pare-and-swap operations

SYNOPSIS
     #include <sys/atomic.h>

     uint32_t
     atomic_cas_32(volatile uint32_t *ptr, uint32_t old, uint32_t new);

     unsigned int
     atomic_cas_uint(volatile unsigned int *ptr, unsigned int old,
	 unsigned int new);

     unsigned long
     atomic_cas_ulong(volatile unsigned long *ptr, unsigned long old,
	 unsigned long new);

     void *
     atomic_cas_ptr(volatile void *ptr, void *old, void *new);

     uint64_t
     atomic_cas_64(volatile uint64_t *ptr, uint64_t old, uint64_t new);

     uint32_t
     atomic_cas_32_ni(volatile uint32_t *ptr, uint32_t old, uint32_t new);

     unsigned int
     atomic_cas_uint_ni(volatile unsigned int *ptr, unsigned int old,
	 unsigned int new);

     unsigned long
     atomic_cas_ulong_ni(volatile unsigned long *ptr, unsigned long old,
	 unsigned long new);

     void *
     atomic_cas_ptr_ni(volatile void *ptr, void *old, void *new);

     uint64_t
     atomic_cas_64_ni(volatile uint64_t *ptr, uint64_t old, uint64_t new);

DESCRIPTION
     The atomic_cas family of functions perform a compare-and-swap operation
     in an atomic fashion.  The value of the variable referenced by ptr is
     compared against old.  If the values are equal, new is stored in the
     variable referenced by ptr.

     The old value of the variable referenced by ptr is always returned
     regardless of whether or not the new value was stored.  Applications can
     test for success of the operation by comparing the return value to the
     value passed as old; if they are equal then the new value was stored.

     The non-interlocked variants, *_ni(), guarantee atomicity within the same
     CPU with respect to interrupts and preemption.  For example, they are
     suitable for synchronizing compare-and-swap operations on a variable
     shared by a thread and an interrupt that are bound to the same CPU.  The
     *_ni() variants are not atomic with respect to different CPUs.  *_ni()
     variants should avoid the interprocessor synchronization overhead of the
     standard compare-and-swap operations.

     The 64-bit variants of these functions are available only on platforms
     that can support atomic 64-bit memory access.  Applications can check for
     the availability of 64-bit atomic memory operations by testing if the
     pre-processor macro __HAVE_ATOMIC64_OPS is defined.

SEE ALSO
     atomic_ops(3)

HISTORY
     The atomic_cas functions first appeared in NetBSD 5.0.

NOTES
     On some architectures, a *_ni() variant is merely an alias for the corre‐
     sponding standard compare-and-swap operation.  While the non-interlocked
     variant behaves correctly on those architectures, it does not avoid the
     interprocessor synchronization overhead.

BSD			       February 11, 2010			   BSD
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server NetBSD

List of man pages available for NetBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net