10Sigor@sysoev.ru 20Sigor@sysoev.ru /* 30Sigor@sysoev.ru * Copyright (C) Igor Sysoev 40Sigor@sysoev.ru * Copyright (C) NGINX, Inc. 50Sigor@sysoev.ru */ 60Sigor@sysoev.ru 7*12Sigor@sysoev.ru #ifndef _NXT_SIGNAL_H_INCLUDED_ 8*12Sigor@sysoev.ru #define _NXT_SIGNAL_H_INCLUDED_ 90Sigor@sysoev.ru 100Sigor@sysoev.ru 11*12Sigor@sysoev.ru typedef struct { 120Sigor@sysoev.ru int signo; 130Sigor@sysoev.ru nxt_work_handler_t handler; 140Sigor@sysoev.ru const char *name; 15*12Sigor@sysoev.ru } nxt_sig_event_t; 160Sigor@sysoev.ru 170Sigor@sysoev.ru #define nxt_event_signal(sig, handler) \ 180Sigor@sysoev.ru { sig, handler, #sig } 190Sigor@sysoev.ru 200Sigor@sysoev.ru #define nxt_event_signal_end \ 210Sigor@sysoev.ru { 0, NULL, NULL } 220Sigor@sysoev.ru 230Sigor@sysoev.ru 240Sigor@sysoev.ru typedef struct { 250Sigor@sysoev.ru /* Used by epoll and eventport. */ 260Sigor@sysoev.ru nxt_work_handler_t handler; 270Sigor@sysoev.ru 28*12Sigor@sysoev.ru const nxt_sig_event_t *sigev; 290Sigor@sysoev.ru sigset_t sigmask; 300Sigor@sysoev.ru 310Sigor@sysoev.ru #if (NXT_THREADS) 320Sigor@sysoev.ru /* Used by the signal thread. */ 330Sigor@sysoev.ru nxt_pid_t process; 340Sigor@sysoev.ru nxt_thread_handle_t thread; 350Sigor@sysoev.ru #endif 360Sigor@sysoev.ru } nxt_event_signals_t; 370Sigor@sysoev.ru 380Sigor@sysoev.ru 39*12Sigor@sysoev.ru nxt_event_signals_t *nxt_event_engine_signals(const nxt_sig_event_t *sigev); 400Sigor@sysoev.ru 410Sigor@sysoev.ru #if (NXT_THREADS) 420Sigor@sysoev.ru 430Sigor@sysoev.ru #define \ 440Sigor@sysoev.ru nxt_event_engine_signals_start(engine) \ 450Sigor@sysoev.ru nxt_signal_thread_start(engine) 460Sigor@sysoev.ru 470Sigor@sysoev.ru #define \ 480Sigor@sysoev.ru nxt_event_engine_signals_stop(engine) \ 490Sigor@sysoev.ru nxt_signal_thread_stop(engine) 500Sigor@sysoev.ru 510Sigor@sysoev.ru 520Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_signal_thread_start(nxt_event_engine_t *engine); 530Sigor@sysoev.ru NXT_EXPORT void nxt_signal_thread_stop(nxt_event_engine_t *engine); 540Sigor@sysoev.ru 550Sigor@sysoev.ru #else /* !(NXT_THREADS) */ 560Sigor@sysoev.ru 570Sigor@sysoev.ru #define \ 580Sigor@sysoev.ru nxt_event_engine_signals_start(engine) \ 590Sigor@sysoev.ru nxt_signal_handlers_start(engine) 600Sigor@sysoev.ru 610Sigor@sysoev.ru #define \ 620Sigor@sysoev.ru nxt_event_engine_signals_stop(engine) \ 630Sigor@sysoev.ru nxt_signal_handlers_stop(engine) 640Sigor@sysoev.ru 650Sigor@sysoev.ru 660Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_signal_handlers_start(nxt_event_engine_t *engine); 670Sigor@sysoev.ru NXT_EXPORT void nxt_signal_handlers_stop(nxt_event_engine_t *engine); 680Sigor@sysoev.ru 690Sigor@sysoev.ru #endif 700Sigor@sysoev.ru 710Sigor@sysoev.ru 72*12Sigor@sysoev.ru #endif /* _NXT_SIGNAL_H_INCLUDED_ */ 73