Printing coreboot debug messages on VGA console is pretty much useless, since
[coreboot.git] / src / console / vsprintf.c
blob4a745233b918257fc65fd589d42f0fd09a71d62e
1 /*
2 * This file is part of the coreboot project.
4 * Copyright (C) 2009 coresystems GmbH
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; version 2 of
9 * the License.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
19 * MA 02110-1301 USA
22 #include <string.h>
23 #include <smp/spinlock.h>
24 #include <console/vtxprintf.h>
26 DECLARE_SPIN_LOCK(vsprintf_lock)
28 static char *str_buf;
30 static void str_tx_byte(unsigned char byte)
32 *str_buf = byte;
33 str_buf++;
36 static int vsprintf(char *buf, const char *fmt, va_list args)
38 int i;
40 spin_lock(&vsprintf_lock);
42 str_buf = buf;
43 i = vtxprintf(str_tx_byte, fmt, args);
44 *str_buf = '\0';
46 spin_unlock(&vsprintf_lock);
48 return i;
51 int sprintf(char *buf, const char *fmt, ...)
53 va_list args;
54 int i;
56 va_start(args, fmt);
57 i = vsprintf(buf, fmt, args);
58 va_end(args);
60 return i;