3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #include <ngx_config.h>
13 ngx_spinlock(ngx_atomic_t
*lock
, ngx_atomic_int_t value
, ngx_uint_t spin
)
16 #if (NGX_HAVE_ATOMIC_OPS)
22 if (*lock
== 0 && ngx_atomic_cmp_set(lock
, 0, value
)) {
28 for (n
= 1; n
< spin
; n
<<= 1) {
30 for (i
= 0; i
< n
; i
++) {
34 if (*lock
== 0 && ngx_atomic_cmp_set(lock
, 0, value
)) {
47 #error ngx_spinlock() or ngx_atomic_cmp_set() are not defined !