Annotation of embedaddon/nginx/src/event/ngx_event_mutex.c, revision 1.1.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>