Re: [PATCH RFC rdma-core 1/3] util: Add common code for provider debug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 18, 2017 at 07:31:30AM +0200, Leon Romanovsky wrote:
> > +#define PRINT_ERR(fmt, ...)								\
> > +do {											\
> > +	fprintf(stderr, "[%s:%d]" fmt, __func__, __LINE__, ##__VA_ARGS__);		\
> > +} while (0)
> > +
> > +#define PRINT_DBG(dbg_mask, dbg_level, fmt, ...)					\
> > +do {											\
> > +	if ((rdma_dbg_mask & dbg_mask) && (rdma_dbg_level >= dbg_level))		\
> > +		fprintf(stderr, "[%s:%d]" fmt, __func__, __LINE__, ##__VA_ARGS__);	\
> > +} while (0)
> > +
> > +#define LOG_DBG(dbg_fp, dbg_mask, dbg_level, fmt, ...)					\
> > +do {											\
> > +	if ((rdma_dbg_mask & dbg_mask) && (rdma_dbg_level >= dbg_level))		\
> > +		fprintf(dbg_fp, "[%s:%d]" fmt, __func__, __LINE__, ##__VA_ARGS__);	\
> > +} while (0)
> > +
> > +#define LOG_DBG_FLUSH(dbg_fp, dbg_mask, dbg_level, fmt, ...)				\
> > +do {											\
> > +		LOG_DBG(dbg_fp, dbg_mask, dbg_level, fmt, ##__VA_ARGS__);		\
> > +		if (dbg_fp != stderr)							\
> > +			fflush(dbg_fp);							\
> > +} while (0)
> 
> IMHO, these macros should be inline functions, and better to avoid global variables.

It is more expensive at the call site to inline something that calls
via va_args than via ..., so these should remain as macros.

When doing this people generally like the 'if' test to be outside, for
performance.

I'm still not sure about these.. Why do we need print & log? I think
there should only be one. Providers should not print to stderr unless
the user asks for debugging.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux