comparison src/os/unix/ngx_sunpro_atomic_sparc64.h @ 561:e48ebafc6939 release-0.3.2

nginx-0.3.2-RELEASE import *) Feature: the Sun Studio 10 C compiler support. *) Feature: the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", and "fastcgi_upstream_fail_timeout" directives.
author Igor Sysoev <igor@sysoev.ru>
date Wed, 12 Oct 2005 13:50:36 +0000
parents
children 9c2f3ed7a247
comparison
equal deleted inserted replaced
560:8886091eddd2 561:e48ebafc6939
1
2 /*
3 * Copyright (C) Igor Sysoev
4 */
5
6
7 #if (NGX_PTR_SIZE == 4)
8 #define NGX_CASA ngx_casa
9 #else
10 #define NGX_CASA ngx_casxa
11 #endif
12
13
14 ngx_atomic_uint_t
15 ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
16
17 ngx_atomic_uint_t
18 ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
19
20 /* the code in src/os/unix/ngx_sunpro_sparc64.il */
21
22
23 static ngx_inline ngx_atomic_uint_t
24 ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
25 ngx_atomic_uint_t set)
26 {
27 NGX_CASA(set, old, lock);
28
29 return (set == old);
30 }
31
32
33 static ngx_inline ngx_atomic_int_t
34 ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add)
35 {
36 ngx_atomic_uint_t old, res;
37
38 old = *value;
39
40 for ( ;; ) {
41
42 res = old + add;
43
44 NGX_CASA(res, old, value);
45
46 if (res == old) {
47 return res;
48 }
49
50 old = res;
51 }
52 }