Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 1 | /* |
| 2 | * blantantly copied from linux/kernel/printk.c |
| 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> |
| 11 | |
Stefan Reinauer | 0867062 | 2009-06-30 15:17:49 +0000 | [diff] [blame] | 12 | int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; |
Stefan Reinauer | 0867062 | 2009-06-30 15:17:49 +0000 | [diff] [blame] | 13 | int default_console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 14 | |
Myles Watson | 2e67273 | 2009-11-12 16:38:03 +0000 | [diff] [blame] | 15 | DECLARE_SPIN_LOCK(console_lock) |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 16 | |
| 17 | int do_printk(int msg_level, const char *fmt, ...) |
| 18 | { |
| 19 | va_list args; |
| 20 | int i; |
| 21 | |
Myles Watson | 0364618 | 2009-10-16 19:29:45 +0000 | [diff] [blame] | 22 | if (msg_level > console_loglevel) { |
Eric Biederman | 8ca8d76 | 2003-04-22 19:02:15 +0000 | [diff] [blame] | 23 | return 0; |
| 24 | } |
| 25 | |
| 26 | spin_lock(&console_lock); |
| 27 | |
| 28 | va_start(args, fmt); |
| 29 | i = vtxprintf(console_tx_byte, fmt, args); |
| 30 | va_end(args); |
| 31 | |
| 32 | console_tx_flush(); |
| 33 | |
| 34 | spin_unlock(&console_lock); |
| 35 | |
| 36 | return i; |
| 37 | } |