#ifndef _URCU_HT_H
#define _URCU_HT_H
-#define HASH_SIZE 4096
-typedef unsigned long (*ht_hash_fct)(void *key);
+#include <stdint.h>
-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);
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 */