From d5099efc47d4e6ac60816b5381a5f607ab03f06e Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 13 Aug 2014 01:00:18 +0200 Subject: 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. --- src/sysv-generator/sysv-generator.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/sysv-generator') diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index 368d420df3..6c3281ff15 100644 --- a/src/sysv-generator/sysv-generator.c +++ b/src/sysv-generator/sysv-generator.c @@ -824,8 +824,7 @@ static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) { MAX(a*10 + b, service->sysv_start_priority); } - r = set_ensure_allocated(&runlevel_services[i], - trivial_hash_func, trivial_compare_func); + r = set_ensure_allocated(&runlevel_services[i], NULL); if (r < 0) goto finish; @@ -836,8 +835,7 @@ static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) { } else if (de->d_name[0] == 'K' && (rcnd_table[i].type == RUNLEVEL_DOWN)) { - r = set_ensure_allocated(&shutdown_services, - trivial_hash_func, trivial_compare_func); + r = set_ensure_allocated(&shutdown_services, NULL); if (r < 0) goto finish; @@ -905,7 +903,7 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - all_services = hashmap_new(string_hash_func, string_compare_func); + all_services = hashmap_new(&string_hash_ops); if (!all_services) { log_oom(); return EXIT_FAILURE; -- cgit v1.2.3-54-g00ecf