aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstore/hashtable.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-03 19:06:50 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-03-03 19:06:50 +0100
commit74bb865dac0aaedaf2cc87db49de3e1595bee473 (patch)
treed8dc76a383098136b1a196b677933bc946954f2c /tools/xenstore/hashtable.c
parentd870b4b7091a192b6513500f5679cdc6e4145041 (diff)
downloadxen-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.c8
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;
}