Groonga 3.0.9 Source Code Document
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
groonga
vendor
nginx-1.4.2
src
event
ngx_event_mutex.c
Go to the documentation of this file.
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
}
Generated on Sun Nov 10 2013 09:49:07 for Groonga 3.0.9 Source Code Document by
1.8.1.2