X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=0cb2044325beb0f28448415e64432e357c5295f2;hb=368504f485d09b9fd48b7538e71981f648eb32bb;hp=5772f402b1f41885a579561157e5a8edf9c3838d;hpb=b2f8b02ec27dfec9cbd23573f47aba494f2e9b5f;p=elogind.git diff --git a/src/core/manager.c b/src/core/manager.c index 5772f402b..0cb204432 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -429,7 +429,6 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { m->running_as = running_as; m->exit_code = _MANAGER_EXIT_CODE_INVALID; m->default_timer_accuracy_usec = USEC_PER_MINUTE; - m->default_cpu_quota_period_usec = 100 * USEC_PER_MSEC; m->idle_pipe[0] = m->idle_pipe[1] = m->idle_pipe[2] = m->idle_pipe[3] = -1; @@ -456,6 +455,10 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { if (r < 0) goto fail; + r = set_ensure_allocated(&m->startup_units, trivial_hash_func, trivial_compare_func); + if (r < 0) + goto fail; + r = set_ensure_allocated(&m->failed_units, trivial_hash_func, trivial_compare_func); if (r < 0) goto fail; @@ -794,6 +797,7 @@ void manager_free(Manager *m) { hashmap_free(m->watch_pids2); hashmap_free(m->watch_bus); + set_free(m->startup_units); set_free(m->failed_units); sd_event_source_unref(m->signal_event_source); @@ -968,6 +972,7 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { r = lookup_paths_init( &m->lookup_paths, m->running_as, true, + NULL, m->generator_unit_path, m->generator_unit_path_early, m->generator_unit_path_late); @@ -2130,9 +2135,6 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) { if (u->id != t) continue; - if (!unit_can_serialize(u)) - continue; - /* Start marker */ fputs(u->id, f); fputc('\n', f); @@ -2374,6 +2376,7 @@ int manager_reload(Manager *m) { q = lookup_paths_init( &m->lookup_paths, m->running_as, true, + NULL, m->generator_unit_path, m->generator_unit_path_early, m->generator_unit_path_late); @@ -2446,6 +2449,8 @@ bool manager_unit_inactive_or_pending(Manager *m, const char *name) { void manager_check_finished(Manager *m) { char userspace[FORMAT_TIMESPAN_MAX], initrd[FORMAT_TIMESPAN_MAX], kernel[FORMAT_TIMESPAN_MAX], sum[FORMAT_TIMESPAN_MAX]; usec_t firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec; + Unit *u = NULL; + Iterator i; assert(m); @@ -2533,6 +2538,9 @@ void manager_check_finished(Manager *m) { NULL); } + SET_FOREACH(u, m->startup_units, i) + cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m)); + bus_manager_send_finished(m, firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec); sd_notifyf(false,