summaryrefslogtreecommitdiff
path: root/src/import
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-02-23 10:25:27 +0100
committerLennart Poettering <lennart@poettering.net>2023-03-01 09:43:23 +0100
commit82fa9f28f9aba7d5dc47ab99fb148688ffae78f7 (patch)
treee8e8eb2a7dd8a560e01d38f7333a45fcb7e3735e /src/import
parent6e6e45076bc93d862206b8b01608ef1f8a60a744 (diff)
downloadsystemd-82fa9f28f9aba7d5dc47ab99fb148688ffae78f7.tar.gz
importd: hook up memory pressure, SIGRTMIN-18 (and in fact SIGINT + SIGTERM)
Diffstat (limited to 'src/import')
-rw-r--r--src/import/importd.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/import/importd.c b/src/import/importd.c
index 5f7b9c3163..ed757019cf 100644
--- a/src/import/importd.c
+++ b/src/import/importd.c
@@ -10,6 +10,7 @@
#include "bus-get-properties.h"
#include "bus-log-control-api.h"
#include "bus-polkit.h"
+#include "common-signal.h"
#include "constants.h"
#include "env-util.h"
#include "fd-util.h"
@@ -636,7 +637,23 @@ static int manager_new(Manager **ret) {
if (r < 0)
return r;
- sd_event_set_watchdog(m->event, true);
+ (void) sd_event_set_watchdog(m->event, true);
+
+ r = sd_event_add_signal(m->event, NULL, SIGINT, NULL, NULL);
+ if (r < 0)
+ return r;
+
+ r = sd_event_add_signal(m->event, NULL, SIGTERM, NULL, NULL);
+ if (r < 0)
+ return r;
+
+ r = sd_event_add_signal(m->event, NULL, SIGRTMIN+18, sigrtmin18_handler, NULL);
+ if (r < 0)
+ return r;
+
+ r = sd_event_add_memory_pressure(m->event, NULL, NULL, NULL);
+ if (r < 0)
+ log_debug_errno(r, "Failed allocate memory pressure event source, ignoring: %m");
r = sd_bus_default_system(&m->bus);
if (r < 0)
@@ -1389,7 +1406,7 @@ static int run(int argc, char *argv[]) {
umask(0022);
- assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, -1) >= 0);
+ assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, SIGTERM, SIGINT, SIGRTMIN+18, -1) >= 0);
r = manager_new(&m);
if (r < 0)