Mercurial > hg > nginx-quic
comparison src/event/modules/ngx_select_module.c @ 323:ba876b26b76d
nginx-0.0.3-2004-04-21-22:54:33 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 21 Apr 2004 18:54:33 +0000 |
parents | 32847588a82a |
children | 0fb6c53fb135 |
comparison
equal
deleted
inserted
replaced
322:ab2f8c9a2a45 | 323:ba876b26b76d |
---|---|
282 expire = 1; | 282 expire = 1; |
283 | 283 |
284 #if !(WIN32) | 284 #if !(WIN32) |
285 | 285 |
286 if (ngx_accept_mutex) { | 286 if (ngx_accept_mutex) { |
287 if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { | 287 if (ngx_accept_disabled > 0) { |
288 return NGX_ERROR; | 288 ngx_accept_disabled--; |
289 } | 289 |
290 | 290 } else { |
291 if (ngx_accept_mutex_held == 0 | 291 if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) { |
292 && (timer == NGX_TIMER_INFINITE || timer > ngx_accept_mutex_delay)) | 292 return NGX_ERROR; |
293 { | 293 } |
294 timer = ngx_accept_mutex_delay; | 294 |
295 expire = 0; | 295 if (ngx_accept_mutex_held == 0 |
296 && (timer == NGX_TIMER_INFINITE | |
297 || timer > ngx_accept_mutex_delay)) | |
298 { | |
299 timer = ngx_accept_mutex_delay; | |
300 expire = 0; | |
301 } | |
296 } | 302 } |
297 } | 303 } |
298 | 304 |
299 if (max_fd == -1) { | 305 if (max_fd == -1) { |
300 for (i = 0; i < nevents; i++) { | 306 for (i = 0; i < nevents; i++) { |
309 } | 315 } |
310 | 316 |
311 #endif | 317 #endif |
312 | 318 |
313 #if (NGX_DEBUG) | 319 #if (NGX_DEBUG) |
314 for (i = 0; i < nevents; i++) { | 320 if (cycle->log->log_level & NGX_LOG_DEBUG_ALL) { |
315 ev = event_index[i]; | 321 for (i = 0; i < nevents; i++) { |
316 c = ev->data; | 322 ev = event_index[i]; |
317 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 323 c = ev->data; |
318 "select event: fd:%d wr:%d", c->fd, ev->write); | 324 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
325 "select event: fd:%d wr:%d", c->fd, ev->write); | |
326 } | |
327 | |
328 #if !(WIN32) | |
329 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | |
330 "max_fd: %d", max_fd); | |
331 #endif | |
319 } | 332 } |
320 #endif | 333 #endif |
321 | 334 |
322 if (timer == NGX_TIMER_INFINITE) { | 335 if (timer == NGX_TIMER_INFINITE) { |
323 tp = NULL; | 336 tp = NULL; |
363 deltas += delta; | 376 deltas += delta; |
364 if (deltas > 1000) { | 377 if (deltas > 1000) { |
365 ngx_gettimeofday(&tv); | 378 ngx_gettimeofday(&tv); |
366 ngx_time_update(tv.tv_sec); | 379 ngx_time_update(tv.tv_sec); |
367 deltas = tv.tv_usec / 1000; | 380 deltas = tv.tv_usec / 1000; |
381 | |
382 ngx_elapsed_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000 | |
383 - ngx_start_msec; | |
384 } else { | |
385 ngx_elapsed_msec += delta; | |
368 } | 386 } |
369 | 387 |
370 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 388 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
371 "select timer: %d, delta: %d", timer, (int) delta); | 389 "select timer: %d, delta: %d", timer, (int) delta); |
372 | 390 |
373 } else { | 391 } else { |
374 delta = 0; | 392 delta = 0; |
375 ngx_gettimeofday(&tv); | 393 ngx_gettimeofday(&tv); |
376 ngx_time_update(tv.tv_sec); | 394 ngx_time_update(tv.tv_sec); |
377 | 395 |
396 ngx_elapsed_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000 | |
397 - ngx_start_msec; | |
378 if (ready == 0) { | 398 if (ready == 0) { |
379 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, | 399 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, |
380 "select() returned no events without timeout"); | 400 "select() returned no events without timeout"); |
381 ngx_accept_mutex_unlock(); | 401 ngx_accept_mutex_unlock(); |
382 return NGX_ERROR; | 402 return NGX_ERROR; |
521 | 541 |
522 ngx_mutex_unlock(ngx_posted_events_mutex); | 542 ngx_mutex_unlock(ngx_posted_events_mutex); |
523 | 543 |
524 ev->event_handler(ev); | 544 ev->event_handler(ev); |
525 | 545 |
546 if (ngx_accept_disabled > 0) { | |
547 lock = 0; | |
548 break; | |
549 } | |
550 | |
526 ev = ev->next; | 551 ev = ev->next; |
527 | 552 |
528 if (ev == NULL) { | 553 if (ev == NULL) { |
529 lock = 0; | 554 lock = 0; |
530 break; | 555 break; |
532 | 557 |
533 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { | 558 if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { |
534 ngx_accept_mutex_unlock(); | 559 ngx_accept_mutex_unlock(); |
535 return NGX_ERROR; | 560 return NGX_ERROR; |
536 } | 561 } |
537 | 562 } |
538 } | 563 |
564 ngx_accept_mutex_unlock(); | |
565 accept_events = NULL; | |
539 | 566 |
540 if (lock) { | 567 if (lock) { |
541 ngx_mutex_unlock(ngx_posted_events_mutex); | 568 ngx_mutex_unlock(ngx_posted_events_mutex); |
542 } | 569 } |
543 | |
544 ngx_accept_mutex_unlock(); | |
545 accept_events = NULL; | |
546 | 570 |
547 if (ready != nready) { | 571 if (ready != nready) { |
548 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "select ready != events"); | 572 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "select ready != events"); |
549 } | 573 } |
550 | 574 |