comparison src/event/modules/ngx_kqueue_module.c @ 114:ac69ab96328d

nginx-0.0.1-2003-07-07-10:11:50 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 07 Jul 2003 06:11:50 +0000
parents d7f606e25b99
children ef8c87afcfc5
comparison
equal deleted inserted replaced
113:d7f606e25b99 114:ac69ab96328d
21 static int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags); 21 static int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags);
22 static int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags); 22 static int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags);
23 static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags); 23 static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags);
24 static int ngx_kqueue_process_events(ngx_log_t *log); 24 static int ngx_kqueue_process_events(ngx_log_t *log);
25 25
26 static void *ngx_kqueue_create_conf(ngx_pool_t *pool); 26 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle);
27 static char *ngx_kqueue_init_conf(ngx_pool_t *pool, void *conf); 27 static char *ngx_kqueue_init_conf(ngx_cycle_t *cycle, void *conf);
28 28
29 29
30 int ngx_kqueue = -1; 30 int ngx_kqueue = -1;
31 31
32 static struct kevent *change_list, *event_list; 32 static struct kevent *change_list, *event_list;
309 309
310 310
311 static int ngx_kqueue_process_events(ngx_log_t *log) 311 static int ngx_kqueue_process_events(ngx_log_t *log)
312 { 312 {
313 int events, instance, i; 313 int events, instance, i;
314 ngx_err_t err;
314 ngx_msec_t timer, delta; 315 ngx_msec_t timer, delta;
315 ngx_event_t *ev; 316 ngx_event_t *ev;
316 struct timeval tv; 317 struct timeval tv;
317 struct timespec ts, *tp; 318 struct timespec ts, *tp;
318 319
336 #endif 337 #endif
337 338
338 events = kevent(ngx_kqueue, change_list, nchanges, event_list, nevents, tp); 339 events = kevent(ngx_kqueue, change_list, nchanges, event_list, nevents, tp);
339 340
340 if (events == -1) { 341 if (events == -1) {
341 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent() failed"); 342 err = ngx_errno;
342 return NGX_ERROR; 343 } else {
344 err = 0;
343 } 345 }
344 346
345 nchanges = 0; 347 nchanges = 0;
346 348
347 if (timer) { 349 if (timer) {
348 gettimeofday(&tv, NULL); 350 gettimeofday(&tv, NULL);
349 delta = tv.tv_sec * 1000 + tv.tv_usec / 1000 - delta; 351 delta = tv.tv_sec * 1000 + tv.tv_usec / 1000 - delta;
352
353 #if (NGX_DEBUG_EVENT)
354 ngx_log_debug(log, "kevent timer: %d, delta: %d" _ timer _ delta);
355 #endif
350 356
351 /* The expired timers must be handled before a processing of the events 357 /* The expired timers must be handled before a processing of the events
352 because the new timers can be added during a processing */ 358 because the new timers can be added during a processing */
353 359
354 ngx_event_expire_timers(delta); 360 ngx_event_expire_timers(delta);
357 if (events == 0) { 363 if (events == 0) {
358 ngx_log_error(NGX_LOG_ALERT, log, 0, 364 ngx_log_error(NGX_LOG_ALERT, log, 0,
359 "kevent() returned no events without timeout"); 365 "kevent() returned no events without timeout");
360 return NGX_ERROR; 366 return NGX_ERROR;
361 } 367 }
362 } 368
363 369 #if (NGX_DEBUG_EVENT)
364 #if (NGX_DEBUG_EVENT) 370 ngx_log_debug(log, "kevent timer: %d, delta: %d" _ timer _ delta);
365 ngx_log_debug(log, "kevent timer: %d, delta: %d" _ timer _ delta); 371 #endif
366 #endif 372 }
373
374 if (err) {
375 ngx_log_error(NGX_LOG_ALERT, log, err, "kevent() failed");
376 return NGX_ERROR;
377 }
367 378
368 for (i = 0; i < events; i++) { 379 for (i = 0; i < events; i++) {
369 380
370 #if (NGX_DEBUG_EVENT) 381 #if (NGX_DEBUG_EVENT)
371 if (event_list[i].ident > 0x8000000) { 382 if (event_list[i].ident > 0x8000000) {
437 448
438 return NGX_OK; 449 return NGX_OK;
439 } 450 }
440 451
441 452
442 static void *ngx_kqueue_create_conf(ngx_pool_t *pool) 453 static void *ngx_kqueue_create_conf(ngx_cycle_t *cycle)
443 { 454 {
444 ngx_kqueue_conf_t *kcf; 455 ngx_kqueue_conf_t *kcf;
445 456
446 ngx_test_null(kcf, ngx_palloc(pool, sizeof(ngx_kqueue_conf_t)), 457 ngx_test_null(kcf, ngx_palloc(cycle->pool, sizeof(ngx_kqueue_conf_t)),
447 NGX_CONF_ERROR); 458 NGX_CONF_ERROR);
448 459
449 kcf->changes = NGX_CONF_UNSET; 460 kcf->changes = NGX_CONF_UNSET;
450 kcf->events = NGX_CONF_UNSET; 461 kcf->events = NGX_CONF_UNSET;
451 462
452 return kcf; 463 return kcf;
453 } 464 }
454 465
455 466
456 static char *ngx_kqueue_init_conf(ngx_pool_t *pool, void *conf) 467 static char *ngx_kqueue_init_conf(ngx_cycle_t *cycle, void *conf)
457 { 468 {
458 ngx_kqueue_conf_t *kcf = conf; 469 ngx_kqueue_conf_t *kcf = conf;
459 470
460 ngx_conf_init_unsigned_value(kcf->changes, 512); 471 ngx_conf_init_unsigned_value(kcf->changes, 512);
461 ngx_conf_init_unsigned_value(kcf->events, 512); 472 ngx_conf_init_unsigned_value(kcf->events, 512);