Return to ngx_event_mutex.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / event |
1.1 ! misho 1: ! 2: /* ! 3: * Copyright (C) Igor Sysoev ! 4: * Copyright (C) Nginx, Inc. ! 5: */ ! 6: ! 7: ! 8: #include <ngx_config.h> ! 9: #include <ngx_core.h> ! 10: #include <ngx_event.h> ! 11: ! 12: ! 13: ngx_int_t ngx_event_mutex_timedlock(ngx_event_mutex_t *m, ngx_msec_t timer, ! 14: ngx_event_t *ev) ! 15: { ! 16: ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, ! 17: "lock event mutex %p lock:%XD", m, m->lock); ! 18: ! 19: if (m->lock) { ! 20: ! 21: if (m->events == NULL) { ! 22: m->events = ev; ! 23: ! 24: } else { ! 25: m->last->next = ev; ! 26: } ! 27: ! 28: m->last = ev; ! 29: ev->next = NULL; ! 30: ! 31: #if (NGX_THREADS0) ! 32: ev->light = 1; ! 33: #endif ! 34: ! 35: ngx_add_timer(ev, timer); ! 36: ! 37: return NGX_AGAIN; ! 38: } ! 39: ! 40: m->lock = 1; ! 41: ! 42: return NGX_OK; ! 43: } ! 44: ! 45: ! 46: ngx_int_t ngx_event_mutex_unlock(ngx_event_mutex_t *m, ngx_log_t *log) ! 47: { ! 48: ngx_event_t *ev; ! 49: ! 50: if (m->lock == 0) { ! 51: ngx_log_error(NGX_LOG_ALERT, log, 0, ! 52: "tring to unlock the free event mutex %p", m); ! 53: return NGX_ERROR; ! 54: } ! 55: ! 56: ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, ! 57: "unlock event mutex %p, next event: %p", m, m->events); ! 58: ! 59: m->lock = 0; ! 60: ! 61: if (m->events) { ! 62: ev = m->events; ! 63: m->events = ev->next; ! 64: ! 65: ev->next = (ngx_event_t *) ngx_posted_events; ! 66: ngx_posted_events = ev; ! 67: } ! 68: ! 69: return NGX_OK; ! 70: }