console: consolidate common console code
The different console implementations share a good amount of code, share this in console_common.c. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
2ccd4510bd
commit
c429c68416
|
@ -23,7 +23,7 @@ obj-$(CONFIG_MEMINFO) += meminfo.o
|
||||||
obj-$(CONFIG_COMMAND_SUPPORT) += command.o
|
obj-$(CONFIG_COMMAND_SUPPORT) += command.o
|
||||||
obj-$(CONFIG_CONSOLE_FULL) += console.o
|
obj-$(CONFIG_CONSOLE_FULL) += console.o
|
||||||
obj-$(CONFIG_CONSOLE_SIMPLE) += console_simple.o
|
obj-$(CONFIG_CONSOLE_SIMPLE) += console_simple.o
|
||||||
obj-$(CONFIG_CONSOLE_NONE) += console_none.o
|
obj-y += console_common.o
|
||||||
obj-$(CONFIG_DIGEST) += digest.o
|
obj-$(CONFIG_DIGEST) += digest.o
|
||||||
obj-$(CONFIG_ENVIRONMENT_VARIABLES) += env.o
|
obj-$(CONFIG_ENVIRONMENT_VARIABLES) += env.o
|
||||||
obj-$(CONFIG_UIMAGE) += image.o
|
obj-$(CONFIG_UIMAGE) += image.o
|
||||||
|
|
|
@ -305,24 +305,6 @@ void console_putc(unsigned int ch, char c)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(console_putc);
|
EXPORT_SYMBOL(console_putc);
|
||||||
|
|
||||||
int fputc(int fd, char c)
|
|
||||||
{
|
|
||||||
if(list_empty(&console_list)) {
|
|
||||||
if(!fd)
|
|
||||||
console_putc(0, c);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fd == 1)
|
|
||||||
putchar(c);
|
|
||||||
else if (fd == 2)
|
|
||||||
eputc(c);
|
|
||||||
else
|
|
||||||
return write(fd, &c, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputc);
|
|
||||||
|
|
||||||
int console_puts(unsigned int ch, const char *str)
|
int console_puts(unsigned int ch, const char *str)
|
||||||
{
|
{
|
||||||
const char *s = str;
|
const char *s = str;
|
||||||
|
@ -341,17 +323,6 @@ int console_puts(unsigned int ch, const char *str)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(console_puts);
|
EXPORT_SYMBOL(console_puts);
|
||||||
|
|
||||||
int fputs(int fd, const char *s)
|
|
||||||
{
|
|
||||||
if (fd == 1)
|
|
||||||
return puts(s);
|
|
||||||
else if (fd == 2)
|
|
||||||
return eputs(s);
|
|
||||||
else
|
|
||||||
return write(fd, s, strlen(s));
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputs);
|
|
||||||
|
|
||||||
void console_flush(void)
|
void console_flush(void)
|
||||||
{
|
{
|
||||||
struct console_device *cdev;
|
struct console_device *cdev;
|
||||||
|
@ -363,62 +334,6 @@ void console_flush(void)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(console_flush);
|
EXPORT_SYMBOL(console_flush);
|
||||||
|
|
||||||
int fprintf(int file, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
vsprintf (printbuffer, fmt, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
return fputs(file, printbuffer);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fprintf);
|
|
||||||
|
|
||||||
int printf (const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
puts (printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(printf);
|
|
||||||
|
|
||||||
int vprintf (const char *fmt, va_list args)
|
|
||||||
{
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
puts (printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(vprintf);
|
|
||||||
|
|
||||||
#ifndef ARCH_HAS_CTRLC
|
#ifndef ARCH_HAS_CTRLC
|
||||||
/* test if ctrl-c was pressed */
|
/* test if ctrl-c was pressed */
|
||||||
int ctrlc (void)
|
int ctrlc (void)
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
/*
|
||||||
|
* based on code:
|
||||||
|
*
|
||||||
|
* (C) Copyright 2000 Paolo Scaffardi, AIRVENT SAM s.p.a -
|
||||||
|
* RIMINI(ITALY), arsenio@tin.it
|
||||||
|
*
|
||||||
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
* project.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <common.h>
|
||||||
|
#include <fs.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifndef CONFIG_CONSOLE_NONE
|
||||||
|
|
||||||
|
int printf(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
uint i;
|
||||||
|
char printbuffer[CFG_PBSIZE];
|
||||||
|
|
||||||
|
va_start(args, fmt);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For this to work, printbuffer must be larger than
|
||||||
|
* anything we ever want to print.
|
||||||
|
*/
|
||||||
|
i = vsprintf (printbuffer, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
/* Print the string */
|
||||||
|
puts(printbuffer);
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(printf);
|
||||||
|
|
||||||
|
int vprintf(const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
uint i;
|
||||||
|
char printbuffer[CFG_PBSIZE];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For this to work, printbuffer must be larger than
|
||||||
|
* anything we ever want to print.
|
||||||
|
*/
|
||||||
|
i = vsprintf(printbuffer, fmt, args);
|
||||||
|
|
||||||
|
/* Print the string */
|
||||||
|
puts(printbuffer);
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(vprintf);
|
||||||
|
|
||||||
|
#endif /* !CONFIG_CONSOLE_NONE */
|
||||||
|
|
||||||
|
int fprintf(int file, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
char printbuffer[CFG_PBSIZE];
|
||||||
|
|
||||||
|
va_start(args, fmt);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For this to work, printbuffer must be larger than
|
||||||
|
* anything we ever want to print.
|
||||||
|
*/
|
||||||
|
vsprintf(printbuffer, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
/* Print the string */
|
||||||
|
return fputs(file, printbuffer);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(fprintf);
|
||||||
|
|
||||||
|
int fputs(int fd, const char *s)
|
||||||
|
{
|
||||||
|
if (fd == 1)
|
||||||
|
return puts(s);
|
||||||
|
else if (fd == 2)
|
||||||
|
return eputs(s);
|
||||||
|
else
|
||||||
|
return write(fd, s, strlen(s));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(fputs);
|
||||||
|
|
||||||
|
int fputc(int fd, char c)
|
||||||
|
{
|
||||||
|
if (fd == 1)
|
||||||
|
putchar(c);
|
||||||
|
else if (fd == 2)
|
||||||
|
eputc(c);
|
||||||
|
else
|
||||||
|
return write(fd, &c, 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(fputc);
|
|
@ -1,42 +0,0 @@
|
||||||
#include <config.h>
|
|
||||||
#include <common.h>
|
|
||||||
#include <fs.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <debug_ll.h>
|
|
||||||
|
|
||||||
int fputc(int fd, char c)
|
|
||||||
{
|
|
||||||
if (fd != 1 && fd != 2)
|
|
||||||
return write(fd, &c, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputc);
|
|
||||||
|
|
||||||
int fputs(int fd, const char *s)
|
|
||||||
{
|
|
||||||
if (fd != 1 && fd != 2)
|
|
||||||
return write(fd, s, strlen(s));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputs);
|
|
||||||
|
|
||||||
int fprintf(int file, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
fputs(file, printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fprintf);
|
|
|
@ -8,65 +8,6 @@ LIST_HEAD(console_list);
|
||||||
EXPORT_SYMBOL(console_list);
|
EXPORT_SYMBOL(console_list);
|
||||||
static struct console_device *console;
|
static struct console_device *console;
|
||||||
|
|
||||||
int printf (const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
puts(printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(printf);
|
|
||||||
|
|
||||||
int vprintf (const char *fmt, va_list args)
|
|
||||||
{
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
puts (printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(vprintf);
|
|
||||||
|
|
||||||
int fprintf(int file, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
uint i;
|
|
||||||
char printbuffer[CFG_PBSIZE];
|
|
||||||
|
|
||||||
va_start (args, fmt);
|
|
||||||
|
|
||||||
/* For this to work, printbuffer must be larger than
|
|
||||||
* anything we ever want to print.
|
|
||||||
*/
|
|
||||||
i = vsprintf (printbuffer, fmt, args);
|
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
/* Print the string */
|
|
||||||
fputs(file, printbuffer);
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fprintf);
|
|
||||||
|
|
||||||
int console_puts(unsigned int ch, const char *str)
|
int console_puts(unsigned int ch, const char *str)
|
||||||
{
|
{
|
||||||
const char *s = str;
|
const char *s = str;
|
||||||
|
@ -97,30 +38,6 @@ void console_putc(unsigned int ch, char c)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(console_putc);
|
EXPORT_SYMBOL(console_putc);
|
||||||
|
|
||||||
int fputc(int fd, char c)
|
|
||||||
{
|
|
||||||
if (fd == 1)
|
|
||||||
putchar(c);
|
|
||||||
else if (fd == 2)
|
|
||||||
eputc(c);
|
|
||||||
else
|
|
||||||
return write(fd, &c, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputc);
|
|
||||||
|
|
||||||
int fputs(int fd, const char *s)
|
|
||||||
{
|
|
||||||
if (fd == 1)
|
|
||||||
puts(s);
|
|
||||||
else if (fd == 2)
|
|
||||||
eputs(s);
|
|
||||||
else
|
|
||||||
return write(fd, s, strlen(s));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(fputs);
|
|
||||||
|
|
||||||
int tstc(void)
|
int tstc(void)
|
||||||
{
|
{
|
||||||
if (!console)
|
if (!console)
|
||||||
|
|
Loading…
Reference in New Issue