[PATCH v4 1/6] eal: introduce RTE_MIN_T() and RTE_MAX_T() macros

Tyler Retzlaff roretzla at linux.microsoft.com
Fri Jan 19 21:58:47 CET 2024


On Wed, Jan 17, 2024 at 10:19:55AM -0800, Stephen Hemminger wrote:
> These macros work like RTE_MIN and RTE_MAX but take an explicit
> type. Necessary when being used in static assertions since
> RTE_MIN and RTE_MAX use temporary variables which confuses
> compilers constant expression checks. These macros could also
> be useful in other scenarios when bounded range is useful.
> 
> Naming is chosen to be similar to Linux kernel conventions.

parameter ordering seems weird, also Linux kernel copied? just curious
more than anything. if not i would put 't' as the first parameter.

Acked-by: Tyler Retzlaff <roretzla at linux.microsoft.com>

> 
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>  lib/eal/include/rte_common.h | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
> index c1ba32d00e47..33680e818bfb 100644
> --- a/lib/eal/include/rte_common.h
> +++ b/lib/eal/include/rte_common.h
> @@ -585,6 +585,14 @@ __extension__ typedef uint64_t RTE_MARKER64[0];
>  		_a < _b ? _a : _b; \
>  	})
>  
> +/**
> + * Macro to return the minimum of two numbers
> + * does not use temporarys so not safe if a or b is expression
> + * but is guaranteed to be constant for use in static_assert()
> + */
> +#define RTE_MIN_T(a, b, t) \
> +	((t)(a) < (t)(b) ? (t)(a) : (t)(b))
> +
>  /**
>   * Macro to return the maximum of two numbers
>   */
> @@ -595,6 +603,14 @@ __extension__ typedef uint64_t RTE_MARKER64[0];
>  		_a > _b ? _a : _b; \
>  	})
>  
> +/**
> + * Macro to return the maxiimum of two numbers
> + * does not use temporarys so not safe if a or b is expression
> + * but is guaranteed to be constant for use in static_assert()
> + */
> +#define RTE_MAX_T(a, b, t) \
> +	((t)(a) > (t)(b) ? (t)(a) : (t)(b))
> +
>  /*********** Other general functions / macros ********/
>  
>  #ifndef offsetof
> -- 
> 2.43.0


More information about the dev mailing list