diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2013-04-29 19:17:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 21:28:13 -0400 |
commit | d0380e6c3c0f6edb986d8798a23acfaf33d5df23 (patch) | |
tree | 454ea23060995d2e1326962cedfd6e86a335629d /kernel/printk.c | |
parent | 07c65f4d1aa74f7cf1c46d7f96e05cfa3e628ba1 (diff) |
early_printk: consolidate random copies of identical code
The early console implementations are the same all over the place. Move
the print function to kernel/printk and get rid of the copies.
[akpm@linux-foundation.org: arch/mips/kernel/early_printk.c needs kernel.h for va_list]
[paul.gortmaker@windriver.com: sh4: make the bios early console support depend on EARLY_PRINTK]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Richard Weinberger <richard@nod.at>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/printk.c')
-rw-r--r-- | kernel/printk.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 2de593df036b..1c8ca176458f 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -49,13 +49,6 @@ | |||
49 | #define CREATE_TRACE_POINTS | 49 | #define CREATE_TRACE_POINTS |
50 | #include <trace/events/printk.h> | 50 | #include <trace/events/printk.h> |
51 | 51 | ||
52 | /* | ||
53 | * Architectures can override it: | ||
54 | */ | ||
55 | void asmlinkage __attribute__((weak)) early_printk(const char *fmt, ...) | ||
56 | { | ||
57 | } | ||
58 | |||
59 | /* printk's without a loglevel use this.. */ | 52 | /* printk's without a loglevel use this.. */ |
60 | #define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL | 53 | #define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL |
61 | 54 | ||
@@ -1723,6 +1716,29 @@ static size_t cont_print_text(char *text, size_t size) { return 0; } | |||
1723 | 1716 | ||
1724 | #endif /* CONFIG_PRINTK */ | 1717 | #endif /* CONFIG_PRINTK */ |
1725 | 1718 | ||
1719 | #ifdef CONFIG_EARLY_PRINTK | ||
1720 | struct console *early_console; | ||
1721 | |||
1722 | void early_vprintk(const char *fmt, va_list ap) | ||
1723 | { | ||
1724 | if (early_console) { | ||
1725 | char buf[512]; | ||
1726 | int n = vscnprintf(buf, sizeof(buf), fmt, ap); | ||
1727 | |||
1728 | early_console->write(early_console, buf, n); | ||
1729 | } | ||
1730 | } | ||
1731 | |||
1732 | asmlinkage void early_printk(const char *fmt, ...) | ||
1733 | { | ||
1734 | va_list ap; | ||
1735 | |||
1736 | va_start(ap, fmt); | ||
1737 | early_vprintk(fmt, ap); | ||
1738 | va_end(ap); | ||
1739 | } | ||
1740 | #endif | ||
1741 | |||
1726 | static int __add_preferred_console(char *name, int idx, char *options, | 1742 | static int __add_preferred_console(char *name, int idx, char *options, |
1727 | char *brl_options) | 1743 | char *brl_options) |
1728 | { | 1744 | { |