1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 This file is part of systemd.
5 Copyright 2016 Lennart Poettering
13 #include "signal-util.h"
14 /// Additional includes needed by elogind
15 #include "process-util.h"
17 #define info(sig) log_info(#sig " = " STRINGIFY(sig) " = %d", sig)
19 static void test_rt_signals(void) {
23 /* We use signals SIGRTMIN+0 to SIGRTMIN+24 unconditionally */
24 assert(SIGRTMAX - SIGRTMIN >= 24);
27 static void test_block_signals(void) {
30 assert_se(sigprocmask(0, NULL, &ss) >= 0);
32 assert_se(sigismember(&ss, SIGUSR1) == 0);
33 assert_se(sigismember(&ss, SIGALRM) == 0);
34 assert_se(sigismember(&ss, SIGVTALRM) == 0);
37 BLOCK_SIGNALS(SIGUSR1, SIGVTALRM);
39 assert_se(sigprocmask(0, NULL, &ss) >= 0);
40 assert_se(sigismember(&ss, SIGUSR1) == 1);
41 assert_se(sigismember(&ss, SIGALRM) == 0);
42 assert_se(sigismember(&ss, SIGVTALRM) == 1);
46 assert_se(sigprocmask(0, NULL, &ss) >= 0);
47 assert_se(sigismember(&ss, SIGUSR1) == 0);
48 assert_se(sigismember(&ss, SIGALRM) == 0);
49 assert_se(sigismember(&ss, SIGVTALRM) == 0);
52 static void test_ignore_signals(void) {
53 assert_se(ignore_signals(SIGINT, -1) >= 0);
54 assert_se(kill(getpid_cached(), SIGINT) >= 0);
55 assert_se(ignore_signals(SIGUSR1, SIGUSR2, SIGTERM, SIGPIPE, -1) >= 0);
56 assert_se(kill(getpid_cached(), SIGUSR1) >= 0);
57 assert_se(kill(getpid_cached(), SIGUSR2) >= 0);
58 assert_se(kill(getpid_cached(), SIGTERM) >= 0);
59 assert_se(kill(getpid_cached(), SIGPIPE) >= 0);
60 assert_se(default_signals(SIGINT, SIGUSR1, SIGUSR2, SIGTERM, SIGPIPE, -1) >= 0);
63 int main(int argc, char *argv[]) {
66 test_ignore_signals();