diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-03-03 19:06:50 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-03-03 19:06:50 +0100 |
commit | 74bb865dac0aaedaf2cc87db49de3e1595bee473 (patch) | |
tree | d8dc76a383098136b1a196b677933bc946954f2c /tools/xenstore/hashtable.c | |
parent | d870b4b7091a192b6513500f5679cdc6e4145041 (diff) | |
download | xen-74bb865dac0aaedaf2cc87db49de3e1595bee473.tar.gz xen-74bb865dac0aaedaf2cc87db49de3e1595bee473.tar.bz2 xen-74bb865dac0aaedaf2cc87db49de3e1595bee473.zip |
Avoid floating point in hash table implementation.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'tools/xenstore/hashtable.c')
-rw-r--r-- | tools/xenstore/hashtable.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/xenstore/hashtable.c b/tools/xenstore/hashtable.c index 763357edce..c96fb675cd 100644 --- a/tools/xenstore/hashtable.c +++ b/tools/xenstore/hashtable.c @@ -6,6 +6,7 @@ #include <stdio.h> #include <string.h> #include <math.h> +#include <stdint.h> /* Credit for primes table: Aaron Krowne @@ -22,7 +23,7 @@ static const unsigned int primes[] = { 805306457, 1610612741 }; const unsigned int prime_table_length = sizeof(primes)/sizeof(primes[0]); -const float max_load_factor = 0.65; +const unsigned int max_load_factor = 65; /* percentage */ /*****************************************************************************/ struct hashtable * @@ -48,7 +49,7 @@ create_hashtable(unsigned int minsize, h->entrycount = 0; h->hashfn = hashf; h->eqfn = eqf; - h->loadlimit = (unsigned int) ceil(size * max_load_factor); + h->loadlimit = (unsigned int)(((uint64_t)size * max_load_factor) / 100); return h; } @@ -121,7 +122,8 @@ hashtable_expand(struct hashtable *h) } } h->tablelength = newsize; - h->loadlimit = (unsigned int) ceil(newsize * max_load_factor); + h->loadlimit = (unsigned int) + (((uint64_t)newsize * max_load_factor) / 100); return -1; } |