X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=rculfhash-mm-mmap.c;h=3cc3fa01c9d5ed5c16888ae8f02fb85ae65cf1de;hp=dba4524de7d3c42814342258e34b266df2b3dcd6;hb=b83b3590caf8ddd0fb1393b0d8378f916c8bf831;hpb=ae843a6421259c05d3c9f7d70cd0dd098c1b4f55 diff --git a/rculfhash-mm-mmap.c b/rculfhash-mm-mmap.c index dba4524..3cc3fa0 100644 --- a/rculfhash-mm-mmap.c +++ b/rculfhash-mm-mmap.c @@ -24,6 +24,10 @@ #include #include "rculfhash-internal.h" +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif + /* reserve inaccessible memory space without allocation any memory */ static void *memory_map(size_t length) { @@ -131,9 +135,9 @@ static struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets, unsigned long max_nr_buckets) { - struct cds_lfht *ht; - unsigned long page_bucket_size = getpagesize() / sizeof(*ht->tbl_mmap); + unsigned long page_bucket_size; + page_bucket_size = getpagesize() / sizeof(struct cds_lfht_node); if (max_nr_buckets <= page_bucket_size) { /* small table */ min_nr_alloc_buckets = max_nr_buckets; @@ -143,18 +147,9 @@ struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets, page_bucket_size); } - ht = calloc(1, sizeof(struct cds_lfht)); - assert(ht); - - ht->bucket_at = bucket_at; - ht->mm = &cds_lfht_mm_mmap; - ht->min_nr_alloc_buckets = min_nr_alloc_buckets; - ht->min_alloc_buckets_order = - get_count_order_ulong(min_nr_alloc_buckets); - ht->max_nr_buckets = max_nr_buckets; - - - return ht; + return __default_alloc_cds_lfht( + &cds_lfht_mm_mmap, sizeof(struct cds_lfht), + min_nr_alloc_buckets, max_nr_buckets); } const struct cds_lfht_mm_type cds_lfht_mm_mmap = {