chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: minor clean-ups
[elogind.git]
/
src
/
basic
/
hashmap.c
diff --git
a/src/basic/hashmap.c
b/src/basic/hashmap.c
index 55e198960b03e8a76197e01b50bd162a0013f99f..3c0e70b9c0180d79615172f85973e4a27a43ace4 100644
(file)
--- a/
src/basic/hashmap.c
+++ b/
src/basic/hashmap.c
@@
-276,10
+276,8
@@
static const struct hashmap_type_info hashmap_type_info[_HASHMAP_TYPE_MAX] = {
},
};
},
};
-unsigned long string_hash_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]) {
- uint64_t u;
- siphash24((uint8_t*) &u, p, strlen(p), hash_key);
- return (unsigned long) u;
+void string_hash_func(const void *p, struct siphash *state) {
+ siphash24_compress(p, strlen(p) + 1, state);
}
int string_compare_func(const void *a, const void *b) {
}
int string_compare_func(const void *a, const void *b) {
@@
-291,10
+289,8
@@
const struct hash_ops string_hash_ops = {
.compare = string_compare_func
};
.compare = string_compare_func
};
-unsigned long trivial_hash_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]) {
- uint64_t u;
- siphash24((uint8_t*) &u, &p, sizeof(p), hash_key);
- return (unsigned long) u;
+void trivial_hash_func(const void *p, struct siphash *state) {
+ siphash24_compress(&p, sizeof(p), state);
}
int trivial_compare_func(const void *a, const void *b) {
}
int trivial_compare_func(const void *a, const void *b) {
@@
-306,10
+302,8
@@
const struct hash_ops trivial_hash_ops = {
.compare = trivial_compare_func
};
.compare = trivial_compare_func
};
-unsigned long uint64_hash_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]) {
- uint64_t u;
- siphash24((uint8_t*) &u, p, sizeof(uint64_t), hash_key);
- return (unsigned long) u;
+void uint64_hash_func(const void *p, struct siphash *state) {
+ siphash24_compress(p, sizeof(uint64_t), state);
}
int uint64_compare_func(const void *_a, const void *_b) {
}
int uint64_compare_func(const void *_a, const void *_b) {
@@
-325,10
+319,8
@@
const struct hash_ops uint64_hash_ops = {
};
#if SIZEOF_DEV_T != 8
};
#if SIZEOF_DEV_T != 8
-unsigned long devt_hash_func(const void *p, const uint8_t hash_key[HASH_KEY_SIZE]) {
- uint64_t u;
- siphash24((uint8_t*) &u, p, sizeof(dev_t), hash_key);
- return (unsigned long) u;
+void devt_hash_func(const void *p, struct siphash *state) {
+ siphash24_compress(p, sizeof(dev_t), state);
}
int devt_compare_func(const void *_a, const void *_b) {
}
int devt_compare_func(const void *_a, const void *_b) {
@@
-379,7
+371,16
@@
static uint8_t *hash_key(HashmapBase *h) {
}
static unsigned base_bucket_hash(HashmapBase *h, const void *p) {
}
static unsigned base_bucket_hash(HashmapBase *h, const void *p) {
- return (unsigned) (h->hash_ops->hash(p, hash_key(h)) % n_buckets(h));
+ struct siphash state;
+ uint64_t hash;
+
+ siphash24_init(&state, hash_key(h));
+
+ h->hash_ops->hash(p, &state);
+
+ siphash24_finalize((uint8_t*)&hash, &state);
+
+ return (unsigned) (hash % n_buckets(h));
}
#define bucket_hash(h, p) base_bucket_hash(HASHMAP_BASE(h), p)
}
#define bucket_hash(h, p) base_bucket_hash(HASHMAP_BASE(h), p)
@@
-1455,6
+1456,8
@@
int hashmap_remove_and_put(Hashmap *h, const void *old_key, const void *new_key,
return 0;
}
return 0;
}
+/// UNNEEDED by elogind
+#if 0
int set_remove_and_put(Set *s, const void *old_key, const void *new_key) {
struct swap_entries swap;
struct hashmap_base_entry *e;
int set_remove_and_put(Set *s, const void *old_key, const void *new_key) {
struct swap_entries swap;
struct hashmap_base_entry *e;
@@
-1480,6
+1483,7
@@
int set_remove_and_put(Set *s, const void *old_key, const void *new_key) {
return 0;
}
return 0;
}
+#endif // 0
int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const void *new_key, void *value) {
struct swap_entries swap;
int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const void *new_key, void *value) {
struct swap_entries swap;
@@
-1820,6
+1824,7
@@
void *ordered_hashmap_next(OrderedHashmap *h, const void *key) {
return ordered_bucket_at(h, e->iterate_next)->p.value;
}
#endif // 0
return ordered_bucket_at(h, e->iterate_next)->p.value;
}
#endif // 0
+
int set_consume(Set *s, void *value) {
int r;
int set_consume(Set *s, void *value) {
int r;