annotate src/os/unix/ngx_gcc_atomic_ppc.h @ 391:1d9bef53cd8e

Range filter: late_ranges functionality. Add one more filtering point after postpone filter. This allows to serve range capable replies with subrequests. It's not as efficient as range filtering for static data (i.e. doesn't save us from reading data from disk if some filter needs them in memory), but it may save some network bandwidth for us and for our users.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 21 Jul 2008 05:33:01 +0400
parents 6eb1e38f0f1f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 /*
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 * The ppc assembler treats ";" as comment, so we have to use "\n".
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9 * The minus in "bne-" is a hint for the branch prediction unit that
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10 * this branch is unlikely to be taken.
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
11 * The "1b" means the nearest backward label "1" and the "1f" means
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
12 * the nearest forward label "1".
126
df17fbafec8f nginx 0.3.10
Igor Sysoev <http://sysoev.ru>
parents: 112
diff changeset
13 *
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14 * The "b" means that the base registers can be used only, i.e.
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15 * any register except r0. The r0 register always has a zero value and
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
16 * could not be used in "addi r0, r0, 1".
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
17 * The "=&b" means that no input registers can be used.
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
18 *
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
19 * "sync" read and write barriers
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
20 * "isync" read barrier, is faster than "sync"
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
21 * "eieio" write barrier, is faster than "sync"
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
22 * "lwsync" write barrier, is faster than "eieio" on ppc64
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
23 */
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
24
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
25 #if (NGX_PTR_SIZE == 8)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
26
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
27 static ngx_inline ngx_atomic_uint_t
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28 ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
29 ngx_atomic_uint_t set)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
30 {
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31 ngx_atomic_uint_t res, temp;
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
32
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
33 __asm__ volatile (
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
34
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
35 " li %0, 0 \n" /* preset "0" to "res" */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
36 " lwsync \n" /* write barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
37 "1: \n"
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
38 " ldarx %1, 0, %2 \n" /* load from [lock] into "temp" */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
39 /* and store reservation */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
40 " cmpd %1, %3 \n" /* compare "temp" and "old" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
41 " bne- 2f \n" /* not equal */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
42 " stdcx. %4, 0, %2 \n" /* store "set" into [lock] if reservation */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
43 /* is not cleared */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
44 " bne- 1b \n" /* the reservation was cleared */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
45 " isync \n" /* read barrier */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
46 " li %0, 1 \n" /* set "1" to "res" */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
47 "2: \n"
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
48
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
49 : "=&b" (res), "=&b" (temp)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
50 : "b" (lock), "b" (old), "b" (set)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
51 : "cc", "memory");
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
52
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
53 return res;
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
54 }
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
55
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
56
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
57 static ngx_inline ngx_atomic_int_t
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
58 ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
59 {
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
60 ngx_atomic_uint_t res, temp;
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
61
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
62 __asm__ volatile (
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
63
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
64 " lwsync \n" /* write barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
65 "1: ldarx %0, 0, %2 \n" /* load from [value] into "res" */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
66 /* and store reservation */
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
67 " add %1, %0, %3 \n" /* "res" + "add" store in "temp" */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
68 " stdcx. %1, 0, %2 \n" /* store "temp" into [value] if reservation */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
69 /* is not cleared */
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
70 " bne- 1b \n" /* try again if reservation was cleared */
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
71 " isync \n" /* read barrier */
110
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
72
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
73 : "=&b" (res), "=&b" (temp)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
74 : "b" (value), "b" (add)
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
75 : "cc", "memory");
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
76
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
77 return res;
dad2fe8ecf08 nginx 0.3.2
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
78 }
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
79
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
80
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
81 #if (NGX_SMP)
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
82 #define ngx_memory_barrier() \
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
83 __asm__ volatile ("isync \n lwsync \n" ::: "memory")
112
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
84 #else
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
85 #define ngx_memory_barrier() __asm__ volatile ("" ::: "memory")
408f195b3482 nginx 0.3.3
Igor Sysoev <http://sysoev.ru>
parents: 110
diff changeset
86 #endif
160
73e8476f9142 nginx 0.3.27
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
87
270
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
88 #else
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
89
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
90 static ngx_inline ngx_atomic_uint_t
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
91 ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
92 ngx_atomic_uint_t set)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
93 {
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
94 ngx_atomic_uint_t res, temp;
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
95
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
96 __asm__ volatile (
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
97
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
98 " li %0, 0 \n" /* preset "0" to "res" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
99 " eieio \n" /* write barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
100 "1: \n"
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
101 " lwarx %1, 0, %2 \n" /* load from [lock] into "temp" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
102 /* and store reservation */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
103 " cmpw %1, %3 \n" /* compare "temp" and "old" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
104 " bne- 2f \n" /* not equal */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
105 " stwcx. %4, 0, %2 \n" /* store "set" into [lock] if reservation */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
106 /* is not cleared */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
107 " bne- 1b \n" /* the reservation was cleared */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
108 " isync \n" /* read barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
109 " li %0, 1 \n" /* set "1" to "res" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
110 "2: \n"
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
111
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
112 : "=&b" (res), "=&b" (temp)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
113 : "b" (lock), "b" (old), "b" (set)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
114 : "cc", "memory");
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
115
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
116 return res;
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
117 }
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
118
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
119
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
120 static ngx_inline ngx_atomic_int_t
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
121 ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
122 {
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
123 ngx_atomic_uint_t res, temp;
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
124
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
125 __asm__ volatile (
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
126
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
127 " eieio \n" /* write barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
128 "1: lwarx %0, 0, %2 \n" /* load from [value] into "res" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
129 /* and store reservation */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
130 " add %1, %0, %3 \n" /* "res" + "add" store in "temp" */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
131 " stwcx. %1, 0, %2 \n" /* store "temp" into [value] if reservation */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
132 /* is not cleared */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
133 " bne- 1b \n" /* try again if reservation was cleared */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
134 " isync \n" /* read barrier */
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
135
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
136 : "=&b" (res), "=&b" (temp)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
137 : "b" (value), "b" (add)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
138 : "cc", "memory");
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
139
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
140 return res;
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
141 }
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
142
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
143
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
144 #if (NGX_SMP)
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
145 #define ngx_memory_barrier() \
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
146 __asm__ volatile ("isync \n eieio \n" ::: "memory")
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
147 #else
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
148 #define ngx_memory_barrier() __asm__ volatile ("" ::: "memory")
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
149 #endif
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
150
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
151 #endif
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
152
6eb1e38f0f1f nginx 0.5.5
Igor Sysoev <http://sysoev.ru>
parents: 160
diff changeset
153
160
73e8476f9142 nginx 0.3.27
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
154 #define ngx_cpu_pause()