[dpdk-dev] [PATCH v1 1/3] net/hyperv: introduce MS Hyper-V platform driver

Thomas Monjalon thomas at monjalon.net
Tue Dec 19 12:15:38 CET 2017


19/12/2017 11:01, Adrien Mazarguil:
> On Mon, Dec 18, 2017 at 01:17:51PM -0800, Stephen Hemminger wrote:
> > On Mon, 18 Dec 2017 20:54:16 +0100
> > Thomas Monjalon <thomas at monjalon.net> wrote:
> > 
> > > > > +#endif /* RTE_LIBRTE_HYPERV_DEBUG */
> > > > > +
> > > > > +#define DEBUG(...) PMD_DRV_LOG(DEBUG, __VA_ARGS__)
> > > > > +#define INFO(...) PMD_DRV_LOG(INFO, __VA_ARGS__)
> > > > > +#define WARN(...) PMD_DRV_LOG(WARNING, __VA_ARGS__)
> > > > > +#define ERROR(...) PMD_DRV_LOG(ERR, __VA_ARGS__)
> > > > > +  
> > > > 
> > > > Please don't use DEBUG() etc macros. It makes it easier for tools that do
> > > > global updates or scans if all drivers use the same model of PMD_DRV_LOG  
> > > 
> > > The new standard is to use dynamic logtype.
> > 
> > Agree, please use dynamic logging, and also don't redefine new macros like DEBUG/INFO/WARN/ERROR.
> > Instead use PMD_DRV_LOG or equivalent macros.
> 
> Wait, the above definitions are only convenience wrappers to PMD_DRV_LOG(),
> itself a wrapper to RTE_LOG(), itself a wrapper to rte_log(), their presence
> is not triggered according to compilation options, did I miss something?
> 
> Let me bring back some context from the original patch:
> 
>  #ifdef RTE_LIBRTE_HYPERV_DEBUG
> 
>  #define PMD_DRV_LOG(level, ...) \
>  	RTE_LOG(level, PMD, \
>  		RTE_FMT("%s:%u: %s(): " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
>  			strrchr("/" __FILE__, '/') + 1, \
>  			__LINE__, \
>  			__func__, \
>  			RTE_FMT_TAIL(__VA_ARGS__,)))
> 
>  #else /* RTE_LIBRTE_HYPERV_DEBUG */
> 
>  #define PMD_DRV_LOG(level, ...) \
>  	RTE_LOG(level, PMD, \
>  		RTE_FMT(RTE_STR(HYPERV_DRIVER) ": " \
>  			RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
>  		RTE_FMT_TAIL(__VA_ARGS__,)))
> 
>  #endif /* RTE_LIBRTE_HYPERV_DEBUG */
> 
>  #define DEBUG(...) PMD_DRV_LOG(DEBUG, __VA_ARGS__)
>  #define INFO(...) PMD_DRV_LOG(INFO, __VA_ARGS__)
>  #define WARN(...) PMD_DRV_LOG(WARNING, __VA_ARGS__)
>  #define ERROR(...) PMD_DRV_LOG(ERR, __VA_ARGS__)
> 
> Enabling RTE_LIBRTE_HYPERV_DEBUG adds file and line information to log
> output, messages are otherwise unaffected by that compilation option. Adding
> this information required some sort of wrapper to avoid needless clutter.
> 
> Nothing against outputting file/line information when compiled in debug mode
> right?

I am not sure __FILE__, __LINE__ and __func__ are so much useful.
The log message should be unique enough.

> > The base rule here is that all drivers should look the same as much
> > as reasonably possible. This makes reviewers of other subsystems more likely
> > to see problems. It also allows for later changes where some developer does a global
> > improvement across many PMD's.
> > 
> > Drivers should not be snowflakes, each one is not unique.
> 
> Point taken, do you confirm replacing i.e. WARN(...) with
> PMD_DRV_LOG(WARN, ...) and friends is all that's needed?

You need to remove the compile-time option for DEBUG,
and rely on dynamic log type, thanks to rte_log_register().


More information about the dev mailing list