[lttng-dev] [PATCH urcu] Cleanup: compiler warning on 32-bit architectures

2018-12-17 Thread Michael Jeanson
Replace a runtime test for 64-bit arch by a preprocessor test to
fix this compiler warning on 32-bit archs :

  comparison is always true due to limited range of data type [-Wtype-limits]

Signed-off-by: Michael Jeanson 
---
 src/rculfhash.c | 45 +++--
 1 file changed, 27 insertions(+), 18 deletions(-)

diff --git a/src/rculfhash.c b/src/rculfhash.c
index 8942c80..d250a1d 100644
--- a/src/rculfhash.c
+++ b/src/rculfhash.c
@@ -1543,6 +1543,32 @@ void cds_lfht_create_bucket(struct cds_lfht *ht, 
unsigned long size)
}
 }
 
+#if (CAA_BITS_PER_LONG > 32)
+/*
+ * For 64-bit architectures, with max number of buckets small enough not to
+ * use the entire 64-bit memory mapping space (and allowing a fair number of
+ * hash table instances), use the mmap allocator, which is faster. Otherwise,
+ * fallback to the order allocator.
+ */
+static
+const struct cds_lfht_mm_type *get_mm_type(unsigned long max_nr_buckets)
+{
+   if (max_nr_buckets && max_nr_buckets <= (1ULL << 32))
+   return &cds_lfht_mm_mmap;
+   else
+   return &cds_lfht_mm_order;
+}
+#else
+/*
+ * For 32-bit architectures, use the order allocator.
+ */
+static
+const struct cds_lfht_mm_type *get_mm_type(unsigned long max_nr_buckets)
+{
+   return &cds_lfht_mm_order;
+}
+#endif
+
 struct cds_lfht *_cds_lfht_new(unsigned long init_size,
unsigned long min_nr_alloc_buckets,
unsigned long max_nr_buckets,
@@ -1566,24 +1592,7 @@ struct cds_lfht *_cds_lfht_new(unsigned long init_size,
 * Memory management plugin default.
 */
if (!mm) {
-   if (CAA_BITS_PER_LONG > 32
-   && max_nr_buckets
-   && max_nr_buckets <= (1ULL << 32)) {
-   /*
-* For 64-bit architectures, with max number of
-* buckets small enough not to use the entire
-* 64-bit memory mapping space (and allowing a
-* fair number of hash table instances), use the
-* mmap allocator, which is faster than the
-* order allocator.
-*/
-   mm = &cds_lfht_mm_mmap;
-   } else {
-   /*
-* The fallback is to use the order allocator.
-*/
-   mm = &cds_lfht_mm_order;
-   }
+   mm = get_mm_type(max_nr_buckets);
}
 
/* max_nr_buckets == 0 for order based mm means infinite */
-- 
2.17.1

___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


Re: [lttng-dev] [PATCH urcu] Cleanup: compiler warning on 32-bit architectures

2018-12-17 Thread Mathieu Desnoyers
Merged into master branch, thanks!

Mathieu

- On Dec 17, 2018, at 3:23 PM, Michael Jeanson mjean...@efficios.com wrote:

> Replace a runtime test for 64-bit arch by a preprocessor test to
> fix this compiler warning on 32-bit archs :
> 
>  comparison is always true due to limited range of data type [-Wtype-limits]
> 
> Signed-off-by: Michael Jeanson 
> ---
> src/rculfhash.c | 45 +++--
> 1 file changed, 27 insertions(+), 18 deletions(-)
> 
> diff --git a/src/rculfhash.c b/src/rculfhash.c
> index 8942c80..d250a1d 100644
> --- a/src/rculfhash.c
> +++ b/src/rculfhash.c
> @@ -1543,6 +1543,32 @@ void cds_lfht_create_bucket(struct cds_lfht *ht, 
> unsigned
> long size)
>   }
> }
> 
> +#if (CAA_BITS_PER_LONG > 32)
> +/*
> + * For 64-bit architectures, with max number of buckets small enough not to
> + * use the entire 64-bit memory mapping space (and allowing a fair number of
> + * hash table instances), use the mmap allocator, which is faster. Otherwise,
> + * fallback to the order allocator.
> + */
> +static
> +const struct cds_lfht_mm_type *get_mm_type(unsigned long max_nr_buckets)
> +{
> + if (max_nr_buckets && max_nr_buckets <= (1ULL << 32))
> + return &cds_lfht_mm_mmap;
> + else
> + return &cds_lfht_mm_order;
> +}
> +#else
> +/*
> + * For 32-bit architectures, use the order allocator.
> + */
> +static
> +const struct cds_lfht_mm_type *get_mm_type(unsigned long max_nr_buckets)
> +{
> + return &cds_lfht_mm_order;
> +}
> +#endif
> +
> struct cds_lfht *_cds_lfht_new(unsigned long init_size,
>   unsigned long min_nr_alloc_buckets,
>   unsigned long max_nr_buckets,
> @@ -1566,24 +1592,7 @@ struct cds_lfht *_cds_lfht_new(unsigned long init_size,
>* Memory management plugin default.
>*/
>   if (!mm) {
> - if (CAA_BITS_PER_LONG > 32
> - && max_nr_buckets
> - && max_nr_buckets <= (1ULL << 32)) {
> - /*
> -  * For 64-bit architectures, with max number of
> -  * buckets small enough not to use the entire
> -  * 64-bit memory mapping space (and allowing a
> -  * fair number of hash table instances), use the
> -  * mmap allocator, which is faster than the
> -  * order allocator.
> -  */
> - mm = &cds_lfht_mm_mmap;
> - } else {
> - /*
> -  * The fallback is to use the order allocator.
> -  */
> - mm = &cds_lfht_mm_order;
> - }
> + mm = get_mm_type(max_nr_buckets);
>   }
> 
>   /* max_nr_buckets == 0 for order based mm means infinite */
> --
> 2.17.1

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
___
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev