diff --git a/man/systemd.xml b/man/systemd.xml index fe1719fc18..468edfb2d3 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -585,6 +585,17 @@ for --user instances). + + SIGRTMIN+25 + + Upon receiving this signal the systemd manager will reexecute itself. This + is mostly equivalent to systemctl daemon-reexec except that it will be + done asynchronously. + + The systemd system manager treats this signal the same way as + SIGTERM. + + SIGRTMIN+26 diff --git a/src/core/manager.c b/src/core/manager.c index a3607ea44f..24dfe9fc06 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -578,8 +578,7 @@ static int manager_setup_signals(Manager *m) { 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) */ - - /* .. one free signal here ... */ + 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, @@ -2846,6 +2845,10 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t /* This is a nop on init */ break; + case 25: + m->objective = MANAGER_REEXECUTE; + break; + case 26: case 29: /* compatibility: used to be mapped to LOG_TARGET_SYSLOG_OR_KMSG */ manager_restore_original_log_target(m);