Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : #include <signal.h> 5 : : 6 : : #include "macro.h" 7 : : 8 : : int reset_all_signal_handlers(void); 9 : : int reset_signal_mask(void); 10 : : 11 : : int ignore_signals(int sig, ...); 12 : : int default_signals(int sig, ...); 13 : : int sigaction_many(const struct sigaction *sa, ...); 14 : : 15 : : int sigset_add_many(sigset_t *ss, ...); 16 : : int sigprocmask_many(int how, sigset_t *old, ...); 17 : : 18 : : const char *signal_to_string(int i) _const_; 19 : : int signal_from_string(const char *s) _pure_; 20 : : 21 : : void nop_signal_handler(int sig); 22 : : 23 : 8 : static inline void block_signals_reset(sigset_t *ss) { 24 [ - + ]: 8 : assert_se(sigprocmask(SIG_SETMASK, ss, NULL) >= 0); 25 : 8 : } 26 : : 27 : : #define BLOCK_SIGNALS(...) \ 28 : : _cleanup_(block_signals_reset) _unused_ sigset_t _saved_sigset = ({ \ 29 : : sigset_t _t; \ 30 : : assert_se(sigprocmask_many(SIG_BLOCK, &_t, __VA_ARGS__, -1) >= 0); \ 31 : : _t; \ 32 : : }) 33 : : 34 : 80 : static inline bool SIGNAL_VALID(int signo) { 35 [ + + + + ]: 80 : return signo > 0 && signo < _NSIG; 36 : : } 37 : : 38 : 0 : static inline const char* signal_to_string_with_check(int n) { 39 [ # # ]: 0 : if (!SIGNAL_VALID(n)) 40 : 0 : return NULL; 41 : : 42 : 0 : return signal_to_string(n); 43 : : }