summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-11-03 21:28:02 +0000
committerThomas Martitz <kugel@rockbox.org>2009-11-03 21:28:02 +0000
commit15667059849148e6ee1718966ad3791cc638f3dd (patch)
tree3ae7a4080df65bced5915ed9ed0856151445c075
parent1ddb91ad3643add8f4586f4e3be65712277fc2aa (diff)
downloadrockbox-15667059849148e6ee1718966ad3791cc638f3dd.tar.gz
rockbox-15667059849148e6ee1718966ad3791cc638f3dd.zip
Simplify uart_printf() a bit by using vuprintf(), that also makes removing a static buffer possible.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23504 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/s3c2440/uart-s3c2440.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/firmware/target/arm/s3c2440/uart-s3c2440.c b/firmware/target/arm/s3c2440/uart-s3c2440.c
index 84282f731a..2308027218 100644
--- a/firmware/target/arm/s3c2440/uart-s3c2440.c
+++ b/firmware/target/arm/s3c2440/uart-s3c2440.c
@@ -23,6 +23,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
+#include <sprintf.h>
#include "inttypes.h"
#include "string.h"
#include "cpu.h"
@@ -58,38 +59,33 @@ void tx_writec(unsigned char c)
}
+static int uart_push(void *user_data, unsigned char ch)
+{
+ (void)user_data;
+
+ uart_send_byte(DEBUG_UART_PORT, ch);
+ if (ch == '\n')
+ uart_send_byte(DEBUG_UART_PORT, '\r');
+ return 1;
+}
+
/****************************************************************************
* General purpose debug function
****************************************************************************/
-
void uart_printf (const char *format, ...)
{
static bool debug_uart_init = false;
- static char tx_buf [MAX_PRINTF_BUF];
-
- int len;
- unsigned char *ptr;
- int j;
-
va_list ap;
- va_start(ap, format);
-
- ptr = tx_buf;
- len = vsnprintf(ptr, sizeof(tx_buf), format, ap);
- va_end(ap);
if (!debug_uart_init)
{
uart_init_device(DEBUG_UART_PORT);
debug_uart_init = true;
}
-
- for (j=0; j<len; j++)
- {
- uart_send_byte (DEBUG_UART_PORT, tx_buf[j]);
- if ( tx_buf[j] == '\n')
- uart_send_byte (DEBUG_UART_PORT, '\r');
- }
+
+ va_start(ap, format);
+ vuprintf(uart_push, NULL, format, ap);
+ va_end(ap);
}
/****************************************************************************