[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);
assert(s);
/* Make sure slices are unloaded on shutdown */
- r = unit_add_dependency_by_name(UNIT(s), UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true);
+ r = unit_add_two_dependencies_by_name(
+ UNIT(s),
+ UNIT_BEFORE, UNIT_CONFLICTS,
+ SPECIAL_SHUTDOWN_TARGET, NULL, true);
if (r < 0)
return r;
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;
}
/* 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;
return 0;
}
-static int slice_kill(Unit *u, KillWho who, int signo, DBusError *error) {
+static int slice_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
return unit_kill_common(u, who, signo, -1, -1, error);
}
const UnitVTable slice_vtable = {
.object_size = sizeof(Slice),
+ .cgroup_context_offset = offsetof(Slice, cgroup_context),
+
.sections =
"Unit\0"
"Slice\0"
"Install\0",
-
.private_section = "Slice",
- .cgroup_context_offset = offsetof(Slice, cgroup_context),
.no_alias = true,
.no_instances = true,
- .init = slice_init,
.load = slice_load,
- .done = slice_done,
.coldplug = slice_coldplug,
.sub_state_to_string = slice_sub_state_to_string,
.bus_interface = "org.freedesktop.systemd1.Slice",
- .bus_message_handler = bus_slice_message_handler,
+ .bus_vtable = bus_slice_vtable,
+ .bus_set_property = bus_slice_set_property,
+ .bus_commit_properties = bus_slice_commit_properties,
.status_message_formats = {
.finished_start_job = {