chiark / gitweb /
manager: connect SIGRTMIN+24 to terminating --user instances
authorLennart Poettering <lennart@poettering.net>
Wed, 17 Oct 2012 23:19:35 +0000 (01:19 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 17 Oct 2012 23:19:35 +0000 (01:19 +0200)
man/systemd.xml
src/core/manager.c

index f14e3eb9aea03a1a90a24080f3ab4cecf2419f6f..77585248a9103541a9640f7e6f301e2e8af17a74 100644 (file)
                                 line.</para></listitem>
                         </varlistentry>
 
+                        <varlistentry>
+                                <term>SIGRTMIN+24</term>
+
+                                <listitem><para>Immediately exits the
+                                manager (only available for --user
+                                instances).</para></listitem>
+                        </varlistentry>
+
                         <varlistentry>
                                 <term>SIGRTMIN+26</term>
                                 <term>SIGRTMIN+27</term>
index b19fc3d5085de70837278bb7d0891971cfd90ebc..f932c79a1b8b35ffde66cc90d2e73279aa1b5db1 100644 (file)
@@ -199,6 +199,7 @@ static int manager_setup_signals(Manager *m) {
                         SIGRTMIN+21, /* systemd: disable status messages */
                         SIGRTMIN+22, /* systemd: set log level to LOG_DEBUG */
                         SIGRTMIN+23, /* systemd: set log level to LOG_INFO */
+                        SIGRTMIN+24, /* systemd: Immediate exit (--user only) */
                         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 */
@@ -1272,6 +1273,15 @@ static int manager_process_signal_fd(Manager *m) {
                                 log_notice("Setting log level to info.");
                                 break;
 
+                        case 24:
+                                if (m->running_as == SYSTEMD_USER) {
+                                        m->exit_code = MANAGER_EXIT;
+                                        return 0;
+                                }
+
+                                /* This is a nop on init */
+                                break;
+
                         case 26:
                                 log_set_target(LOG_TARGET_JOURNAL_OR_KMSG);
                                 log_notice("Setting log target to journal-or-kmsg.");