From: Rusty Russell Date: Wed, 31 Aug 2011 06:01:05 +0000 (+0930) Subject: tdb2: make jenkins_hash function non-static, rename to tdb_jenkins_hash. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=c8f6f8c2dea76042f74c02eff048847e62adcca6;hp=97224cbbe29e76522ec38d031c54b1cadce8ae03 tdb2: make jenkins_hash function non-static, rename to tdb_jenkins_hash. We're going to need access to it from tdb1_open, so expose it now. It's better in hash.c anyway. --- diff --git a/ccan/tdb2/hash.c b/ccan/tdb2/hash.c index 1359cfec..56c5086e 100644 --- a/ccan/tdb2/hash.c +++ b/ccan/tdb2/hash.c @@ -16,8 +16,20 @@ License along with this library; if not, see . */ #include "private.h" +#include #include +/* Default hash function. */ +uint64_t tdb_jenkins_hash(const void *key, size_t length, uint64_t seed, + void *unused) +{ + uint64_t ret; + /* hash64_stable assumes lower bits are more important; they are a + * slightly better hash. We use the upper bits first, so swap them. */ + ret = hash64_stable((const unsigned char *)key, length, seed); + return (ret >> 32) | (ret << 32); +} + uint64_t tdb_hash(struct tdb_context *tdb, const void *ptr, size_t len) { return tdb->hash_fn(ptr, len, tdb->hash_seed, tdb->hash_data); diff --git a/ccan/tdb2/open.c b/ccan/tdb2/open.c index e4551c84..49804acf 100644 --- a/ccan/tdb2/open.c +++ b/ccan/tdb2/open.c @@ -16,7 +16,6 @@ License along with this library; if not, see . */ #include "private.h" -#include #include /* all tdbs, to detect double-opens (fcntl file don't nest!) */ @@ -242,16 +241,6 @@ enum TDB_ERROR tdb_set_attribute(struct tdb_context *tdb, return TDB_SUCCESS; } -static uint64_t jenkins_hash(const void *key, size_t length, uint64_t seed, - void *unused) -{ - uint64_t ret; - /* hash64_stable assumes lower bits are more important; they are a - * slightly better hash. We use the upper bits first, so swap them. */ - ret = hash64_stable((const unsigned char *)key, length, seed); - return (ret >> 32) | (ret << 32); -} - enum TDB_ERROR tdb_get_attribute(struct tdb_context *tdb, union tdb_attribute *attr) { @@ -371,7 +360,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, tdb->openhook = NULL; tdb->lock_fn = tdb_fcntl_lock; tdb->unlock_fn = tdb_fcntl_unlock; - tdb->hash_fn = jenkins_hash; + tdb->hash_fn = tdb_jenkins_hash; memset(&tdb->stats, 0, sizeof(tdb->stats)); tdb->stats.base.attr = TDB_ATTRIBUTE_STATS; tdb->stats.size = sizeof(tdb->stats); diff --git a/ccan/tdb2/private.h b/ccan/tdb2/private.h index 600d3b5f..4bce11a1 100644 --- a/ccan/tdb2/private.h +++ b/ccan/tdb2/private.h @@ -338,6 +338,9 @@ struct tdb_methods { internal prototypes */ /* hash.c: */ +uint64_t tdb_jenkins_hash(const void *key, size_t length, uint64_t seed, + void *unused); + tdb_bool_err first_in_hash(struct tdb_context *tdb, struct traverse_info *tinfo, TDB_DATA *kbuf, size_t *dlen); diff --git a/ccan/tdb2/test/failtest_helper.h b/ccan/tdb2/test/failtest_helper.h index 73cd1aeb..a585dc2b 100644 --- a/ccan/tdb2/test/failtest_helper.h +++ b/ccan/tdb2/test/failtest_helper.h @@ -4,9 +4,9 @@ #include /* FIXME: Check these! */ -#define INITIAL_TDB_MALLOC "open.c", 354, FAILTEST_MALLOC -#define URANDOM_OPEN "open.c", 62, FAILTEST_OPEN -#define URANDOM_READ "open.c", 42, FAILTEST_READ +#define INITIAL_TDB_MALLOC "open.c", 343, FAILTEST_MALLOC +#define URANDOM_OPEN "open.c", 61, FAILTEST_OPEN +#define URANDOM_READ "open.c", 41, FAILTEST_READ bool exit_check_log(struct failtest_call *history, unsigned num); bool failmatch(const struct failtest_call *call, diff --git a/ccan/tdb2/test/run-90-get-set-attributes.c b/ccan/tdb2/test/run-90-get-set-attributes.c index 6cb889f4..e2cde96a 100644 --- a/ccan/tdb2/test/run-90-get-set-attributes.c +++ b/ccan/tdb2/test/run-90-get-set-attributes.c @@ -61,7 +61,7 @@ int main(int argc, char *argv[]) attr.base.attr = TDB_ATTRIBUTE_HASH; ok1(tdb_get_attribute(tdb, &attr) == 0); ok1(attr.base.attr == TDB_ATTRIBUTE_HASH); - ok1(attr.hash.fn == jenkins_hash); + ok1(attr.hash.fn == tdb_jenkins_hash); attr.base.attr = TDB_ATTRIBUTE_FLOCK; ok1(tdb_get_attribute(tdb, &attr) == 0); ok1(attr.base.attr == TDB_ATTRIBUTE_FLOCK);