Annotation of embedaddon/nginx/src/event/ngx_event_posted.h, revision 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>