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>