diff --git a/include/re_hash.h b/include/re_hash.h index f4c1209..60494ad 100644 --- a/include/re_hash.h +++ b/include/re_hash.h @@ -18,6 +18,7 @@ struct le *hash_apply(const struct hash *h, list_apply_h *ah, void *arg); struct list *hash_list(const struct hash *h, uint32_t key); uint32_t hash_bsize(const struct hash *h); void hash_flush(struct hash *h); +uint32_t hash_valid_size(uint32_t size); /* Hash functions */ diff --git a/src/hash/hash.c b/src/hash/hash.c index 15e7797..e07a87f 100644 --- a/src/hash/hash.c +++ b/src/hash/hash.c @@ -181,3 +181,20 @@ void hash_flush(struct hash *h) for (i=0; ibsize; i++) list_flush(&h->bucket[i]); } + + +/** + * Calculate a valid hash size from a random size + * + * @param size Requested size + * + * @return Valid hash size + */ +uint32_t hash_valid_size(uint32_t size) +{ + uint32_t x; + + for (x=0; (uint32_t)1<