X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-ht.h;h=58a2cedc8e887337f173cc17b607236bc457a05f;hp=0cbd1e648799171be694865895e0d712fa29721d;hb=674f7a6983f888438c36f8fba179db1a5349d3e9;hpb=bb698e267fb01c1ed4073d83cfa8d935539ef52d diff --git a/urcu-ht.h b/urcu-ht.h index 0cbd1e6..58a2ced 100644 --- a/urcu-ht.h +++ b/urcu-ht.h @@ -1,10 +1,15 @@ #ifndef _URCU_HT_H #define _URCU_HT_H -#define HASH_SIZE 4096 -typedef unsigned long (*ht_hash_fct)(void *key); +#include -struct rcu_ht *ht_new(ht_hash_fct hash_fct, void (*free_fct)(void *data)); +typedef uint32_t (*ht_hash_fct)(void *key); + +/* + * init_size must be power of two. + */ +struct rcu_ht *ht_new(ht_hash_fct hash_fct, void (*free_fct)(void *data), + unsigned long init_size); void ht_delete_all(struct rcu_ht *ht); @@ -18,6 +23,6 @@ int ht_delete(struct rcu_ht *ht, void *key); void *ht_steal(struct rcu_ht *ht, void *key); -unsigned long stupid_hash(void *key); +uint32_t ht_jhash(void *key, u32 length, u32 initval); #endif /* _URCU_HT_H */