diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2014-08-13 01:00:18 +0200 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2014-09-15 16:08:50 +0200 |
commit | d5099efc47d4e6ac60816b5381a5f607ab03f06e (patch) | |
tree | 661308aae8a0885e90da25874e7df3e795532356 /src/core/manager.c | |
parent | f44541bc934c6e2b02155559e9eeb17a13a09558 (diff) |
hashmap: introduce hash_ops to make struct Hashmap smaller
It is redundant to store 'hash' and 'compare' function pointers in
struct Hashmap separately. The functions always comprise a pair.
Store a single pointer to struct hash_ops instead.
systemd keeps hundreds of hashmaps, so this saves a little bit of
memory.
Diffstat (limited to 'src/core/manager.c')
-rw-r--r-- | src/core/manager.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/core/manager.c b/src/core/manager.c index 095111e8c6..0770727cde 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -449,27 +449,27 @@ int manager_new(SystemdRunningAs running_as, bool test_run, Manager **_m) { if (r < 0) goto fail; - r = hashmap_ensure_allocated(&m->units, string_hash_func, string_compare_func); + r = hashmap_ensure_allocated(&m->units, &string_hash_ops); if (r < 0) goto fail; - r = hashmap_ensure_allocated(&m->jobs, trivial_hash_func, trivial_compare_func); + r = hashmap_ensure_allocated(&m->jobs, NULL); if (r < 0) goto fail; - r = hashmap_ensure_allocated(&m->cgroup_unit, string_hash_func, string_compare_func); + r = hashmap_ensure_allocated(&m->cgroup_unit, &string_hash_ops); if (r < 0) goto fail; - r = hashmap_ensure_allocated(&m->watch_bus, string_hash_func, string_compare_func); + r = hashmap_ensure_allocated(&m->watch_bus, &string_hash_ops); if (r < 0) goto fail; - r = set_ensure_allocated(&m->startup_units, trivial_hash_func, trivial_compare_func); + r = set_ensure_allocated(&m->startup_units, NULL); if (r < 0) goto fail; - r = set_ensure_allocated(&m->failed_units, trivial_hash_func, trivial_compare_func); + r = set_ensure_allocated(&m->failed_units, NULL); if (r < 0) goto fail; @@ -903,7 +903,7 @@ static void manager_build_unit_path_cache(Manager *m) { set_free_free(m->unit_path_cache); - m->unit_path_cache = set_new(string_hash_func, string_compare_func); + m->unit_path_cache = set_new(&string_hash_ops); if (!m->unit_path_cache) { log_error("Failed to allocate unit path cache."); return; |