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