One Level Up
  Top Level
 
  src/os/unix/ngx_sunpro_atomic_sparc64.h - nginx-1.7.10
 Functions defined
 
 Macros defined
 
 Source code
  
 
 
 
- #if (NGX_PTR_SIZE == 4)
 
- #define NGX_CASA  ngx_casa
 
- #else
 
- #define NGX_CASA  ngx_casxa
 
- #endif
 
 
 
- ngx_atomic_uint_t
 
- ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
 
 
- ngx_atomic_uint_t
 
- ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
 
 
 
 
- static ngx_inline ngx_atomic_uint_t
 
- ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
 
-     ngx_atomic_uint_t set)
 
- {
 
-     set = NGX_CASA(set, old, lock);
 
 
-     return (set == old);
 
- }
 
 
 
- static ngx_inline ngx_atomic_int_t
 
- ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add)
 
- {
 
-     ngx_atomic_uint_t  old, res;
 
 
-     old = *value;
 
 
-     for ( ;; ) {
 
 
-         res = old + add;
 
 
-         res = NGX_CASA(res, old, value);
 
 
-         if (res == old) {
 
-             return res;
 
-         }
 
 
-         old = res;
 
-     }
 
- }
 
 
 
- #define ngx_memory_barrier()                                                  \
 
-         __asm (".volatile");                                                  \
 
-         __asm ("membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad");   \
 
-         __asm (".nonvolatile")
 
 
- #define ngx_cpu_pause()
 
  One Level Up
  Top Level