[lttng-dev] [PATCH urcu] Cleanup: compiler warning on 32-bit architectures
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Mon Dec 17 15:26:35 EST 2018
Merged into master branch, thanks!
Mathieu
----- On Dec 17, 2018, at 3:23 PM, Michael Jeanson mjeanson at 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 <mjeanson at efficios.com>
> ---
> 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
More information about the lttng-dev
mailing list