Annotation of embedaddon/nginx/src/event/ngx_event_posted.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_EVENT_POSTED_H_INCLUDED_
9: #define _NGX_EVENT_POSTED_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14: #include <ngx_event.h>
15:
16:
17: #if (NGX_THREADS)
18: extern ngx_mutex_t *ngx_posted_events_mutex;
19: #endif
20:
21:
22: #define ngx_locked_post_event(ev, queue) \
23: \
24: if (ev->prev == NULL) { \
25: ev->next = (ngx_event_t *) *queue; \
26: ev->prev = (ngx_event_t **) queue; \
27: *queue = ev; \
28: \
29: if (ev->next) { \
30: ev->next->prev = &ev->next; \
31: } \
32: \
33: ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "post event %p", ev); \
34: \
35: } else { \
36: ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \
37: "update posted event %p", ev); \
38: }
39:
40:
41: #define ngx_post_event(ev, queue) \
42: \
43: ngx_mutex_lock(ngx_posted_events_mutex); \
44: ngx_locked_post_event(ev, queue); \
45: ngx_mutex_unlock(ngx_posted_events_mutex);
46:
47:
48: #define ngx_delete_posted_event(ev) \
49: \
50: *(ev->prev) = ev->next; \
51: \
52: if (ev->next) { \
53: ev->next->prev = ev->prev; \
54: } \
55: \
56: ev->prev = NULL; \
57: ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \
58: "delete posted event %p", ev);
59:
60:
61:
62: void ngx_event_process_posted(ngx_cycle_t *cycle,
63: ngx_thread_volatile ngx_event_t **posted);
64: void ngx_wakeup_worker_thread(ngx_cycle_t *cycle);
65:
66: #if (NGX_THREADS)
67: ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle);
68: #endif
69:
70:
71: extern ngx_thread_volatile ngx_event_t *ngx_posted_accept_events;
72: extern ngx_thread_volatile ngx_event_t *ngx_posted_events;
73:
74:
75: #endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>