9
0
Fork 0

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:
Sascha Hauer 2013-02-07 12:29:30 +01:00
parent 2ccd4510bd
commit c429c68416
5 changed files with 111 additions and 211 deletions

View File

@ -23,7 +23,7 @@ obj-$(CONFIG_MEMINFO) += meminfo.o
obj-$(CONFIG_COMMAND_SUPPORT) += command.o
obj-$(CONFIG_CONSOLE_FULL) += console.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_ENVIRONMENT_VARIABLES) += env.o
obj-$(CONFIG_UIMAGE) += image.o

View File

@ -305,24 +305,6 @@ void console_putc(unsigned int ch, char c)
}
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)
{
const char *s = str;
@ -341,17 +323,6 @@ int console_puts(unsigned int ch, const char *str)
}
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)
{
struct console_device *cdev;
@ -363,62 +334,6 @@ void console_flush(void)
}
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
/* test if ctrl-c was pressed */
int ctrlc (void)

110
common/console_common.c Normal file
View File

@ -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);

View File

@ -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);

View File

@ -8,65 +8,6 @@ LIST_HEAD(console_list);
EXPORT_SYMBOL(console_list);
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)
{
const char *s = str;
@ -97,30 +38,6 @@ void console_putc(unsigned int ch, char c)
}
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)
{
if (!console)