xref: /unit/src/nxt_signal.h (revision 2084)
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 
712Sigor@sysoev.ru #ifndef _NXT_SIGNAL_H_INCLUDED_
812Sigor@sysoev.ru #define _NXT_SIGNAL_H_INCLUDED_
90Sigor@sysoev.ru 
100Sigor@sysoev.ru 
1120Sigor@sysoev.ru struct nxt_sig_event_s {
120Sigor@sysoev.ru     int                         signo;
130Sigor@sysoev.ru     nxt_work_handler_t          handler;
140Sigor@sysoev.ru     const char                  *name;
1520Sigor@sysoev.ru };
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 
2812Sigor@sysoev.ru     const nxt_sig_event_t       *sigev;
290Sigor@sysoev.ru     sigset_t                    sigmask;
300Sigor@sysoev.ru 
310Sigor@sysoev.ru     /* Used by the signal thread. */
320Sigor@sysoev.ru     nxt_pid_t                   process;
330Sigor@sysoev.ru     nxt_thread_handle_t         thread;
340Sigor@sysoev.ru } nxt_event_signals_t;
350Sigor@sysoev.ru 
360Sigor@sysoev.ru 
3712Sigor@sysoev.ru nxt_event_signals_t *nxt_event_engine_signals(const nxt_sig_event_t *sigev);
380Sigor@sysoev.ru 
39*2084Salx.manpages@gmail.com #define nxt_event_engine_signals_start(engine)                                \
400Sigor@sysoev.ru     nxt_signal_thread_start(engine)
410Sigor@sysoev.ru 
42*2084Salx.manpages@gmail.com #define nxt_event_engine_signals_stop(engine)                                 \
430Sigor@sysoev.ru     nxt_signal_thread_stop(engine)
440Sigor@sysoev.ru 
450Sigor@sysoev.ru 
460Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_signal_thread_start(nxt_event_engine_t *engine);
470Sigor@sysoev.ru NXT_EXPORT void nxt_signal_thread_stop(nxt_event_engine_t *engine);
480Sigor@sysoev.ru 
490Sigor@sysoev.ru 
5012Sigor@sysoev.ru #endif /* _NXT_SIGNAL_H_INCLUDED_ */
51