Fix: Use pthread_self to get threadid on OSX
[urcu.git] / rculfhash-mm-mmap.c
index dba4524de7d3c42814342258e34b266df2b3dcd6..3cc3fa01c9d5ed5c16888ae8f02fb85ae65cf1de 100644 (file)
 #include <sys/mman.h>
 #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 = {
This page took 0.023062 seconds and 4 git commands to generate.