Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / event / ngx_event_posted.h
blobabd2e261dffc2c501c17d1f08d8f6e2298fdd100
2 /*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
5 */
8 #ifndef _NGX_EVENT_POSTED_H_INCLUDED_
9 #define _NGX_EVENT_POSTED_H_INCLUDED_
12 #include <ngx_config.h>
13 #include <ngx_core.h>
14 #include <ngx_event.h>
17 #if (NGX_THREADS)
18 extern ngx_mutex_t *ngx_posted_events_mutex;
19 #endif
22 #define ngx_locked_post_event(ev, queue) \
24 if (ev->prev == NULL) { \
25 ev->next = (ngx_event_t *) *queue; \
26 ev->prev = (ngx_event_t **) queue; \
27 *queue = ev; \
29 if (ev->next) { \
30 ev->next->prev = &ev->next; \
31 } \
33 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "post event %p", ev); \
35 } else { \
36 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \
37 "update posted event %p", ev); \
41 #define ngx_post_event(ev, queue) \
43 ngx_mutex_lock(ngx_posted_events_mutex); \
44 ngx_locked_post_event(ev, queue); \
45 ngx_mutex_unlock(ngx_posted_events_mutex);
48 #define ngx_delete_posted_event(ev) \
50 *(ev->prev) = ev->next; \
52 if (ev->next) { \
53 ev->next->prev = ev->prev; \
54 } \
56 ev->prev = NULL; \
57 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \
58 "delete posted event %p", ev);
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);
66 #if (NGX_THREADS)
67 ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle);
68 #endif
71 extern ngx_thread_volatile ngx_event_t *ngx_posted_accept_events;
72 extern ngx_thread_volatile ngx_event_t *ngx_posted_events;
75 #endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */