aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/printk.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2013-04-29 19:17:18 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-29 21:28:13 -0400
commitd0380e6c3c0f6edb986d8798a23acfaf33d5df23 (patch)
tree454ea23060995d2e1326962cedfd6e86a335629d /kernel/printk.c
parent07c65f4d1aa74f7cf1c46d7f96e05cfa3e628ba1 (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.c30
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 */
55void 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
1720struct console *early_console;
1721
1722void 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
1732asmlinkage 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
1726static int __add_preferred_console(char *name, int idx, char *options, 1742static int __add_preferred_console(char *name, int idx, char *options,
1727 char *brl_options) 1743 char *brl_options)
1728{ 1744{