comparison src/os/unix/ngx_sunpro_atomic_sparc64.h @ 110:dad2fe8ecf08 NGINX_0_3_2

nginx 0.3.2 *) 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 <http://sysoev.ru>
date Wed, 12 Oct 2005 00:00:00 +0400
parents
children 408f195b3482
comparison
equal deleted inserted replaced
109:97da525033a1 110:dad2fe8ecf08
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 }