comparison src/event/modules/ngx_aio_module.c @ 274:052a7b1d40e5 NGINX_0_5_7

nginx 0.5.7 *) Feature: the ssl_session_cache storage optimization. *) Bugfixes in the "ssl_session_cache" and "limit_zone" directives. *) Bugfix: the segmentation fault was occurred on start or while reconfiguration if the "ssl_session_cache" or "limit_zone" directives were used on 64-bit platforms. *) Bugfix: a segmentation fault occurred if the "add_before_body" or "add_after_body" directives were used and there was no "Content-Type" header line in response. *) Bugfix: the OpenSSL library was always built with the threads support. Thanks to Den Ivanov. *) Bugfix: the PCRE-6.5+ library and the icc compiler compatibility.
author Igor Sysoev <http://sysoev.ru>
date Mon, 15 Jan 2007 00:00:00 +0300
parents 408f195b3482
children f7cd062ee035
comparison
equal deleted inserted replaced
273:60df8db42ffb 274:052a7b1d40e5
164 { 164 {
165 return ngx_kqueue_module_ctx.actions.process_events(cycle, timer, flags); 165 return ngx_kqueue_module_ctx.actions.process_events(cycle, timer, flags);
166 } 166 }
167 167
168 #endif /* NGX_HAVE_KQUEUE */ 168 #endif /* NGX_HAVE_KQUEUE */
169
170
171 #if 0
172
173 /* 1 */
174 int ngx_posix_aio_process_events(ngx_log_t *log)
175 {
176 listen via SIGIO;
177 aio_* via SIGxxx;
178
179 sigsuspend()/sigwaitinfo()/sigtimedwait();
180 }
181
182 /* 2 */
183 int ngx_posix_aio_process_events(ngx_log_t *log)
184 {
185 unmask signal
186
187 listen via SIGIO;
188
189 /* BUG: SIGIO can be delivered before aio_*() */
190
191 aio_suspend()/aiowait()/aio_waitcomplete() with timeout
192
193 mask signal
194
195 if (ngx_socket_errno == NGX_EINTR)
196 look listen
197 select()/accept() nb listen sockets
198 else
199 aio
200 }
201
202 /* 3 */
203 int ngx_posix_aio_process_events(ngx_log_t *log)
204 {
205 #if 0
206 unmask signal
207
208 /* BUG: AIO signal can be delivered before select() */
209
210 select(listen);
211
212 mask signal
213 #endif
214
215 pselect(listen, mask);
216
217 if (ngx_socket_errno == NGX_EINTR)
218 look ready array
219 }
220
221 void aio_sig_handler(int signo, siginfo_t *siginfo, void *context)
222 {
223 push siginfo->si_value.sival_ptr
224 }
225
226 #endif