diff options
Diffstat (limited to 'include/linux/printk.h')
| -rw-r--r-- | include/linux/printk.h | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/printk.h b/include/linux/printk.h index e6131a782481..694925837a16 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -233,6 +233,8 @@ extern asmlinkage void dump_stack(void) __cold;  	no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)  #endif +#include <linux/dynamic_debug.h> +  /* If you are writing a driver, please use dev_dbg instead */  #if defined(CONFIG_DYNAMIC_DEBUG)  /* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */ @@ -343,7 +345,19 @@ extern asmlinkage void dump_stack(void) __cold;  #endif  /* If you are writing a driver, please use dev_dbg instead */ -#if defined(DEBUG) +#if defined(CONFIG_DYNAMIC_DEBUG) +/* descriptor check is first to prevent flooding with "callbacks suppressed" */ +#define pr_debug_ratelimited(fmt, ...)					\ +do {									\ +	static DEFINE_RATELIMIT_STATE(_rs,				\ +				      DEFAULT_RATELIMIT_INTERVAL,	\ +				      DEFAULT_RATELIMIT_BURST);		\ +	DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);			\ +	if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) &&	\ +	    __ratelimit(&_rs))						\ +		__dynamic_pr_debug(&descriptor, fmt, ##__VA_ARGS__);	\ +} while (0) +#elif defined(DEBUG)  #define pr_debug_ratelimited(fmt, ...)					\  	printk_ratelimited(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)  #else  | 
