summaryrefslogtreecommitdiffstats
path: root/kernel/printk/nmi.c
diff options
context:
space:
mode:
authorJoe Perches <joe@perches.com>2016-08-02 23:03:53 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2016-08-03 01:35:04 +0200
commit874f9c7da9a4acbc1b9e12ca722579fb50e4d142 (patch)
treea0a327d2092edfc20c453d3f9858633a5369548a /kernel/printk/nmi.c
parentprintk: do not include interrupt.h (diff)
downloadlinux-874f9c7da9a4acbc1b9e12ca722579fb50e4d142.tar.xz
linux-874f9c7da9a4acbc1b9e12ca722579fb50e4d142.zip
printk: create pr_<level> functions
Using functions instead of macros can reduce overall code size by eliminating unnecessary "KERN_SOH<digit>" prefixes from format strings. defconfig x86-64: $ size vmlinux* text data bss dec hex filename 10193570 4331464 1105920 15630954 ee826a vmlinux.new 10192623 4335560 1105920 15634103 ee8eb7 vmlinux.old As the return value are unimportant and unused in the kernel tree, these new functions return void. Miscellanea: - change pr_<level> macros to call new __pr_<level> functions - change vprintk_nmi and vprintk_default to add LOGLEVEL_<level> argument [akpm@linux-foundation.org: fix LOGLEVEL_INFO, per Joe] Link: http://lkml.kernel.org/r/e16cc34479dfefcae37c98b481e6646f0f69efc3.1466718827.git.joe@perches.com Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/printk/nmi.c')
-rw-r--r--kernel/printk/nmi.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/kernel/printk/nmi.c b/kernel/printk/nmi.c
index b69eb8a2876f..bc3eeb1ae6da 100644
--- a/kernel/printk/nmi.c
+++ b/kernel/printk/nmi.c
@@ -58,7 +58,7 @@ static DEFINE_PER_CPU(struct nmi_seq_buf, nmi_print_seq);
* one writer running. But the buffer might get flushed from another
* CPU, so we need to be careful.
*/
-static int vprintk_nmi(const char *fmt, va_list args)
+static int vprintk_nmi(int level, const char *fmt, va_list args)
{
struct nmi_seq_buf *s = this_cpu_ptr(&nmi_print_seq);
int add = 0;
@@ -79,7 +79,16 @@ again:
if (!len)
smp_rmb();
- add = vsnprintf(s->buffer + len, sizeof(s->buffer) - len, fmt, args);
+ if (level != LOGLEVEL_DEFAULT) {
+ add = snprintf(s->buffer + len, sizeof(s->buffer) - len,
+ KERN_SOH "%c", '0' + level);
+ add += vsnprintf(s->buffer + len + add,
+ sizeof(s->buffer) - len - add,
+ fmt, args);
+ } else {
+ add = vsnprintf(s->buffer + len, sizeof(s->buffer) - len,
+ fmt, args);
+ }
/*
* Do it once again if the buffer has been flushed in the meantime.