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>