[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] tools/xenstore: modify interface of create_hashtable()
commit 9b2c27e277c4d0e4aea3e841fb3e8f87594fa56c Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Tue May 30 10:54:05 2023 +0200 Commit: Julien Grall <jgrall@xxxxxxxxxx> CommitDate: Fri Jun 9 19:16:46 2023 +0100 tools/xenstore: modify interface of create_hashtable() The minsize parameter of create_hashtable() doesn't have any real use case for Xenstore, so drop it. For better talloc_report_full() diagnostic output add a name parameter to create_hashtable(). Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx> --- tools/xenstore/hashtable.c | 23 ++++++----------------- tools/xenstore/hashtable.h | 4 ++-- tools/xenstore/xenstored_core.c | 2 +- tools/xenstore/xenstored_domain.c | 4 ++-- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/tools/xenstore/hashtable.c b/tools/xenstore/hashtable.c index dc209158fa..3d2d3a0e22 100644 --- a/tools/xenstore/hashtable.c +++ b/tools/xenstore/hashtable.c @@ -55,39 +55,28 @@ static unsigned int loadlimit(unsigned int pindex) return ((uint64_t)primes[pindex] * MAX_LOAD_PERCENT) / 100; } -struct hashtable *create_hashtable(const void *ctx, unsigned int minsize, +struct hashtable *create_hashtable(const void *ctx, const char *name, unsigned int (*hashf) (const void *), int (*eqf) (const void *, const void *), unsigned int flags) { struct hashtable *h; - unsigned int pindex, size = primes[0]; - - /* Check requested hashtable isn't too large */ - if (minsize > (1u << 30)) return NULL; - - /* Enforce size as prime */ - for (pindex = 0; pindex < PRIME_TABLE_LEN; pindex++) { - if (primes[pindex] > minsize) { - size = primes[pindex]; - break; - } - } h = talloc_zero(ctx, struct hashtable); if (NULL == h) goto err0; - h->table = talloc_zero_array(h, struct entry *, size); + talloc_set_name_const(h, name); + h->table = talloc_zero_array(h, struct entry *, primes[0]); if (NULL == h->table) goto err1; - h->tablelength = size; + h->primeindex = 0; + h->tablelength = primes[h->primeindex]; h->flags = flags; - h->primeindex = pindex; h->entrycount = 0; h->hashfn = hashf; h->eqfn = eqf; - h->loadlimit = loadlimit(pindex); + h->loadlimit = loadlimit(h->primeindex); return h; err1: diff --git a/tools/xenstore/hashtable.h b/tools/xenstore/hashtable.h index 04310783b6..0e1a6f61c2 100644 --- a/tools/xenstore/hashtable.h +++ b/tools/xenstore/hashtable.h @@ -10,7 +10,7 @@ struct hashtable; * @name create_hashtable * @param ctx talloc context to use for allocations - * @param minsize minimum initial size of hashtable + * @param name talloc name of the hashtable * @param hashfunction function for hashing keys * @param key_eq_fn function for determining key equality * @param flags flags HASHTABLE_* @@ -23,7 +23,7 @@ struct hashtable; #define HASHTABLE_FREE_KEY (1U << 1) struct hashtable * -create_hashtable(const void *ctx, unsigned int minsize, +create_hashtable(const void *ctx, const char *name, unsigned int (*hashfunction) (const void *), int (*key_eq_fn) (const void *, const void *), unsigned int flags diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c index 22df395aac..418790d8d7 100644 --- a/tools/xenstore/xenstored_core.c +++ b/tools/xenstore/xenstored_core.c @@ -2521,7 +2521,7 @@ void check_store(void) struct check_store_data data; /* Don't free values (they are all void *1) */ - data.reachable = create_hashtable(NULL, 16, hash_from_key_fn, + data.reachable = create_hashtable(NULL, "checkstore", hash_from_key_fn, keys_equal_fn, HASHTABLE_FREE_KEY); if (!data.reachable) { log("check_store: ENOMEM"); diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_domain.c index e284cf1cf1..d67d67fae3 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -1014,7 +1014,7 @@ void domain_init(int evtfd) int rc; /* Start with a random rather low domain count for the hashtable. */ - domhash = create_hashtable(NULL, 8, domhash_fn, domeq_fn, 0); + domhash = create_hashtable(NULL, "domains", domhash_fn, domeq_fn, 0); if (!domhash) barf_perror("Failed to allocate domain hashtable"); @@ -1806,7 +1806,7 @@ struct hashtable *domain_check_acc_init(void) { struct hashtable *domains; - domains = create_hashtable(NULL, 8, domhash_fn, domeq_fn, + domains = create_hashtable(NULL, "domain_check", domhash_fn, domeq_fn, HASHTABLE_FREE_VALUE); if (!domains) return NULL; -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |