]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
homed: hook up memory pressure/SIGRTMIN+18 handling
authorLennart Poettering <lennart@poettering.net>
Thu, 16 Feb 2023 11:33:18 +0000 (12:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 1 Mar 2023 08:43:23 +0000 (09:43 +0100)
src/home/homed-manager.c
src/home/homed.c

index e1af7aa1ad155543c4e0352851f4e1f1745bc9a7..76b038caddb2aa98427fafd7fa1e4c9e7ce304d8 100644 (file)
@@ -18,6 +18,7 @@
 #include "bus-log-control-api.h"
 #include "bus-polkit.h"
 #include "clean-ipc.h"
+#include "common-signal.h"
 #include "conf-files.h"
 #include "device-util.h"
 #include "dirent-util.h"
@@ -225,6 +226,15 @@ int manager_new(Manager **ret) {
         if (r < 0)
                 return r;
 
+        r = sd_event_add_memory_pressure(m->event, NULL, NULL, NULL);
+        if (r < 0)
+                log_full_errno(ERRNO_IS_NOT_SUPPORTED(r) || ERRNO_IS_PRIVILEGE(r) || (r == -EHOSTDOWN) ? LOG_DEBUG : LOG_WARNING, r,
+                               "Failed to allocate memory pressure watch, ignoring: %m");
+
+        r = sd_event_add_signal(m->event, NULL, SIGRTMIN+18, sigrtmin18_handler, NULL);
+        if (r < 0)
+                return r;
+
         (void) sd_event_set_watchdog(m->event, true);
 
         m->homes_by_uid = hashmap_new(&homes_by_uid_hash_ops);
index 579c289a686619d000a6eb2e01282223dd225ed3..04d9b56f076aa9dcc83019f75ae24586eaa14f9e 100644 (file)
@@ -29,7 +29,7 @@ static int run(int argc, char *argv[]) {
 
         umask(0022);
 
-        assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, SIGTERM, SIGINT, -1) >= 0);
+        assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, SIGTERM, SIGINT, SIGRTMIN+18, -1) >= 0);
 
         r = manager_new(&m);
         if (r < 0)