]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/manager: assume availability of all RT signals
authorMike Yuan <me@yhndnzj.com>
Tue, 22 Apr 2025 22:26:49 +0000 (00:26 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 23 Apr 2025 01:04:04 +0000 (10:04 +0900)
Our kernel baseline is v5.4 now.

src/core/manager.c
src/test/test-signal-util.c

index 790acb015b6a4ef00070cd2291f3a15bd1fd32bd..3b34f0494e46daf6038afee635feac5db3bedaf2 100644 (file)
@@ -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);
index 335066a374110dd1febb100acc9722b7e0f12b86..aa14a3f9d9cabe6dbd40d4dbcdf8f757fffc36b5 100644 (file)
@@ -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) {