Mailing List Archive

[xen master] tools/xenstored: hashtable: Constify the parameters of hashfn/eqfn
commit 5b46dd85d051ceecc2c00a0de27f03e571bff379
Author: Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Jan 27 18:55:46 2023 +0000
Commit: Julien Grall <jgrall@amazon.com>
CommitDate: Thu Feb 9 17:29:51 2023 +0000

tools/xenstored: hashtable: Constify the parameters of hashfn/eqfn

The parameters of hashfn/eqfn should never be modified. So constify
them and propagate the const to the users.

Take the opportunity to solve some coding style issues around the
code modified.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Henry Wang <Henry.Wang@arm.com>
Tested-by: Henry Wang <Henry.Wang@arm.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
tools/xenstore/hashtable.c | 16 ++++++++--------
tools/xenstore/hashtable.h | 10 +++++-----
tools/xenstore/xenstored_core.c | 8 ++++----
tools/xenstore/xenstored_domain.c | 8 ++++----
4 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/tools/xenstore/hashtable.c b/tools/xenstore/hashtable.c
index 30eb9f21d2..3d4466b597 100644
--- a/tools/xenstore/hashtable.c
+++ b/tools/xenstore/hashtable.c
@@ -23,8 +23,8 @@ struct hashtable {
unsigned int entrycount;
unsigned int loadlimit;
unsigned int primeindex;
- unsigned int (*hashfn) (void *k);
- int (*eqfn) (void *k1, void *k2);
+ unsigned int (*hashfn) (const void *k);
+ int (*eqfn) (const void *k1, const void *k2);
};

/*
@@ -53,8 +53,8 @@ indexFor(unsigned int tablelength, unsigned int hashvalue) {
/*****************************************************************************/
struct hashtable *
create_hashtable(const void *ctx, unsigned int minsize,
- unsigned int (*hashf) (void*),
- int (*eqf) (void*,void*),
+ unsigned int (*hashf) (const void *),
+ int (*eqf) (const void *, const void *),
unsigned int flags)
{
struct hashtable *h;
@@ -92,7 +92,7 @@ err0:

/*****************************************************************************/
unsigned int
-hash(struct hashtable *h, void *k)
+hash(const struct hashtable *h, const void *k)
{
/* Aim to protect against poor hash functions by adding logic here
* - logic taken from java 1.4 hashtable source */
@@ -151,7 +151,7 @@ hashtable_expand(struct hashtable *h)

/*****************************************************************************/
unsigned int
-hashtable_count(struct hashtable *h)
+hashtable_count(const struct hashtable *h)
{
return h->entrycount;
}
@@ -188,7 +188,7 @@ hashtable_insert(struct hashtable *h, void *k, void *v)

/*****************************************************************************/
void * /* returns value associated with key */
-hashtable_search(struct hashtable *h, void *k)
+hashtable_search(const struct hashtable *h, const void *k)
{
struct entry *e;
unsigned int hashvalue, index;
@@ -206,7 +206,7 @@ hashtable_search(struct hashtable *h, void *k)

/*****************************************************************************/
void
-hashtable_remove(struct hashtable *h, void *k)
+hashtable_remove(struct hashtable *h, const void *k)
{
/* TODO: consider compacting the table when the load factor drops enough,
* or provide a 'compact' method. */
diff --git a/tools/xenstore/hashtable.h b/tools/xenstore/hashtable.h
index 4e2823134e..cc0090f133 100644
--- a/tools/xenstore/hashtable.h
+++ b/tools/xenstore/hashtable.h
@@ -24,8 +24,8 @@ struct hashtable;

struct hashtable *
create_hashtable(const void *ctx, unsigned int minsize,
- unsigned int (*hashfunction) (void*),
- int (*key_eq_fn) (void*,void*),
+ unsigned int (*hashfunction) (const void *),
+ int (*key_eq_fn) (const void *, const void *),
unsigned int flags
);

@@ -61,7 +61,7 @@ hashtable_insert(struct hashtable *h, void *k, void *v);
*/

void *
-hashtable_search(struct hashtable *h, void *k);
+hashtable_search(const struct hashtable *h, const void *k);

/*****************************************************************************
* hashtable_remove
@@ -72,7 +72,7 @@ hashtable_search(struct hashtable *h, void *k);
*/

void
-hashtable_remove(struct hashtable *h, void *k);
+hashtable_remove(struct hashtable *h, const void *k);

/*****************************************************************************
* hashtable_count
@@ -82,7 +82,7 @@ hashtable_remove(struct hashtable *h, void *k);
* @return the number of items stored in the hashtable
*/
unsigned int
-hashtable_count(struct hashtable *h);
+hashtable_count(const struct hashtable *h);

/*****************************************************************************
* hashtable_iterate
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 4f00e0cdc0..7348f935bc 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -2386,9 +2386,9 @@ void setup_structure(bool live_update)
}
}

-static unsigned int hash_from_key_fn(void *k)
+static unsigned int hash_from_key_fn(const void *k)
{
- char *str = k;
+ const char *str = k;
unsigned int hash = 5381;
char c;

@@ -2399,9 +2399,9 @@ static unsigned int hash_from_key_fn(void *k)
}


-static int keys_equal_fn(void *key1, void *key2)
+static int keys_equal_fn(const void *key1, const void *key2)
{
- return 0 == strcmp((char *)key1, (char *)key2);
+ return 0 == strcmp(key1, key2);
}

int remember_string(struct hashtable *hash, const char *str)
diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_domain.c
index 9ef41ede03..d7fc2fafc7 100644
--- a/tools/xenstore/xenstored_domain.c
+++ b/tools/xenstore/xenstored_domain.c
@@ -916,14 +916,14 @@ void dom0_init(void)
xenevtchn_notify(xce_handle, dom0->port);
}

-static unsigned int domhash_fn(void *k)
+static unsigned int domhash_fn(const void *k)
{
- return *(unsigned int *)k;
+ return *(const unsigned int *)k;
}

-static int domeq_fn(void *key1, void *key2)
+static int domeq_fn(const void *key1, const void *key2)
{
- return *(unsigned int *)key1 == *(unsigned int *)key2;
+ return *(const unsigned int *)key1 == *(const unsigned int *)key2;
}

void domain_init(int evtfd)
--
generated by git-patchbot for /home/xen/git/xen.git#master