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