#include <urcu-call-rcu.h>
struct rcu_ht_node {
+ /* cache-hot for iteration */
struct rcu_ht_node *next;
- void *key;
- size_t key_len;
- unsigned long hash;
unsigned long reverse_hash;
+ void *key;
+ unsigned int key_len;
unsigned int dummy;
+ /* cache-cold for iteration */
+ unsigned long hash;
struct rcu_head head;
};
void (*func)(struct rcu_head *head)));
int ht_destroy(struct rcu_ht *ht);
+/* Count the number of nodes in the hash table. Call with rcu_read_lock held. */
+void ht_count_nodes(struct rcu_ht *ht,
+ unsigned long *count,
+ unsigned long *removed);
/* Call with rcu_read_lock held. */
struct rcu_ht_node *ht_lookup(struct rcu_ht *ht, void *key, size_t key_len);