printk: Make the printk*once() variants return a value
Have printk*once() return a bool which denotes whether the string was printed or not so that calling code can react accordingly. Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1467671487-10344-3-git-send-email-bp@alien8.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
ef16dd0c2a
commit
069f0cd00d
|
@ -108,11 +108,14 @@ struct va_format {
|
||||||
* Dummy printk for disabled debugging statements to use whilst maintaining
|
* Dummy printk for disabled debugging statements to use whilst maintaining
|
||||||
* gcc's format checking.
|
* gcc's format checking.
|
||||||
*/
|
*/
|
||||||
#define no_printk(fmt, ...) \
|
#define no_printk(fmt, ...) \
|
||||||
do { \
|
({ \
|
||||||
if (0) \
|
do { \
|
||||||
printk(fmt, ##__VA_ARGS__); \
|
if (0) \
|
||||||
} while (0)
|
printk(fmt, ##__VA_ARGS__); \
|
||||||
|
} while (0); \
|
||||||
|
0; \
|
||||||
|
})
|
||||||
|
|
||||||
#ifdef CONFIG_EARLY_PRINTK
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
extern asmlinkage __printf(1, 2)
|
extern asmlinkage __printf(1, 2)
|
||||||
|
@ -309,20 +312,24 @@ extern asmlinkage void dump_stack(void) __cold;
|
||||||
#define printk_once(fmt, ...) \
|
#define printk_once(fmt, ...) \
|
||||||
({ \
|
({ \
|
||||||
static bool __print_once __read_mostly; \
|
static bool __print_once __read_mostly; \
|
||||||
|
bool __ret_print_once = !__print_once; \
|
||||||
\
|
\
|
||||||
if (!__print_once) { \
|
if (!__print_once) { \
|
||||||
__print_once = true; \
|
__print_once = true; \
|
||||||
printk(fmt, ##__VA_ARGS__); \
|
printk(fmt, ##__VA_ARGS__); \
|
||||||
} \
|
} \
|
||||||
|
unlikely(__ret_print_once); \
|
||||||
})
|
})
|
||||||
#define printk_deferred_once(fmt, ...) \
|
#define printk_deferred_once(fmt, ...) \
|
||||||
({ \
|
({ \
|
||||||
static bool __print_once __read_mostly; \
|
static bool __print_once __read_mostly; \
|
||||||
|
bool __ret_print_once = !__print_once; \
|
||||||
\
|
\
|
||||||
if (!__print_once) { \
|
if (!__print_once) { \
|
||||||
__print_once = true; \
|
__print_once = true; \
|
||||||
printk_deferred(fmt, ##__VA_ARGS__); \
|
printk_deferred(fmt, ##__VA_ARGS__); \
|
||||||
} \
|
} \
|
||||||
|
unlikely(__ret_print_once); \
|
||||||
})
|
})
|
||||||
#else
|
#else
|
||||||
#define printk_once(fmt, ...) \
|
#define printk_once(fmt, ...) \
|
||||||
|
|
Loading…
Reference in New Issue