X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fslice.c;h=0285c49aebfde7096463447ee6b7aa68167b09b8;hb=340a1d2330ddc1dd18ad75bcdddf32f63c84b4a1;hp=1e42df2b8be7a652d9e66f037e7f904d2fb703ed;hpb=718db96199eb307751264e4163555662c9a389fa;p=elogind.git diff --git a/src/core/slice.c b/src/core/slice.c index 1e42df2b8..0285c49ae 100644 --- a/src/core/slice.c +++ b/src/core/slice.c @@ -20,12 +20,9 @@ ***/ #include -#include -#include #include "unit.h" #include "slice.h" -#include "load-fragment.h" #include "log.h" #include "dbus-slice.h" #include "special.h" @@ -36,23 +33,6 @@ static const UnitActiveState state_translation_table[_SLICE_STATE_MAX] = { [SLICE_ACTIVE] = UNIT_ACTIVE }; -static void slice_init(Unit *u) { - Slice *s = SLICE(u); - - assert(u); - assert(u->load_state == UNIT_STUB); - - cgroup_context_init(&s->cgroup_context); -} - -static void slice_done(Unit *u) { - Slice *s = SLICE(u); - - assert(u); - - cgroup_context_done(&s->cgroup_context); -} - static void slice_set_state(Slice *t, SliceState state) { SliceState old_state; assert(t); @@ -130,7 +110,7 @@ static int slice_verify(Slice *s) { a = (char*) SPECIAL_ROOT_SLICE; if (!unit_has_name(UNIT_DEREF(UNIT(s)->slice), a)) { - log_error_unit(UNIT(s)->id, + log_unit_error(UNIT(s)->id, "%s located outside its parent slice. Refusing.", UNIT(s)->id); return -EINVAL; } @@ -152,6 +132,10 @@ static int slice_load(Unit *u) { /* This is a new unit? Then let's add in some extras */ if (u->load_state == UNIT_LOADED) { + r = unit_patch_contexts(u); + if (r < 0) + return r; + r = slice_add_parent_slice(s); if (r < 0) return r; @@ -166,7 +150,7 @@ static int slice_load(Unit *u) { return slice_verify(s); } -static int slice_coldplug(Unit *u) { +static int slice_coldplug(Unit *u, Hashmap *deferred_work) { Slice *t = SLICE(u); assert(t); @@ -197,10 +181,11 @@ static int slice_start(Unit *u) { assert(t); assert(t->state == SLICE_DEAD); - unit_realize_cgroup(u); + (void) unit_realize_cgroup(u); + (void) unit_reset_cpu_usage(u); slice_set_state(t, SLICE_ACTIVE); - return 0; + return 1; } static int slice_stop(Unit *u) { @@ -213,7 +198,7 @@ static int slice_stop(Unit *u) { * unit_notify() will do that for us anyway. */ slice_set_state(t, SLICE_DEAD); - return 0; + return 1; } static int slice_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { @@ -286,9 +271,7 @@ const UnitVTable slice_vtable = { .no_alias = true, .no_instances = true, - .init = slice_init, .load = slice_load, - .done = slice_done, .coldplug = slice_coldplug,