From: Mike Yuan Date: Tue, 22 Apr 2025 22:26:49 +0000 (+0200) Subject: core/manager: assume availability of all RT signals X-Git-Tag: v258-rc1~758 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9af70339aa393394b1108c9bf3e64127684b9a58;p=thirdparty%2Fsystemd.git core/manager: assume availability of all RT signals Our kernel baseline is v5.4 now. --- diff --git a/src/core/manager.c b/src/core/manager.c index 790acb015b6..3b34f0494e4 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -514,8 +514,6 @@ static int manager_enable_special_signals(Manager *m) { return 0; } -#define RTSIG_IF_AVAILABLE(signum) (signum <= SIGRTMAX ? signum : -1) - static int manager_setup_signals(Manager *m) { static const struct sigaction sa = { .sa_handler = SIG_DFL, @@ -528,10 +526,8 @@ static int manager_setup_signals(Manager *m) { assert_se(sigaction(SIGCHLD, &sa, NULL) == 0); - /* We make liberal use of realtime signals here. On - * Linux/glibc we have 30 of them (with the exception of Linux - * on hppa, see below), between SIGRTMIN+0 ... SIGRTMIN+30 - * (aka SIGRTMAX). */ + /* We make liberal use of realtime signals here. On Linux/glibc we have 30 of them, between + * SIGRTMIN+0 ... SIGRTMIN+30 (aka SIGRTMAX). */ assert_se(sigemptyset(&mask) == 0); sigset_add_many(&mask, @@ -571,20 +567,10 @@ static int manager_setup_signals(Manager *m) { SIGRTMIN+24, /* systemd: Immediate exit (--user only) */ SIGRTMIN+25, /* systemd: reexecute manager */ - /* Apparently Linux on hppa had fewer RT signals until v3.18, - * SIGRTMAX was SIGRTMIN+25, and then SIGRTMIN was lowered, - * see commit v3.17-7614-g1f25df2eff. - * - * We cannot unconditionally make use of those signals here, - * so let's use a runtime check. Since these commands are - * accessible by different means and only really a safety - * net, the missing functionality on hppa shouldn't matter. - */ - - RTSIG_IF_AVAILABLE(SIGRTMIN+26), /* systemd: set log target to journal-or-kmsg */ - RTSIG_IF_AVAILABLE(SIGRTMIN+27), /* systemd: set log target to console */ - RTSIG_IF_AVAILABLE(SIGRTMIN+28), /* systemd: set log target to kmsg */ - RTSIG_IF_AVAILABLE(SIGRTMIN+29), /* systemd: set log target to syslog-or-kmsg (obsolete) */ + SIGRTMIN+26, /* systemd: set log target to journal-or-kmsg */ + SIGRTMIN+27, /* systemd: set log target to console */ + SIGRTMIN+28, /* systemd: set log target to kmsg */ + SIGRTMIN+29, /* systemd: set log target to syslog-or-kmsg (obsolete) */ /* ... one free signal here SIGRTMIN+30 ... */ -1); diff --git a/src/test/test-signal-util.c b/src/test/test-signal-util.c index 335066a3741..aa14a3f9d9c 100644 --- a/src/test/test-signal-util.c +++ b/src/test/test-signal-util.c @@ -16,8 +16,8 @@ TEST(rt_signals) { info(SIGRTMIN); info(SIGRTMAX); - /* We use signals SIGRTMIN+0 to SIGRTMIN+24 unconditionally */ - assert_se(SIGRTMAX - SIGRTMIN >= 24); + /* We use signals SIGRTMIN+0 to SIGRTMIN+30 unconditionally */ + assert_se(SIGRTMAX - SIGRTMIN >= 30); } static void test_signal_to_string_one(int val) {