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/network | |
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/network')
-rw-r--r-- | src/network/networkd-link.c | 2 | ||||
-rw-r--r-- | src/network/networkd-manager.c | 8 | ||||
-rw-r--r-- | src/network/networkd-network.c | 6 | ||||
-rw-r--r-- | src/network/networkd-wait-online-link.c | 5 |
4 files changed, 10 insertions, 11 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 11ac1307d8..9bf1a811c9 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -206,7 +206,7 @@ static int link_new(Manager *manager, sd_rtnl_message *message, Link **ret) { if (r < 0) return -ENOMEM; - r = hashmap_ensure_allocated(&manager->links, NULL, NULL); + r = hashmap_ensure_allocated(&manager->links, NULL); if (r < 0) return r; diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 1614bc0091..2213ad717c 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -115,7 +115,7 @@ int manager_new(Manager **ret) { return -ENOMEM; } - m->netdevs = hashmap_new(string_hash_func, string_compare_func); + m->netdevs = hashmap_new(&string_hash_ops); if (!m->netdevs) return -ENOMEM; @@ -485,15 +485,15 @@ int manager_save(Manager *m) { assert(m->state_file); /* We add all NTP and DNS server to a set, to filter out duplicates */ - dns = set_new(string_hash_func, string_compare_func); + dns = set_new(&string_hash_ops); if (!dns) return -ENOMEM; - ntp = set_new(string_hash_func, string_compare_func); + ntp = set_new(&string_hash_ops); if (!ntp) return -ENOMEM; - domains = set_new(string_hash_func, string_compare_func); + domains = set_new(&string_hash_ops); if (!domains) return -ENOMEM; diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index a2e27e0910..aad99236c4 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -63,15 +63,15 @@ static int network_load_one(Manager *manager, const char *filename) { LIST_HEAD_INIT(network->static_addresses); LIST_HEAD_INIT(network->static_routes); - network->stacked_netdevs = hashmap_new(string_hash_func, string_compare_func); + network->stacked_netdevs = hashmap_new(&string_hash_ops); if (!network->stacked_netdevs) return log_oom(); - network->addresses_by_section = hashmap_new(NULL, NULL); + network->addresses_by_section = hashmap_new(NULL); if (!network->addresses_by_section) return log_oom(); - network->routes_by_section = hashmap_new(NULL, NULL); + network->routes_by_section = hashmap_new(NULL); if (!network->routes_by_section) return log_oom(); diff --git a/src/network/networkd-wait-online-link.c b/src/network/networkd-wait-online-link.c index f23c7ceb80..268ab676c9 100644 --- a/src/network/networkd-wait-online-link.c +++ b/src/network/networkd-wait-online-link.c @@ -34,12 +34,11 @@ int link_new(Manager *m, Link **ret, int ifindex, const char *ifname) { assert(m); assert(ifindex > 0); - r = hashmap_ensure_allocated(&m->links, NULL, NULL); + r = hashmap_ensure_allocated(&m->links, NULL); if (r < 0) return r; - r = hashmap_ensure_allocated(&m->links_by_name, - string_hash_func, string_compare_func); + r = hashmap_ensure_allocated(&m->links_by_name, &string_hash_ops); if (r < 0) return r; |