forked from Imagelibrary/rtems
libcsupport: Add and use rtems_putc()
This reduces code size and provides a function similar to fputc().
This commit is contained in:
@@ -53,6 +53,7 @@ extern int getchark(void);
|
||||
extern void vprintk(const char *fmt, va_list ap);
|
||||
extern void printk(const char *fmt, ...);
|
||||
extern void putk(const char *s);
|
||||
extern void rtems_putc(char c);
|
||||
|
||||
/*
|
||||
* This routine is passed into RTEMS reporting functions
|
||||
|
||||
@@ -120,6 +120,7 @@ BSD_LIBC_C_FILES = src/strlcpy.c src/strlcat.c src/issetugid.c
|
||||
|
||||
libcsupport_a_SOURCES = src/gxx_wrappers.c src/getchark.c src/printk.c \
|
||||
src/printk_plugin.c src/putk.c src/vprintk.c \
|
||||
src/rtems_putc.c \
|
||||
src/printf_plugin.c \
|
||||
src/sup_fs_location.c \
|
||||
src/sup_fs_eval_path.c \
|
||||
|
||||
24
cpukit/libcsupport/src/rtems_putc.c
Normal file
24
cpukit/libcsupport/src/rtems_putc.c
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2012 embedded brains GmbH. All rights reserved.
|
||||
*
|
||||
* embedded brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* 82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <rtems/bspIo.h>
|
||||
|
||||
void rtems_putc(char c)
|
||||
{
|
||||
(*BSP_output_char)(c);
|
||||
}
|
||||
@@ -55,7 +55,7 @@ void vprintk(
|
||||
char c;
|
||||
|
||||
if (*fmt != '%') {
|
||||
BSP_output_char(*fmt);
|
||||
rtems_putc(*fmt);
|
||||
continue;
|
||||
}
|
||||
fmt++;
|
||||
@@ -80,7 +80,7 @@ void vprintk(
|
||||
if ( c == 'c' ) {
|
||||
/* need a cast here since va_arg() only takes fully promoted types */
|
||||
char chr = (char) va_arg(ap, int);
|
||||
BSP_output_char(chr);
|
||||
rtems_putc(chr);
|
||||
continue;
|
||||
}
|
||||
if ( c == 's' ) {
|
||||
@@ -100,7 +100,7 @@ void vprintk(
|
||||
/* leading spaces */
|
||||
if ( !minus )
|
||||
for ( i=len ; i<width ; i++ )
|
||||
BSP_output_char(' ');
|
||||
rtems_putc(' ');
|
||||
|
||||
/* no width option */
|
||||
if (width == 0) {
|
||||
@@ -109,12 +109,12 @@ void vprintk(
|
||||
|
||||
/* output the string */
|
||||
for ( i=0 ; i<width && *str ; str++ )
|
||||
BSP_output_char(*str);
|
||||
rtems_putc(*str);
|
||||
|
||||
/* trailing spaces */
|
||||
if ( minus )
|
||||
for ( i=len ; i<width ; i++ )
|
||||
BSP_output_char(' ');
|
||||
rtems_putc(' ');
|
||||
|
||||
continue;
|
||||
}
|
||||
@@ -132,7 +132,7 @@ void vprintk(
|
||||
} else if ( c == 'p' ) {
|
||||
base = 16; sign = false; lflag = true;
|
||||
} else {
|
||||
BSP_output_char(c);
|
||||
rtems_putc(c);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ static void printNum(
|
||||
char toPrint[20];
|
||||
|
||||
if ( sign && (num < 0) ) {
|
||||
BSP_output_char('-');
|
||||
rtems_putc('-');
|
||||
unsigned_num = (unsigned long) -num;
|
||||
if (maxwidth) maxwidth--;
|
||||
} else {
|
||||
@@ -181,9 +181,9 @@ static void printNum(
|
||||
toPrint[count++] = (char) unsigned_num;
|
||||
|
||||
for (n=maxwidth ; n > count; n-- )
|
||||
BSP_output_char(lead);
|
||||
rtems_putc(lead);
|
||||
|
||||
for (n = 0; n < count; n++) {
|
||||
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
|
||||
rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user