Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 1 | /* |
Martin Roth | 50d887d | 2013-07-08 16:22:54 -0600 | [diff] [blame] | 2 | * blatantly copied from linux/kernel/printk.c |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 3 | * |
4 | * Copyright (C) 1991, 1992 Linus Torvalds | ||||
5 | * | ||||
6 | */ | ||||
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 7 | |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 8 | #include <smp/spinlock.h> |
Stefan Reinauer | 52fc6b12 | 2009-10-24 13:06:04 +0000 | [diff] [blame] | 9 | #include <console/vtxprintf.h> |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 10 | #include <console/console.h> |
Rudolf Marek | 7f0e930 | 2011-09-02 23:23:41 +0200 | [diff] [blame] | 11 | #include <trace.h> |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 12 | |
Stefan Reinauer | 0867062 | 2009-06-30 15:17:49 +0000 | [diff] [blame] | 13 | int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; |
Stefan Reinauer | 0867062 | 2009-06-30 15:17:49 +0000 | [diff] [blame] | 14 | int default_console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 15 | |
Myles Watson | 2e67273 | 2009-11-12 16:38:03 +0000 | [diff] [blame] | 16 | DECLARE_SPIN_LOCK(console_lock) |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 17 | |
18 | int do_printk(int msg_level, const char *fmt, ...) | ||||
19 | { | ||||
20 | va_list args; | ||||
21 | int i; | ||||
22 | |||||
Myles Watson | 0364618 | 2009-10-16 19:29:45 +0000 | [diff] [blame] | 23 | if (msg_level > console_loglevel) { |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 24 | return 0; |
25 | } | ||||
26 | |||||
Rudolf Marek | 7f0e930 | 2011-09-02 23:23:41 +0200 | [diff] [blame] | 27 | DISABLE_TRACE; |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 28 | spin_lock(&console_lock); |
29 | |||||
30 | va_start(args, fmt); | ||||
31 | i = vtxprintf(console_tx_byte, fmt, args); | ||||
32 | va_end(args); | ||||
33 | |||||
34 | console_tx_flush(); | ||||
35 | |||||
36 | spin_unlock(&console_lock); | ||||
Rudolf Marek | 7f0e930 | 2011-09-02 23:23:41 +0200 | [diff] [blame] | 37 | ENABLE_TRACE; |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 38 | |
39 | return i; | ||||
40 | } |