[dpdk-dev] [PATCH v4 25/27] eal: mark old naming as deprecated

Stephen Hemminger stephen at networkplumber.org
Wed Jul 22 15:53:14 CEST 2020


On Wed, 22 Jul 2020 10:05:09 +0100
"Burakov, Anatoly" <anatoly.burakov at intel.com> wrote:

> On 20-Jul-20 7:51 PM, Stephen Hemminger wrote:
> > On Mon, 20 Jul 2020 13:32:27 +0100
> > "Burakov, Anatoly" <anatoly.burakov at intel.com> wrote:
> >   
> >> On 18-Jul-20 3:22 AM, Stephen Hemminger wrote:  
> >>> On Fri, 17 Jul 2020 16:21:37 +0100
> >>> "Burakov, Anatoly" <anatoly.burakov at intel.com> wrote:
> >>>      
> >>>> On 16-Jul-20 11:04 PM, Stephen Hemminger wrote:  
> >>>>> On Thu, 16 Jul 2020 14:41:41 +0100
> >>>>> "Burakov, Anatoly" <anatoly.burakov at intel.com> wrote:
> >>>>>         
> >>>>>> On 15-Jul-20 9:29 PM, Stephen Hemminger wrote:  
> >>>>>>> On Wed, 15 Jul 2020 14:28:17 +0100
> >>>>>>> "Burakov, Anatoly" <anatoly.burakov at intel.com> wrote:
> >>>>>>>            
> >>>>>>>>> -#define SKIP_MASTER	SKIP_INITIAL
> >>>>>>>>> -#define CALL_MASTER	CALL_INITIAL
> >>>>>>>>> +#define SKIP_MASTER _Pragma("GCC warning \"'SKIP_MASTER' is deprecated\"") SKIP_INITIAL
> >>>>>>>>> +#define CALL_MASTER _Pragma("GCC warning \"'CALL_MASTER' is deprecated\"") CALL_INITIAL  
> >>>>>>>>
> >>>>>>>> Presumably this is a generic header, should we introduce GCC-specific
> >>>>>>>> things there?  
> >>>>>>>
> >>>>>>> It works with Clang as well. Likely ICC but don't have that.
> >>>>>>>            
> >>>>>>
> >>>>>> What about MSVC?
> >>>>>>        
> >>>>>
> >>>>> _Pragma is C99 standard so MSVC know it.
> >>>>> MSVC should ignore any pragman it doesn't understand.
> >>>>>
> >>>>> There is a better pragma for deprecating keywords in MSVC, but GCC and Clang don't
> >>>>> understand it.
> >>>>>         
> >>>>
> >>>> Deprecating macros sounds like something we might want to do in the
> >>>> future, can't we put some macro into rte_common.h to address this? e.g.
> >>>> something like
> >>>>
> >>>> #ifdef MSVC
> >>>> #define rte_deprecated_macro _msvc_pragma_whatever()
> >>>> #else
> >>>> #define rte_deprecated_macro _Pragma("GCC warning ...")
> >>>> #endif
> >>>>
> >>>> and use this macro here?  
> >>>
> >>> It gets hard to do macro in a macro,
> >>>      
> >>
> >> I don't have a strong opinion on this, but IMO it's certainly better
> >> than having a compiler-specific things in an API header file :)
> >>  
> > 
> > I was hoping for macro volunteer?
> > 
> > Something like:
> > #define RTE_DEPRECATED(foo) ...
> >   
> 
> Oh, sure, apologies for not picking up on that :D
> 
> A bit on the ugly side, but should work:
> 
> #define __rte_deprecated_macro(val) (_Pragma("GCC warning \"'" #val "'\" 
> is deprecated\"") (val))
> 
> To be used as:
> 
> #define NEW __rte_deprecated_macro(OLD)
> 
> (I feel there could be confusion between __rte_deprecated and 
> RTE_DEPRECATED, so both for consistency and clarity, i believe 
> "__rte_deprecated_macro" would be a better name - however, no strong 
> opinion, RTE_DEPRECATED is fine by me as well)
> 

I would prefer to keep to uppercase for macros. Will try it in V2


More information about the dev mailing list