From bcd52dd90f07cc4cf4eebf32761568a2c03c540a Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 2 Nov 2017 13:19:43 -0400 Subject: [PATCH] Clean-up: hash table utils are unnecessarily non-const MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Non-const internal utilities make it hard/impossible to write const-correct code in the rest of the project. This clean-up allows the notification subsystem to improve on this code-quality front (see follow-up patches). Signed-off-by: Jérémie Galarneau --- src/bin/lttng-sessiond/buffer-registry.c | 4 +-- src/bin/lttng-sessiond/ust-registry.c | 4 +-- src/common/hashtable/hashtable.h | 2 +- src/common/hashtable/utils.c | 33 +++++++++++++----------- src/common/hashtable/utils.h | 16 ++++++------ 5 files changed, 31 insertions(+), 28 deletions(-) diff --git a/src/bin/lttng-sessiond/buffer-registry.c b/src/bin/lttng-sessiond/buffer-registry.c index 7002b33c7..06e8f6b6a 100644 --- a/src/bin/lttng-sessiond/buffer-registry.c +++ b/src/bin/lttng-sessiond/buffer-registry.c @@ -73,10 +73,10 @@ no_match: * Hash function for the per UID registry hash table. This XOR the triplet * together. */ -static unsigned long ht_hash_reg_uid(void *_key, unsigned long seed) +static unsigned long ht_hash_reg_uid(const void *_key, unsigned long seed) { uint64_t xored_key; - struct buffer_reg_uid *key = _key; + const struct buffer_reg_uid *key = _key; assert(key); diff --git a/src/bin/lttng-sessiond/ust-registry.c b/src/bin/lttng-sessiond/ust-registry.c index d63c75008..ed830b608 100644 --- a/src/bin/lttng-sessiond/ust-registry.c +++ b/src/bin/lttng-sessiond/ust-registry.c @@ -62,10 +62,10 @@ no_match: return 0; } -static unsigned long ht_hash_event(void *_key, unsigned long seed) +static unsigned long ht_hash_event(const void *_key, unsigned long seed) { uint64_t xored_key; - struct ust_registry_event *key = _key; + const struct ust_registry_event *key = _key; assert(key); diff --git a/src/common/hashtable/hashtable.h b/src/common/hashtable/hashtable.h index a3d41d94d..ea58bfe12 100644 --- a/src/common/hashtable/hashtable.h +++ b/src/common/hashtable/hashtable.h @@ -26,7 +26,7 @@ extern unsigned long lttng_ht_seed; -typedef unsigned long (*hash_fct)(void *_key, unsigned long seed); +typedef unsigned long (*hash_fct)(const void *_key, unsigned long seed); typedef cds_lfht_match_fct hash_match_fct; enum lttng_ht_type { diff --git a/src/common/hashtable/utils.c b/src/common/hashtable/utils.c index 8d68ef603..c9d75e289 100644 --- a/src/common/hashtable/utils.c +++ b/src/common/hashtable/utils.c @@ -449,7 +449,7 @@ static uint32_t __attribute__((unused)) hashlittle(const void *key, } LTTNG_HIDDEN -unsigned long hash_key_u64(void *_key, unsigned long seed) +unsigned long hash_key_u64(const void *_key, unsigned long seed) { union { uint64_t v64; @@ -461,7 +461,7 @@ unsigned long hash_key_u64(void *_key, unsigned long seed) } key; v.v64 = (uint64_t) seed; - key.v64 = *(uint64_t *) _key; + key.v64 = *(const uint64_t *) _key; hashword2(key.v32, 2, &v.v32[0], &v.v32[1]); return v.v64; } @@ -471,7 +471,7 @@ unsigned long hash_key_u64(void *_key, unsigned long seed) * Hash function for number value. */ LTTNG_HIDDEN -unsigned long hash_key_ulong(void *_key, unsigned long seed) +unsigned long hash_key_ulong(const void *_key, unsigned long seed) { uint64_t __key = (uint64_t) _key; return (unsigned long) hash_key_u64(&__key, seed); @@ -481,7 +481,7 @@ unsigned long hash_key_ulong(void *_key, unsigned long seed) * Hash function for number value. */ LTTNG_HIDDEN -unsigned long hash_key_ulong(void *_key, unsigned long seed) +unsigned long hash_key_ulong(const void *_key, unsigned long seed) { uint32_t key = (uint32_t) _key; @@ -493,18 +493,19 @@ unsigned long hash_key_ulong(void *_key, unsigned long seed) * Hash function for string. */ LTTNG_HIDDEN -unsigned long hash_key_str(void *key, unsigned long seed) +unsigned long hash_key_str(const void *key, unsigned long seed) { - return hashlittle(key, strlen((char *) key), seed); + return hashlittle(key, strlen((const char *) key), seed); } /* * Hash function for two uint64_t. */ LTTNG_HIDDEN -unsigned long hash_key_two_u64(void *key, unsigned long seed) +unsigned long hash_key_two_u64(const void *key, unsigned long seed) { - struct lttng_ht_two_u64 *k = (struct lttng_ht_two_u64 *) key; + const struct lttng_ht_two_u64 *k = + (const struct lttng_ht_two_u64 *) key; return hash_key_u64(&k->key1, seed) ^ hash_key_u64(&k->key2, seed); } @@ -513,7 +514,7 @@ unsigned long hash_key_two_u64(void *key, unsigned long seed) * Hash function compare for number value. */ LTTNG_HIDDEN -int hash_match_key_ulong(void *key1, void *key2) +int hash_match_key_ulong(const void *key1, const void *key2) { if (key1 == key2) { return 1; @@ -526,9 +527,9 @@ int hash_match_key_ulong(void *key1, void *key2) * Hash function compare for number value. */ LTTNG_HIDDEN -int hash_match_key_u64(void *key1, void *key2) +int hash_match_key_u64(const void *key1, const void *key2) { - if (*(uint64_t *) key1 == *(uint64_t *) key2) { + if (*(const uint64_t *) key1 == *(const uint64_t *) key2) { return 1; } @@ -539,7 +540,7 @@ int hash_match_key_u64(void *key1, void *key2) * Hash compare function for string. */ LTTNG_HIDDEN -int hash_match_key_str(void *key1, void *key2) +int hash_match_key_str(const void *key1, const void *key2) { if (strcmp(key1, key2) == 0) { return 1; @@ -552,10 +553,12 @@ int hash_match_key_str(void *key1, void *key2) * Hash function compare two uint64_t. */ LTTNG_HIDDEN -int hash_match_key_two_u64(void *key1, void *key2) +int hash_match_key_two_u64(const void *key1, const void *key2) { - struct lttng_ht_two_u64 *k1 = (struct lttng_ht_two_u64 *) key1; - struct lttng_ht_two_u64 *k2 = (struct lttng_ht_two_u64 *) key2; + const struct lttng_ht_two_u64 *k1 = + (const struct lttng_ht_two_u64 *) key1; + const struct lttng_ht_two_u64 *k2 = + (const struct lttng_ht_two_u64 *) key2; if (hash_match_key_u64(&k1->key1, &k2->key1) && hash_match_key_u64(&k1->key2, &k2->key2)) { diff --git a/src/common/hashtable/utils.h b/src/common/hashtable/utils.h index 9d53e3864..3bb1c13c7 100644 --- a/src/common/hashtable/utils.h +++ b/src/common/hashtable/utils.h @@ -20,13 +20,13 @@ #include -unsigned long hash_key_ulong(void *_key, unsigned long seed); -unsigned long hash_key_u64(void *_key, unsigned long seed); -unsigned long hash_key_str(void *key, unsigned long seed); -unsigned long hash_key_two_u64(void *key, unsigned long seed); -int hash_match_key_ulong(void *key1, void *key2); -int hash_match_key_u64(void *key1, void *key2); -int hash_match_key_str(void *key1, void *key2); -int hash_match_key_two_u64(void *key1, void *key2); +unsigned long hash_key_ulong(const void *_key, unsigned long seed); +unsigned long hash_key_u64(const void *_key, unsigned long seed); +unsigned long hash_key_str(const void *key, unsigned long seed); +unsigned long hash_key_two_u64(const void *key, unsigned long seed); +int hash_match_key_ulong(const void *key1, const void *key2); +int hash_match_key_u64(const void *key1, const void *key2); +int hash_match_key_str(const void *key1, const void *key2); +int hash_match_key_two_u64(const void *key1, const void *key2); #endif /* _LTT_HT_UTILS_H */ -- 2.34.1