X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=src%2Frculfhash-mm-mmap.c;h=4bce972094881bf3d8dc031be87241cd933b18c4;hp=a8fadf0696de5e743fe56c4190cc0e4d8e1578b1;hb=014775106c60f02818ca755b331f887030bd440f;hpb=142af0ff11d9b4445a6229ccd22cd8fb4b38a798 diff --git a/src/rculfhash-mm-mmap.c b/src/rculfhash-mm-mmap.c index a8fadf0..4bce972 100644 --- a/src/rculfhash-mm-mmap.c +++ b/src/rculfhash-mm-mmap.c @@ -21,7 +21,11 @@ */ #include +#include +#include +#include #include +#include #include "rculfhash-internal.h" #ifndef MAP_ANONYMOUS @@ -53,21 +57,23 @@ static void *memory_map(size_t length) { - void *ret = mmap(NULL, length, PROT_NONE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + void *ret; - assert(ret != MAP_FAILED); + ret = mmap(NULL, length, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (ret == MAP_FAILED) { + perror("mmap"); + abort(); + } return ret; } static void memory_unmap(void *ptr, size_t length) { - int ret __attribute__((unused)); - - ret = munmap(ptr, length); - - assert(ret == 0); + if (munmap(ptr, length)) { + perror("munmap"); + abort(); + } } #ifdef __CYGWIN__ @@ -75,22 +81,20 @@ void memory_unmap(void *ptr, size_t length) static void memory_populate(void *ptr, size_t length) { - int ret __attribute__((unused)); - - ret = mprotect(ptr, length, PROT_READ | PROT_WRITE); - - assert(!ret); + if (mprotect(ptr, length, PROT_READ | PROT_WRITE)) { + perror("mprotect"); + abort(); + } } /* Set protection to none to deallocate a memory chunk */ static void memory_discard(void *ptr, size_t length) { - int ret __attribute__((unused)); - - ret = mprotect(ptr, length, PROT_NONE); - - assert(!ret); + if (mprotect(ptr, length, PROT_NONE)) { + perror("mprotect"); + abort(); + } } #else /* __CYGWIN__ */ @@ -98,12 +102,12 @@ void memory_discard(void *ptr, size_t length) static void memory_populate(void *ptr, size_t length) { - void *ret __attribute__((unused)); - - ret = mmap(ptr, length, PROT_READ | PROT_WRITE, - MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - - assert(ret == ptr); + if (mmap(ptr, length, PROT_READ | PROT_WRITE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0) != ptr) { + perror("mmap"); + abort(); + } } /* @@ -113,12 +117,12 @@ void memory_populate(void *ptr, size_t length) static void memory_discard(void *ptr, size_t length) { - void *ret __attribute__((unused)); - - ret = mmap(ptr, length, PROT_NONE, - MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - - assert(ret == ptr); + if (mmap(ptr, length, PROT_NONE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0) != ptr) { + perror("mmap"); + abort(); + } } #endif /* __CYGWIN__ */ @@ -130,7 +134,7 @@ void cds_lfht_alloc_bucket_table(struct cds_lfht *ht, unsigned long order) /* small table */ ht->tbl_mmap = calloc(ht->max_nr_buckets, sizeof(*ht->tbl_mmap)); - assert(ht->tbl_mmap); + urcu_posix_assert(ht->tbl_mmap); return; } /* large table */ @@ -142,7 +146,7 @@ void cds_lfht_alloc_bucket_table(struct cds_lfht *ht, unsigned long order) /* large table */ unsigned long len = 1UL << (order - 1); - assert(ht->min_nr_alloc_buckets < ht->max_nr_buckets); + urcu_posix_assert(ht->min_nr_alloc_buckets < ht->max_nr_buckets); memory_populate(ht->tbl_mmap + len, len * sizeof(*ht->tbl_mmap)); } @@ -170,7 +174,7 @@ void cds_lfht_free_bucket_table(struct cds_lfht *ht, unsigned long order) /* large table */ unsigned long len = 1UL << (order - 1); - assert(ht->min_nr_alloc_buckets < ht->max_nr_buckets); + urcu_posix_assert(ht->min_nr_alloc_buckets < ht->max_nr_buckets); memory_discard(ht->tbl_mmap + len, len * sizeof(*ht->tbl_mmap)); } /* Nothing to do for 0 < order && order <= ht->min_alloc_buckets_order */