chiark / gitweb /
Add mounting of a name=elogind cgroup if no init controller is found.
[elogind.git] / src / login / logind.c
index 86208c7d4d6b2ca90bdb1cccf7dbf5aca7190cbb..23f4059931d456f192112f3e3e9a8ef6a457bf61 100644 (file)
@@ -36,6 +36,7 @@
 #include "label.h"
 #include "label.h"
 #include "cgroup.h"
+#include "mount-setup.h"
 #include "virt.h"
 
 static void manager_free(Manager *m);
@@ -95,6 +96,13 @@ static Manager *manager_new(void) {
         if (!m->kill_exclude_users)
                 goto fail;
 
+        /* If elogind should be its own controller, mount its cgroup */
+        if (streq(ELOGIND_CGROUP_CONTROLLER, "name=elogind")) {
+                r = mount_setup(true);
+                if (r < 0)
+                        goto fail;
+        }
+
         /* Make cgroups */
         r = manager_setup_cgroup(m);
         if (r < 0)
@@ -681,9 +689,9 @@ static int manager_connect_bus(Manager *m) {
         /* elogind relies on signals from its release agent */
         r = sd_bus_add_match(m->bus, NULL,
                              "type='signal',"
-                             "interface='org.freedesktop.systemd1.Agent',"
+                             "interface='org.freedesktop.elogind.Agent',"
                              "member='Released',"
-                             "path='/org/freedesktop/systemd1/agent'",
+                             "path='/org/freedesktop/elogind/agent'",
                              signal_agent_released, m);
 
         r = sd_bus_add_fallback_vtable(m->bus, NULL, "/org/freedesktop/login1/seat", "org.freedesktop.login1.Seat", seat_vtable, seat_object_find, m);
@@ -1230,11 +1238,16 @@ int main(int argc, char *argv[]) {
         Manager *m = NULL;
         int r;
 
+        elogind_set_program_name(argv[0]);
         log_set_target(LOG_TARGET_AUTO);
         log_set_facility(LOG_AUTH);
         log_parse_environment();
         log_open();
 
+#ifdef ENABLE_DEBUG_ELOGIND
+        log_set_max_level(LOG_DEBUG);
+#endif // ENABLE_DEBUG_ELOGIND
+
         umask(0022);
 
         if (argc != 1) {