Lines Matching refs:sig
68 static void evsignal_handler(int sig);
106 AF_UNIX, SOCK_STREAM, 0, base->sig.ev_signal_pair) == -1) { in evsignal_init()
117 FD_CLOSEONEXEC(base->sig.ev_signal_pair[0]); in evsignal_init()
118 FD_CLOSEONEXEC(base->sig.ev_signal_pair[1]); in evsignal_init()
119 base->sig.sh_old = NULL; in evsignal_init()
120 base->sig.sh_old_max = 0; in evsignal_init()
121 base->sig.evsignal_caught = 0; in evsignal_init()
122 memset(&base->sig.evsigcaught, 0, sizeof(sig_atomic_t)*NSIG); in evsignal_init()
125 TAILQ_INIT(&base->sig.evsigevents[i]); in evsignal_init()
127 evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]); in evsignal_init()
129 event_set(&base->sig.ev_signal, base->sig.ev_signal_pair[1], in evsignal_init()
130 EV_READ | EV_PERSIST, evsignal_cb, &base->sig.ev_signal); in evsignal_init()
131 base->sig.ev_signal.ev_base = base; in evsignal_init()
132 base->sig.ev_signal.ev_flags |= EVLIST_INTERNAL; in evsignal_init()
148 struct evsignal_info *sig = &base->sig; in _evsignal_set_handler() local
155 if (evsignal >= sig->sh_old_max) { in _evsignal_set_handler()
158 __func__, evsignal, sig->sh_old_max)); in _evsignal_set_handler()
159 p = realloc(sig->sh_old, new_max * sizeof(*sig->sh_old)); in _evsignal_set_handler()
165 memset((char *)p + sig->sh_old_max * sizeof(*sig->sh_old), in _evsignal_set_handler()
166 0, (new_max - sig->sh_old_max) * sizeof(*sig->sh_old)); in _evsignal_set_handler()
168 sig->sh_old_max = new_max; in _evsignal_set_handler()
169 sig->sh_old = p; in _evsignal_set_handler()
173 sig->sh_old[evsignal] = malloc(sizeof *sig->sh_old[evsignal]); in _evsignal_set_handler()
174 if (sig->sh_old[evsignal] == NULL) { in _evsignal_set_handler()
186 if (sigaction(evsignal, &sa, sig->sh_old[evsignal]) == -1) { in _evsignal_set_handler()
188 free(sig->sh_old[evsignal]); in _evsignal_set_handler()
194 free(sig->sh_old[evsignal]); in _evsignal_set_handler()
197 *sig->sh_old[evsignal] = sh; in _evsignal_set_handler()
208 struct evsignal_info *sig = &ev->ev_base->sig; in evsignal_add() local
214 if (TAILQ_EMPTY(&sig->evsigevents[evsignal])) { in evsignal_add()
223 if (!sig->ev_signal_added) { in evsignal_add()
224 if (event_add(&sig->ev_signal, NULL)) in evsignal_add()
226 sig->ev_signal_added = 1; in evsignal_add()
231 TAILQ_INSERT_TAIL(&sig->evsigevents[evsignal], ev, ev_signal_next); in evsignal_add()
240 struct evsignal_info *sig = &base->sig; in _evsignal_restore_handler() local
248 sh = sig->sh_old[evsignal]; in _evsignal_restore_handler()
249 sig->sh_old[evsignal] = NULL; in _evsignal_restore_handler()
270 struct evsignal_info *sig = &base->sig; in evsignal_del() local
276 TAILQ_REMOVE(&sig->evsigevents[evsignal], ev, ev_signal_next); in evsignal_del()
278 if (!TAILQ_EMPTY(&sig->evsigevents[evsignal])) in evsignal_del()
287 evsignal_handler(int sig) in evsignal_handler() argument
294 __func__, sig); in evsignal_handler()
298 evsignal_base->sig.evsigcaught[sig]++; in evsignal_handler()
299 evsignal_base->sig.evsignal_caught = 1; in evsignal_handler()
302 signal(sig, evsignal_handler); in evsignal_handler()
306 send(evsignal_base->sig.ev_signal_pair[0], "a", 1, 0); in evsignal_handler()
313 struct evsignal_info *sig = &base->sig; in evsignal_process() local
318 base->sig.evsignal_caught = 0; in evsignal_process()
320 ncalls = sig->evsigcaught[i]; in evsignal_process()
323 sig->evsigcaught[i] -= ncalls; in evsignal_process()
325 for (ev = TAILQ_FIRST(&sig->evsigevents[i]); in evsignal_process()
340 if (base->sig.ev_signal_added) { in evsignal_dealloc()
341 event_del(&base->sig.ev_signal); in evsignal_dealloc()
342 base->sig.ev_signal_added = 0; in evsignal_dealloc()
345 if (i < base->sig.sh_old_max && base->sig.sh_old[i] != NULL) in evsignal_dealloc()
349 EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[0]); in evsignal_dealloc()
350 base->sig.ev_signal_pair[0] = -1; in evsignal_dealloc()
351 EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[1]); in evsignal_dealloc()
352 base->sig.ev_signal_pair[1] = -1; in evsignal_dealloc()
353 base->sig.sh_old_max = 0; in evsignal_dealloc()
356 free(base->sig.sh_old); in evsignal_dealloc()