|  | 
 | /* | 
 |  * Copyright (C) Igor Sysoev | 
 |  */ | 
 |  | 
 |  | 
 | #ifndef _NGX_EVENT_POSTED_H_INCLUDED_ | 
 | #define _NGX_EVENT_POSTED_H_INCLUDED_ | 
 |  | 
 |  | 
 | #include <ngx_config.h> | 
 | #include <ngx_core.h> | 
 | #include <ngx_event.h> | 
 |  | 
 |  | 
 | #define ngx_post_event(ev)                                                    \ | 
 |             if (ev->prev == NULL) {                                           \ | 
 |                 ev->next = (ngx_event_t *) ngx_posted_events;                 \ | 
 |                 ev->prev = (ngx_event_t **) &ngx_posted_events;               \ | 
 |                 ngx_posted_events = ev;                                       \ | 
 |                 if (ev->next) {                                               \ | 
 |                     ev->next->prev = &ev->next;                               \ | 
 |                 }                                                             \ | 
 |                 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                \ | 
 |                                "post event %p", ev);                          \ | 
 |             } else  {                                                         \ | 
 |                 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                \ | 
 |                                "update posted event %p", ev);                 \ | 
 |             } | 
 |  | 
 | #define ngx_delete_posted_event(ev)                                           \ | 
 |         *(ev->prev) = ev->next;                                               \ | 
 |         if (ev->next) {                                                       \ | 
 |             ev->next->prev = ev->prev;                                        \ | 
 |         }                                                                     \ | 
 |         ev->prev = NULL;                                                      \ | 
 |         ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                        \ | 
 |                        "delete posted event %p", ev); | 
 |  | 
 |  | 
 |  | 
 | void ngx_event_process_posted(ngx_cycle_t *cycle); | 
 | void ngx_wakeup_worker_thread(ngx_cycle_t *cycle); | 
 |  | 
 | extern ngx_thread_volatile ngx_event_t  *ngx_posted_events; | 
 |  | 
 |  | 
 | #if (NGX_THREADS) | 
 | ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle); | 
 |  | 
 | extern ngx_mutex_t                      *ngx_posted_events_mutex; | 
 | #endif | 
 |  | 
 |  | 
 | #endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */ |