diff options
| -rw-r--r-- | arch/sandbox/cpu/os.c | 11 | ||||
| -rw-r--r-- | common/console.c | 16 | ||||
| -rw-r--r-- | include/os.h | 20 | 
3 files changed, 46 insertions, 1 deletions
| diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c index 88dd37176..ef6a651a6 100644 --- a/arch/sandbox/cpu/os.c +++ b/arch/sandbox/cpu/os.c @@ -388,3 +388,14 @@ ssize_t os_get_filesize(const char *fname)  		return ret;  	return buf.st_size;  } + +void os_putc(int ch) +{ +	putchar(ch); +} + +void os_puts(const char *str) +{ +	while (*str) +		os_putc(*str++); +} diff --git a/common/console.c b/common/console.c index cc55068c7..2dfb78888 100644 --- a/common/console.c +++ b/common/console.c @@ -8,6 +8,7 @@  #include <common.h>  #include <stdarg.h>  #include <malloc.h> +#include <os.h>  #include <serial.h>  #include <stdio_dev.h>  #include <exports.h> @@ -415,6 +416,12 @@ static inline void print_pre_console_buffer(void) {}  void putc(const char c)  { +#ifdef CONFIG_SANDBOX +	if (!gd) { +		os_putc(c); +		return; +	} +#endif  #ifdef CONFIG_SILENT_CONSOLE  	if (gd->flags & GD_FLG_SILENT)  		return; @@ -439,6 +446,13 @@ void putc(const char c)  void puts(const char *s)  { +#ifdef CONFIG_SANDBOX +	if (!gd) { +		os_puts(s); +		return; +	} +#endif +  #ifdef CONFIG_SILENT_CONSOLE  	if (gd->flags & GD_FLG_SILENT)  		return; @@ -467,7 +481,7 @@ int printf(const char *fmt, ...)  	uint i;  	char printbuffer[CONFIG_SYS_PBSIZE]; -#ifndef CONFIG_PRE_CONSOLE_BUFFER +#if !defined(CONFIG_SANDBOX) && !defined(CONFIG_PRE_CONSOLE_BUFFER)  	if (!gd->have_console)  		return 0;  #endif diff --git a/include/os.h b/include/os.h index 1575a9692..d302b3685 100644 --- a/include/os.h +++ b/include/os.h @@ -209,4 +209,24 @@ const char *os_dirent_get_typename(enum os_dirent_t type);   */  ssize_t os_get_filesize(const char *fname); +/** + * Write a character to the controlling OS terminal + * + * This bypasses the U-Boot console support and writes directly to the OS + * stdout file descriptor. + * + * @param ch	Character to write + */ +void os_putc(int ch); + +/** + * Write a string to the controlling OS terminal + * + * This bypasses the U-Boot console support and writes directly to the OS + * stdout file descriptor. + * + * @param str	String to write (note that \n is not appended) + */ +void os_puts(const char *str); +  #endif |