+static int populate_hash(void)
+{
+ struct cds_lfht_node *node, *ret_node;
+
+ if (!init_populate)
+ return 0;
+
+ if (add_unique && init_populate * 10 > rand_pool) {
+ printf("WARNING: required to populate %lu nodes (-k), but random "
+"pool is quite small (%lu values) and we are in add_unique (-u) mode. Try with a "
+"larger random pool (-p option).\n", init_populate, rand_pool);
+ return -1;
+ }
+
+ while (nr_add < init_populate) {
+ node = malloc(sizeof(struct cds_lfht_node));
+ cds_lfht_node_init(node,
+ (void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
+ sizeof(void *));
+ if (add_unique)
+ ret_node = cds_lfht_add_unique(test_ht, node);
+ else
+ cds_lfht_add(test_ht, node);
+ if (add_unique && ret_node != node) {
+ free(node);
+ nr_addexist++;
+ } else
+ nr_add++;
+ nr_writes++;
+ }
+ return 0;
+}
+