X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmachine%2Fmachined.c;h=ca84f8a0043f14f5b29afd4d2eac126de6e2c72a;hb=71fda00f320379f5cbee8e118848de98caaa229d;hp=f2803a18c977bfb38599e9f15f46123679c391ef;hpb=943aca8efb39453e3994ccdd1e08534b788c5aee;p=elogind.git diff --git a/src/machine/machined.c b/src/machine/machined.c index f2803a18c..ca84f8a00 100644 --- a/src/machine/machined.c +++ b/src/machine/machined.c @@ -34,7 +34,6 @@ #include "strv.h" #include "conf-parser.h" #include "mkdir.h" -#include "cgroup-util.h" Manager *manager_new(void) { Manager *m; @@ -83,30 +82,6 @@ void manager_free(Manager *m) { free(m); } -int manager_add_machine(Manager *m, const char *name, Machine **_machine) { - Machine *machine; - - assert(m); - assert(name); - - machine = hashmap_get(m->machines, name); - if (machine) { - if (_machine) - *_machine = machine; - - return 0; - } - - machine = machine_new(m, name); - if (!machine) - return -ENOMEM; - - if (_machine) - *_machine = machine; - - return 0; -} - int manager_enumerate_machines(Manager *m) { _cleanup_closedir_ DIR *d = NULL; struct dirent *de; @@ -149,27 +124,6 @@ int manager_enumerate_machines(Manager *m) { return r; } -int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine) { - _cleanup_free_ char *unit = NULL; - Machine *mm; - int r; - - assert(m); - assert(pid >= 1); - assert(machine); - - r = cg_pid_get_unit(pid, &unit); - if (r < 0) - return r; - - mm = hashmap_get(m->machine_units, unit); - if (!mm) - return 0; - - *machine = mm; - return 1; -} - static int manager_connect_bus(Manager *m) { DBusError error; int r; @@ -233,6 +187,18 @@ static int manager_connect_bus(Manager *m) { dbus_error_free(&error); } + dbus_bus_add_match(m->bus, + "type='signal'," + "sender='org.freedesktop.systemd1'," + "interface='org.freedesktop.systemd1.Manager'," + "member='Reloading'," + "path='/org/freedesktop/systemd1'", + &error); + if (dbus_error_is_set(&error)) { + log_error("Failed to add match for Reloading: %s", bus_error_message(&error)); + dbus_error_free(&error); + } + r = bus_method_call_with_reply( m->bus, "org.freedesktop.systemd1", @@ -283,7 +249,7 @@ void manager_gc(Manager *m, bool drop_not_started) { assert(m); while ((machine = m->machine_gc_queue)) { - LIST_REMOVE(Machine, gc_queue, m->machine_gc_queue, machine); + LIST_REMOVE(gc_queue, m->machine_gc_queue, machine); machine->in_gc_queue = false; if (machine_check_gc(machine, drop_not_started) == 0) { @@ -318,7 +284,7 @@ int manager_startup(Manager *m) { /* And start everything */ HASHMAP_FOREACH(machine, m->machines, i) - machine_start(machine); + machine_start(machine, NULL); return 0; }