4562c35527
We allocated the names set for each unit, but in the majority of cases, we'd put only one name in the set: $ systemctl show --value -p Names '*'|grep .|grep -v ' '|wc -l 564 $ systemctl show --value -p Names '*'|grep .|grep ' '|wc -l 16 So let's add a separate .id field, and only store aliases in the set, and only create the set if there's at least one alias. This requires a bit of gymnastics in the code, but I think this optimization is worth the trouble, because we save one object for many loaded units. In particular set_complete_move() wasn't very useful because the target unit would always have at least one name defined, i.e. the optimization to move the whole set over would never fire.
21 lines
647 B
C
21 lines
647 B
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
#include "dropin.h"
|
|
#include "unit.h"
|
|
|
|
/* Read service data supplementary drop-in directories */
|
|
|
|
static inline int unit_find_dropin_paths(Unit *u, char ***paths) {
|
|
assert(u);
|
|
|
|
return unit_file_find_dropin_paths(NULL,
|
|
u->manager->lookup_paths.search_path,
|
|
u->manager->unit_path_cache,
|
|
".d", ".conf",
|
|
u->id, u->aliases,
|
|
paths);
|
|
}
|
|
|
|
int unit_load_dropin(Unit *u);
|