summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2014-08-13 01:00:18 +0200
committerMichal Schmidt <mschmidt@redhat.com>2014-09-15 16:08:50 +0200
commitd5099efc47d4e6ac60816b5381a5f607ab03f06e (patch)
tree661308aae8a0885e90da25874e7df3e795532356 /src/network
parentf44541bc934c6e2b02155559e9eeb17a13a09558 (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.c2
-rw-r--r--src/network/networkd-manager.c8
-rw-r--r--src/network/networkd-network.c6
-rw-r--r--src/network/networkd-wait-online-link.c5
4 files changed, 10 insertions, 11 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 11ac1307d..9bf1a811c 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 1614bc009..2213ad717 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 a2e27e091..aad99236c 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 f23c7ceb8..268ab676c 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;