Annotation of embedaddon/nginx/src/os/unix/ngx_sunpro_atomic_sparc64.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #if (NGX_PTR_SIZE == 4)
9: #define NGX_CASA ngx_casa
10: #else
11: #define NGX_CASA ngx_casxa
12: #endif
13:
14:
15: ngx_atomic_uint_t
16: ngx_casa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
17:
18: ngx_atomic_uint_t
19: ngx_casxa(ngx_atomic_uint_t set, ngx_atomic_uint_t old, ngx_atomic_t *lock);
20:
21: /* the code in src/os/unix/ngx_sunpro_sparc64.il */
22:
23:
24: static ngx_inline ngx_atomic_uint_t
25: ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
26: ngx_atomic_uint_t set)
27: {
28: set = NGX_CASA(set, old, lock);
29:
30: return (set == old);
31: }
32:
33:
34: static ngx_inline ngx_atomic_int_t
35: ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add)
36: {
37: ngx_atomic_uint_t old, res;
38:
39: old = *value;
40:
41: for ( ;; ) {
42:
43: res = old + add;
44:
45: res = NGX_CASA(res, old, value);
46:
47: if (res == old) {
48: return res;
49: }
50:
51: old = res;
52: }
53: }
54:
55:
56: #define ngx_memory_barrier() \
57: __asm (".volatile"); \
58: __asm ("membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad"); \
59: __asm (".nonvolatile")
60:
61: #define ngx_cpu_pause()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>