[PATCH] Add and use kputc()

Gedare Bloom gedare at rtems.org
Mon Aug 13 13:59:09 UTC 2012


I don't see the code size reduction (yet). It looks like the kputc function
wraps BSP_output_char and is replacing that function. Is kputc expected to
also replace some putc/fputc calls somewhere?
-gedare

On Mon, Aug 13, 2012 at 5:30 AM, Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> This reduces code size and provides a function similar to fputc().
> ---
>  cpukit/include/rtems/bspIo.h     |    1 +
>  cpukit/libcsupport/Makefile.am   |    1 +
>  cpukit/libcsupport/src/kputc.c   |   24 ++++++++++++++++++++++++
>  cpukit/libcsupport/src/vprintk.c |   18 +++++++++---------
>  4 files changed, 35 insertions(+), 9 deletions(-)
>  create mode 100644 cpukit/libcsupport/src/kputc.c
>
> diff --git a/cpukit/include/rtems/bspIo.h b/cpukit/include/rtems/bspIo.h
> index d5a004a..9a035ec 100644
> --- a/cpukit/include/rtems/bspIo.h
> +++ b/cpukit/include/rtems/bspIo.h
> @@ -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 kputc(char c);
>
>  /*
>   *  This routine is passed into RTEMS reporting functions
> diff --git a/cpukit/libcsupport/Makefile.am
> b/cpukit/libcsupport/Makefile.am
> index ae23338..f9486a1 100644
> --- a/cpukit/libcsupport/Makefile.am
> +++ b/cpukit/libcsupport/Makefile.am
> @@ -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/kputc.c \
>      src/printf_plugin.c \
>      src/sup_fs_location.c \
>      src/sup_fs_eval_path.c \
> diff --git a/cpukit/libcsupport/src/kputc.c
> b/cpukit/libcsupport/src/kputc.c
> new file mode 100644
> index 0000000..6d7a059
> --- /dev/null
> +++ b/cpukit/libcsupport/src/kputc.c
> @@ -0,0 +1,24 @@
> +/*
> + * Copyright (c) 2012 embedded brains GmbH.  All rights reserved.
> + *
> + *  embedded brains GmbH
> + *  Obere Lagerstr. 30
> + *  82178 Puchheim
> + *  Germany
> + *  <rtems at 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 kputc(char c)
> +{
> +  (*BSP_output_char)(c);
> +}
> diff --git a/cpukit/libcsupport/src/vprintk.c
> b/cpukit/libcsupport/src/vprintk.c
> index 1a8d5dd..7ee0539 100644
> --- a/cpukit/libcsupport/src/vprintk.c
> +++ b/cpukit/libcsupport/src/vprintk.c
> @@ -55,7 +55,7 @@ void vprintk(
>      char c;
>
>      if (*fmt != '%') {
> -      BSP_output_char(*fmt);
> +      kputc(*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);
> +      kputc(chr);
>        continue;
>      }
>      if ( c == 's' ) {
> @@ -100,7 +100,7 @@ void vprintk(
>        /* leading spaces */
>        if ( !minus )
>          for ( i=len ; i<width ; i++ )
> -          BSP_output_char(' ');
> +          kputc(' ');
>
>        /* 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);
> +        kputc(*str);
>
>        /* trailing spaces */
>        if ( minus )
>          for ( i=len ; i<width ; i++ )
> -          BSP_output_char(' ');
> +          kputc(' ');
>
>        continue;
>      }
> @@ -132,7 +132,7 @@ void vprintk(
>      } else if ( c == 'p' ) {
>        base = 16; sign = false; lflag = true;
>      } else {
> -      BSP_output_char(c);
> +      kputc(c);
>        continue;
>      }
>
> @@ -166,7 +166,7 @@ static void printNum(
>    char toPrint[20];
>
>    if ( sign && (num <  0) ) {
> -    BSP_output_char('-');
> +    kputc('-');
>      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);
> +    kputc(lead);
>
>    for (n = 0; n < count; n++) {
> -    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
> +    kputc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
>    }
>  }
> --
> 1.7.7
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20120813/bdffa61c/attachment.html>


More information about the devel mailing list