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>