summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-10-13 22:40:19 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-10-13 22:40:22 +0900
commit5e71868ced159355a25dc935b24c8e9b1d946bd7 (patch)
treef43a3029fc367d977d62567400b2565a76221e71 /src
parent11e9fec2590d9726c57498d5c2ed9ea2860ad443 (diff)
downloadsystemd-5e71868ced159355a25dc935b24c8e9b1d946bd7.tar.gz
util: introduce two trivial hash_ops
Will be used in a later commit.
Diffstat (limited to 'src')
-rw-r--r--src/basic/hash-funcs.c13
-rw-r--r--src/basic/hash-funcs.h2
2 files changed, 15 insertions, 0 deletions
diff --git a/src/basic/hash-funcs.c b/src/basic/hash-funcs.c
index cf279e5cbe..83016c0fd6 100644
--- a/src/basic/hash-funcs.c
+++ b/src/basic/hash-funcs.c
@@ -71,6 +71,19 @@ const struct hash_ops trivial_hash_ops = {
.compare = trivial_compare_func,
};
+const struct hash_ops trivial_hash_ops_free = {
+ .hash = trivial_hash_func,
+ .compare = trivial_compare_func,
+ .free_key = free,
+};
+
+const struct hash_ops trivial_hash_ops_free_free = {
+ .hash = trivial_hash_func,
+ .compare = trivial_compare_func,
+ .free_key = free,
+ .free_value = free,
+};
+
void uint64_hash_func(const uint64_t *p, struct siphash *state) {
siphash24_compress(p, sizeof(uint64_t), state);
}
diff --git a/src/basic/hash-funcs.h b/src/basic/hash-funcs.h
index 005d1b21d2..fb60200941 100644
--- a/src/basic/hash-funcs.h
+++ b/src/basic/hash-funcs.h
@@ -88,6 +88,8 @@ extern const struct hash_ops path_hash_ops_free;
void trivial_hash_func(const void *p, struct siphash *state);
int trivial_compare_func(const void *a, const void *b) _const_;
extern const struct hash_ops trivial_hash_ops;
+extern const struct hash_ops trivial_hash_ops_free;
+extern const struct hash_ops trivial_hash_ops_free_free;
/* 32bit values we can always just embed in the pointer itself, but in order to support 32bit archs we need store 64bit
* values indirectly, since they don't fit in a pointer. */