~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Nginx/event/ngx_event_posted.h

Version: ~ [ nginx-0.6.26 ] ~ [ nginx-0.5.35 ] ~ [ nginx-0.5.20 ] ~ [ nginx-0.5.19 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.