2 * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
5 * SPDX-License-Identifier: GPL-2.0-or-later
14 # define RT_0 ASM_SIGRTMIN
16 /* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
21 handler(int no, siginfo_t *si, void *uc)
30 sigaddset(&set, SIGINT);
31 sigaddset(&set, SIGUSR2);
32 sigaddset(&set, SIGCHLD);
33 sigaddset(&set, RT_0 + 3);
34 sigaddset(&set, RT_0 + 4);
35 sigaddset(&set, RT_0 + 5);
36 sigaddset(&set, RT_0 + 26);
37 sigaddset(&set, RT_0 + 27);
38 if (sigprocmask(SIG_SETMASK, &set, NULL))
39 perror_msg_and_fail("sigprocmask");
42 static const struct sigaction sa = {
43 .sa_sigaction = handler,
44 .sa_flags = SA_SIGINFO
46 if (sigaction(SIGUSR1, &sa, NULL))
47 perror_msg_and_fail("sigaction");
50 perror_msg_and_fail("raise");
52 static const char *const sigs =
53 (SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
54 static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
55 printf("rt_sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
57 puts("+++ exited with 0 +++");