One Level Up
Top Level
src/os/win32/ngx_atomic.h - nginx source code
Data types defined
Macros defined
Source code
- #ifndef _NGX_ATOMIC_H_INCLUDED_
- #define _NGX_ATOMIC_H_INCLUDED_
- #include <ngx_config.h>
- #include <ngx_core.h>
- #define NGX_HAVE_ATOMIC_OPS 1
- typedef int32_t ngx_atomic_int_t;
- typedef uint32_t ngx_atomic_uint_t;
- typedef volatile ngx_atomic_uint_t ngx_atomic_t;
- #define NGX_ATOMIC_T_LEN (sizeof("-2147483648") - 1)
- #if defined( __WATCOMC__ ) || defined( __BORLANDC__ ) || defined(__GNUC__) \
- || ( _MSC_VER >= 1300 )
- #define ngx_atomic_cmp_set(lock, old, set) \
- ((ngx_atomic_uint_t) InterlockedCompareExchange((long *) lock, set, old) \
- == old)
- #else
- #define ngx_atomic_cmp_set(lock, old, set) \
- (InterlockedCompareExchange((void **) lock, (void *) set, (void *) old) \
- == (void *) old)
- #endif
- #define ngx_atomic_fetch_add(p, add) InterlockedExchangeAdd((long *) p, add)
- #define ngx_memory_barrier()
- #if defined( __BORLANDC__ ) || ( __WATCOMC__ < 1230 )
- #define ngx_cpu_pause()
- #else
- #define ngx_cpu_pause() __asm { pause }
- #endif
- void ngx_spinlock(ngx_atomic_t *lock, ngx_atomic_int_t value, ngx_uint_t spin);
- #define ngx_trylock(lock) (*(lock) == 0 && ngx_atomic_cmp_set(lock, 0, 1))
- #define ngx_unlock(lock) *(lock) = 0
- #endif
One Level Up
Top Level