diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/printk.h | 59 |
1 files changed, 44 insertions, 15 deletions
diff --git a/include/linux/printk.h b/include/linux/printk.h index 4788c2887e65..6442156707c9 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -112,18 +112,6 @@ extern int printk_delay_msec; extern int dmesg_restrict; extern int kptr_restrict; -/* - * Print a one-time message (analogous to WARN_ONCE() et al): - */ -#define printk_once(x...) ({ \ - static bool __print_once; \ - \ - if (!__print_once) { \ - __print_once = true; \ - printk(x); \ - } \ -}) - void log_buf_kexec_setup(void); #else static inline __attribute__ ((format (printf, 1, 0))) @@ -146,9 +134,6 @@ static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, return false; } -/* No effect, but we still get type checking even in the !PRINTK case: */ -#define printk_once(fmt, ...) no_printk(fmt, ##__VA_ARGS__) - static inline void log_buf_kexec_setup(void) { } @@ -215,6 +200,50 @@ extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, #endif /* + * Print a one-time message (analogous to WARN_ONCE() et al): + */ + +#ifdef CONFIG_PRINTK +#define printk_once(fmt, ...) \ +({ \ + static bool __print_once; \ + \ + if (!__print_once) { \ + __print_once = true; \ + printk(fmt, ##__VA_ARGS__); \ + } \ +}) +#else +#define printk_once(fmt, ...) \ + no_printk(fmt, ##__VA_ARGS__) +#endif + +#define pr_emerg_once(fmt, ...) \ + printk_once(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__) +#define pr_alert_once(fmt, ...) \ + printk_once(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) +#define pr_crit_once(fmt, ...) \ + printk_once(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__) +#define pr_err_once(fmt, ...) \ + printk_once(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) +#define pr_warn_once(fmt, ...) \ + printk_once(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) +#define pr_notice_once(fmt, ...) \ + printk_once(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__) +#define pr_info_once(fmt, ...) \ + printk_once(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) +#define pr_cont_once(fmt, ...) \ + printk_once(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__) +/* If you are writing a driver, please use dev_dbg instead */ +#if defined(DEBUG) +#define pr_debug_once(fmt, ...) \ + printk_once(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) +#else +#define pr_debug_once(fmt, ...) \ + no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) +#endif + +/* * ratelimited messages with local ratelimit_state, * no local ratelimit_state used in the !PRINTK case */ |