Clean-up: hash table utils are unnecessarily non-const
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 2 Nov 2017 17:19:43 +0000 (13:19 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 28 Feb 2018 16:28:37 +0000 (11:28 -0500)
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 <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/buffer-registry.c
src/bin/lttng-sessiond/ust-registry.c
src/common/hashtable/hashtable.h
src/common/hashtable/utils.c
src/common/hashtable/utils.h

index 7002b33c7b2969bca7ce97f04b2ffd64ecd394a6..06e8f6b6a399030177ae2dfd955ef15baa927b2c 100644 (file)
@@ -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);
 
index d63c750087249ff67c7547eaf74179f0700c8132..ed830b60821cc67154879c629655f48e7b62bf10 100644 (file)
@@ -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);
 
index a3d41d94d29a4f1b04f716980b8497156f5e3f1f..ea58bfe12010c694339e178d9645cb8c853a49be 100644 (file)
@@ -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 {
index 8d68ef603736e60c362b20b6bdb25b5a49639fb7..c9d75e289a0cf6f4d39a85b3f98378ff717d6141 100644 (file)
@@ -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)) {
index 9d53e3864f9d7ae54142e24c12d65216b4c327cf..3bb1c13c73cd8be414e23cb9d5507ed0cffc072d 100644 (file)
 
 #include <stdint.h>
 
-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 */
This page took 0.029198 seconds and 4 git commands to generate.