[PATCH] libcsupport: Add and use rtems_debug_putc()

Gedare Bloom gedare at rtems.org
Mon Aug 13 16:42:16 UTC 2012


On Mon, Aug 13, 2012 at 12:34 PM, Joel Sherrill
<joel.sherrill at oarcorp.com>wrote:

>  On 08/13/2012 11:31 AM, Gedare Bloom wrote:
>
> Hi,
> Would there be any problem with just using 'rtems_putc'? the
> rtems_debug_putc seems a little weird to me, because I think debug is
> misleading here; I would expect something named as rtems_debug to be only
> available when rtems-enable-debug is on, and otherwise conditionally
> unavailable.
>
> Perhaps this is just me though. rtems_bsp_putc might be an ok alternative.
>
>  printk vs rtems_xxx_putc just isn't consistent. :(
>
> I think that is the fault of printk.


> -Gedare
>
> On Mon, Aug 13, 2012 at 12:13 PM, 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/rtems_debug_putc.c |   24 ++++++++++++++++++++++++
>>  cpukit/libcsupport/src/vprintk.c          |   18 +++++++++---------
>>  4 files changed, 35 insertions(+), 9 deletions(-)
>>  create mode 100644 cpukit/libcsupport/src/rtems_debug_putc.c
>>
>> diff --git a/cpukit/include/rtems/bspIo.h b/cpukit/include/rtems/bspIo.h
>> index d5a004a..f702ae9 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 rtems_debug_putc(char c);
>>
>>  /*
>>   *  This routine is passed into RTEMS reporting functions
>> diff --git a/cpukit/libcsupport/Makefile.am
>> b/cpukit/libcsupport/Makefile.am
>> index ae23338..45d7684 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/rtems_debug_putc.c \
>>      src/printf_plugin.c \
>>      src/sup_fs_location.c \
>>      src/sup_fs_eval_path.c \
>> diff --git a/cpukit/libcsupport/src/rtems_debug_putc.c
>> b/cpukit/libcsupport/src/rtems_debug_putc.c
>> new file mode 100644
>> index 0000000..0283efd
>> --- /dev/null
>> +++ b/cpukit/libcsupport/src/rtems_debug_putc.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 rtems_debug_putc(char c)
>> +{
>> +  (*BSP_output_char)(c);
>> +}
>> diff --git a/cpukit/libcsupport/src/vprintk.c
>> b/cpukit/libcsupport/src/vprintk.c
>> index 1a8d5dd..d5255a7 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);
>> +      rtems_debug_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_debug_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_debug_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_debug_putc(*str);
>>
>>        /* trailing spaces */
>>        if ( minus )
>>          for ( i=len ; i<width ; i++ )
>> -          BSP_output_char(' ');
>> +          rtems_debug_putc(' ');
>>
>>        continue;
>>      }
>> @@ -132,7 +132,7 @@ void vprintk(
>>      } else if ( c == 'p' ) {
>>        base = 16; sign = false; lflag = true;
>>      } else {
>> -      BSP_output_char(c);
>> +      rtems_debug_putc(c);
>>        continue;
>>      }
>>
>> @@ -166,7 +166,7 @@ static void printNum(
>>    char toPrint[20];
>>
>>    if ( sign && (num <  0) ) {
>> -    BSP_output_char('-');
>> +    rtems_debug_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_debug_putc(lead);
>>
>>    for (n = 0; n < count; n++) {
>> -    BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
>> +    rtems_debug_putc("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
>>
>
>
>
> --
> Joel Sherrill, Ph.D.             Director of Research&  Developmentjoel.sherrill at OARcorp.com        On-Line Applications Research
> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>     Support Available             (256) 722-9985
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20120813/5f462db4/attachment-0001.html>


More information about the devel mailing list