Annotation of embedaddon/nginx/src/event/ngx_event_mutex.c, revision 1.1
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: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>