[PATCH v3 06/11] eal: typedef cpu flag enum as int for msvc

Konstantin Ananyev konstantin.v.ananyev at yandex.ru
Mon Apr 10 21:59:33 CEST 2023


06/04/2023 01:45, Tyler Retzlaff пишет:
> Forward declaration of a typedef is a non-standard extension and is not
> supported by msvc. Use an int instead.
> 
> Abstract the use of the int/enum rte_cpu_flag_t in function parameter
> lists by re-typdefing the enum rte_cpu_flag_t to the rte_cpu_flag_t
> identifier.
> 
> Remove the use of __extension__ on function prototypes where
> rte_cpu_flag_t appeared in parameter lists, it is sufficient to have the
> conditionally compiled __extension__ at the non-standard forward
> declaration site.
> 
> Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
> ---
>   lib/eal/include/generic/rte_cpuflags.h | 12 +++++++-----
>   1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/eal/include/generic/rte_cpuflags.h b/lib/eal/include/generic/rte_cpuflags.h
> index d35551e..87ab03c 100644
> --- a/lib/eal/include/generic/rte_cpuflags.h
> +++ b/lib/eal/include/generic/rte_cpuflags.h
> @@ -44,8 +44,12 @@ struct rte_cpu_intrinsics {
>   /**
>    * Enumeration of all CPU features supported
>    */
> +#ifndef RTE_TOOLCHAIN_MSVC
>   __extension__
> -enum rte_cpu_flag_t;
> +typedef enum rte_cpu_flag_t rte_cpu_flag_t;
> +#else
> +typedef int rte_cpu_flag_t;
> +#endif


Just curious what exactly MSVC doesn't support here?
Is that construction like:
enum rte_cpu_flag_t {....};
enum rte_cpu_flag_t;
...
Or something else?


>   /**
>    * Get name of CPU flag
> @@ -56,9 +60,8 @@ struct rte_cpu_intrinsics {
>    *     flag name
>    *     NULL if flag ID is invalid
>    */
> -__extension__
>   const char *
> -rte_cpu_get_flag_name(enum rte_cpu_flag_t feature);
> +rte_cpu_get_flag_name(rte_cpu_flag_t feature);
>   
>   /**
>    * Function for checking a CPU flag availability
> @@ -70,9 +73,8 @@ struct rte_cpu_intrinsics {
>    *     0 if flag is not available
>    *     -ENOENT if flag is invalid
>    */
> -__extension__
>   int
> -rte_cpu_get_flag_enabled(enum rte_cpu_flag_t feature);
> +rte_cpu_get_flag_enabled(rte_cpu_flag_t feature);
>   
>   /**
>    * This function checks that the currently used CPU supports the CPU features



More information about the dev mailing list