From fdf08e2a4114e559e58bd067c817fe9079bc9bcf Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 27 Jun 2011 15:00:05 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3091 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/various/chprintf.c | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++ os/various/chprintf.h | 42 +++++++++ os/various/evtimer.c | 5 +- os/various/evtimer.h | 5 +- 4 files changed, 286 insertions(+), 4 deletions(-) create mode 100644 os/various/chprintf.c create mode 100644 os/various/chprintf.h (limited to 'os/various') diff --git a/os/various/chprintf.c b/os/various/chprintf.c new file mode 100644 index 000000000..2d210b5cb --- /dev/null +++ b/os/various/chprintf.c @@ -0,0 +1,238 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT 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 3 of the License, or + (at your option) any later version. + + ChibiOS/RT 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. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include + +#include "ch.h" + +#define MAXDIG 11 + +static char *itoa(char *p, int num, unsigned radix) { + int i; + char *q; + + q = p + MAXDIG; + do { + i = (int)(num % radix); + i += '0'; + if (i > '9') + i += 'A' - '0' - 10; + *--q = i; + } while ((num /= radix) != 0); + + i = (int)(p + MAXDIG - q); + do + *p++ = *q++; + while (--i); + + return p; +} + +#ifndef NO_LONGD + +static char *ltoa(char *p, long num, unsigned radix) { + int i; + char *q; + + q = p + MAXDIG; + do { + i = (int)(num % radix); + i += '0'; + if (i > '9') + i += 'A' - '0' - 10; + *--q = i; + } while ((num /= radix) != 0); + + i = (int)(p + MAXDIG - q); + do + *p++ = *q++; + while (--i); + + return p; +} +#endif + +void chprintf(BaseChannel *chp, const char *fmt, ...) { + va_list ap; + char buf[MAXDIG + 1]; + char *p, *s; + int c, i, width, ndigit, ndfnd, ljust, zfill; +#ifndef NO_LONGD + int lflag; + long l; +#endif + + va_start(ap, fmt); + while (TRUE) { + c = *fmt++; + if (c == 0) { + va_end(ap); + return; + } + if (c != '%') { + chIOPut(chp, (uint8_t)c); + continue; + } + p = buf; + s = buf; + ljust = 0; + if (*fmt == '-') { + fmt++; + ljust++; + } + zfill = ' '; + if (*fmt == '0') { + fmt++; + zfill = '0'; + } + for (width = 0;;) { + c = *fmt++; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c == '*') + c = va_arg(ap, int); + else + break; + width *= 10; + width += c; + } + ndfnd = 0; + ndigit = 0; + if (c == '.') { + for (;;) { + c = *fmt++; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c == '*') + c = va_arg(ap, int); + else + break; + ndigit *= 10; + ndigit += c; + ndfnd++; + } + } +#ifndef NO_LONGD + lflag = 0; +#endif + if (c == 'l' || c == 'L') { +#ifndef NO_LONGD + lflag++; +#endif + if (*fmt) + c = *fmt++; + } + switch (c) { + case 'X': +#ifndef NO_LONGD + lflag++; +#endif + case 'x': + c = 16; + goto oxu; + case 'U': +#ifndef NO_LONGD + lflag++; +#endif + case 'u': + c = 10; + goto oxu; + case 'O': +#ifndef NO_LONGD + lflag++; +#endif + case 'o': + c = 8; + oxu: +#ifndef NO_LONGD + if (lflag) { + p = ltoa(p, va_arg(ap, long), c); + break; + } +#endif + p = itoa(p, va_arg(ap, int), c); + break; + case 'D': +#ifndef NO_LONGD + lflag++; +#endif + case 'd': +#ifndef NO_LONGD + if (lflag) { + if ((l = va_arg(ap, long)) < 0) { + *p++ = '-'; + l = -l; + } + p = ltoa(p, l, 10); + break; + } +#endif + if ((i = va_arg(ap, int)) < 0) { + *p++ = '-'; + i = -i; + } + p = itoa(p, i, 10); + break; +/* case 'e': + case 'f': + case 'g': + zfill = ' '; + *p++ = '?'; + break;*/ + case 'c': + zfill = ' '; + *p++ = va_arg(ap, int); + break; + case 's': + zfill = ' '; + if ((s = va_arg(ap, char *)) == 0) + s = "(null)"; + if (ndigit == 0) + ndigit = 32767; + for (p = s; *p && --ndigit >= 0; p++) + ; + break; + default: + *p++ = c; + break; + } + i = (int)(p - s); + if ((width -= i) < 0) + width = 0; + if (ljust == 0) + width = -width; + if (width < 0) { + if (*s == '-' && zfill == '0') { + chIOPut(chp, (uint8_t)*s++); + i--; + } + do + chIOPut(chp, (uint8_t)zfill); + while (++width != 0); + } + while (--i >= 0) + chIOPut(chp, (uint8_t)*s++); + + while (width) { + chIOPut(chp, (uint8_t)zfill); + width--; + } + } +} diff --git a/os/various/chprintf.h b/os/various/chprintf.h new file mode 100644 index 000000000..401b7eabf --- /dev/null +++ b/os/various/chprintf.h @@ -0,0 +1,42 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT 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 3 of the License, or + (at your option) any later version. + + ChibiOS/RT 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. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file chprintf.h + * @brief Mini printf-like functionality. + * + * @addtogroup event_timer + * @{ + */ + +#ifndef _CHPRINTF_H_ +#define _CHPRINTF_H_ + +#ifdef __cplusplus +extern "C" { +#endif + void chprintf(BaseChannel *chp, const char *fmt, ...); +#ifdef __cplusplus +} +#endif + +#endif /* _CHPRINTF_H_ */ + +/** @} */ diff --git a/os/various/evtimer.c b/os/various/evtimer.c index 6a7226b27..5ecfc5869 100644 --- a/os/various/evtimer.c +++ b/os/various/evtimer.c @@ -19,8 +19,9 @@ */ /** - * @file evtimer.c - * @brief Events Generator Timer code. + * @file evtimer.c + * @brief Events Generator Timer code. + * * @addtogroup event_timer * @{ */ diff --git a/os/various/evtimer.h b/os/various/evtimer.h index a753e8984..50cd4f9aa 100644 --- a/os/various/evtimer.h +++ b/os/various/evtimer.h @@ -19,8 +19,9 @@ */ /** - * @file evtimer.h - * @brief Events Generator Timer structures and macros. + * @file evtimer.h + * @brief Events Generator Timer structures and macros. + * * @addtogroup event_timer * @{ */ -- cgit v1.2.3 From e10edf16834d7dbe0c4ce7ea88c634e31b7d3113 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 27 Jun 2011 19:57:11 +0000 Subject: Dedicated printf implementation. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3092 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/various/chprintf.c | 167 +++++++++++++++++--------------------------------- 1 file changed, 56 insertions(+), 111 deletions(-) (limited to 'os/various') diff --git a/os/various/chprintf.c b/os/various/chprintf.c index 2d210b5cb..383a2121a 100644 --- a/os/various/chprintf.c +++ b/os/various/chprintf.c @@ -1,83 +1,57 @@ /* - ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, - 2011 Giovanni Di Sirio. + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011 Giovanni Di Sirio. - This file is part of ChibiOS/RT. + This file is part of ChibiOS/RT. - ChibiOS/RT 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 3 of the License, or - (at your option) any later version. + ChibiOS/RT 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 3 of the License, or + (at your option) any later version. - ChibiOS/RT 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. + ChibiOS/RT 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. - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include "ch.h" -#define MAXDIG 11 - -static char *itoa(char *p, int num, unsigned radix) { - int i; - char *q; - - q = p + MAXDIG; - do { - i = (int)(num % radix); - i += '0'; - if (i > '9') - i += 'A' - '0' - 10; - *--q = i; - } while ((num /= radix) != 0); - - i = (int)(p + MAXDIG - q); - do - *p++ = *q++; - while (--i); - - return p; -} - -#ifndef NO_LONGD +#define MAX_FILLER 11 static char *ltoa(char *p, long num, unsigned radix) { int i; char *q; - q = p + MAXDIG; + q = p + MAX_FILLER; do { i = (int)(num % radix); i += '0'; if (i > '9') - i += 'A' - '0' - 10; + i += 'A' - '0' - 10; *--q = i; } while ((num /= radix) != 0); - i = (int)(p + MAXDIG - q); + i = (int)(p + MAX_FILLER - q); do *p++ = *q++; while (--i); return p; } -#endif void chprintf(BaseChannel *chp, const char *fmt, ...) { va_list ap; - char buf[MAXDIG + 1]; - char *p, *s; - int c, i, width, ndigit, ndfnd, ljust, zfill; -#ifndef NO_LONGD - int lflag; + char buf[MAX_FILLER + 1]; + char *p, *s, c, filler; + int i, n, width; + bool_t lflag, ljust; long l; -#endif va_start(ap, fmt); while (TRUE) { @@ -92,15 +66,15 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { } p = buf; s = buf; - ljust = 0; + ljust = FALSE; if (*fmt == '-') { fmt++; - ljust++; + ljust = TRUE; } - zfill = ' '; - if (*fmt == '0') { + filler = ' '; + if (*fmt == '.') { fmt++; - zfill = '0'; + filler = '0'; } for (width = 0;;) { c = *fmt++; @@ -113,8 +87,7 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { width *= 10; width += c; } - ndfnd = 0; - ndigit = 0; + n = 0; if (c == '.') { for (;;) { c = *fmt++; @@ -124,89 +97,61 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { c = va_arg(ap, int); else break; - ndigit *= 10; - ndigit += c; - ndfnd++; + n *= 10; + n += c; } } -#ifndef NO_LONGD - lflag = 0; -#endif + lflag = FALSE; if (c == 'l' || c == 'L') { -#ifndef NO_LONGD lflag++; -#endif if (*fmt) c = *fmt++; } switch (c) { case 'X': -#ifndef NO_LONGD - lflag++; -#endif + lflag = TRUE; case 'x': c = 16; goto oxu; case 'U': -#ifndef NO_LONGD - lflag++; -#endif + lflag = TRUE; case 'u': c = 10; goto oxu; case 'O': -#ifndef NO_LONGD - lflag++; -#endif + lflag = TRUE; case 'o': c = 8; - oxu: -#ifndef NO_LONGD - if (lflag) { - p = ltoa(p, va_arg(ap, long), c); - break; - } -#endif - p = itoa(p, va_arg(ap, int), c); + oxu: if (lflag) + l = va_arg(ap, long); + else + l = va_arg(ap, int); + p = ltoa(p, l, c); break; case 'D': -#ifndef NO_LONGD - lflag++; -#endif + lflag = TRUE; case 'd': -#ifndef NO_LONGD - if (lflag) { - if ((l = va_arg(ap, long)) < 0) { - *p++ = '-'; - l = -l; - } - p = ltoa(p, l, 10); - break; - } -#endif - if ((i = va_arg(ap, int)) < 0) { + if (lflag) + l = va_arg(ap, long); + else + l = va_arg(ap, int); + if (l < 0) { *p++ = '-'; - i = -i; + l = -l; } - p = itoa(p, i, 10); + p = ltoa(p, l, 10); break; -/* case 'e': - case 'f': - case 'g': - zfill = ' '; - *p++ = '?'; - break;*/ case 'c': - zfill = ' '; + filler = ' '; *p++ = va_arg(ap, int); break; case 's': - zfill = ' '; + filler = ' '; if ((s = va_arg(ap, char *)) == 0) s = "(null)"; - if (ndigit == 0) - ndigit = 32767; - for (p = s; *p && --ndigit >= 0; p++) + if (n == 0) + n = 32767; + for (p = s; *p && --n >= 0; p++) ; break; default: @@ -216,22 +161,22 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { i = (int)(p - s); if ((width -= i) < 0) width = 0; - if (ljust == 0) + if (ljust == FALSE) width = -width; if (width < 0) { - if (*s == '-' && zfill == '0') { + if (*s == '-' && filler == '0') { chIOPut(chp, (uint8_t)*s++); i--; } do - chIOPut(chp, (uint8_t)zfill); + chIOPut(chp, (uint8_t)filler); while (++width != 0); } while (--i >= 0) chIOPut(chp, (uint8_t)*s++); while (width) { - chIOPut(chp, (uint8_t)zfill); + chIOPut(chp, (uint8_t)filler); width--; } } -- cgit v1.2.3 From ddc9ded3f065d8da59a843390814b1c19061c566 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 28 Jun 2011 06:29:04 +0000 Subject: chprintf() implemented, improved the shell. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3093 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/various/chprintf.c | 29 ++++++++++++++-- os/various/shell.c | 92 ++++++++++++++++++--------------------------------- os/various/shell.h | 7 ++-- 3 files changed, 62 insertions(+), 66 deletions(-) (limited to 'os/various') diff --git a/os/various/chprintf.c b/os/various/chprintf.c index 383a2121a..1645cd678 100644 --- a/os/various/chprintf.c +++ b/os/various/chprintf.c @@ -45,6 +45,29 @@ static char *ltoa(char *p, long num, unsigned radix) { return p; } +/** + * @brief System formatted output function. + * @details This function implements a minimal @p printf() like functionality + * with output on a @p BaseChannel. + * The general parameters format is: %[.][width|*][l|L]p. + * The following parameter types (p) are supported: + * - x hexadecimal integer. + * - X hexadecimal long. + * - o octal integer. + * - O octal long. + * - d decimal signed integer. + * - D decimal signed long. + * - u decimal unsigned integer. + * - U decimal unsigned long. + * - c character. + * - s string. + * . + * @note Floating point types are not implemented, this function is meant + * as a system utility and not a full implementation. + * + * @param[in] chp pointer to a @p BaseChannel implementing object + * @param[in] fmt formatting string + */ void chprintf(BaseChannel *chp, const char *fmt, ...) { va_list ap; char buf[MAX_FILLER + 1]; @@ -84,8 +107,7 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { c = va_arg(ap, int); else break; - width *= 10; - width += c; + width = width * 10 + c; } n = 0; if (c == '.') { @@ -122,7 +144,8 @@ void chprintf(BaseChannel *chp, const char *fmt, ...) { lflag = TRUE; case 'o': c = 8; - oxu: if (lflag) +oxu: + if (lflag) l = va_arg(ap, long); else l = va_arg(ap, int); diff --git a/os/various/shell.c b/os/various/shell.c index e3686c6cb..b62297fc8 100644 --- a/os/various/shell.c +++ b/os/various/shell.c @@ -19,8 +19,9 @@ */ /** - * @file shell.c - * @brief Simple CLI shell code. + * @file shell.c + * @brief Simple CLI shell code. + * * @addtogroup SHELL * @{ */ @@ -31,6 +32,7 @@ #include "ch.h" #include "hal.h" #include "shell.h" +#include "chprintf.h" #if SHELL_USE_IPRINTF #define sprintf siprintf @@ -65,15 +67,13 @@ static char *strtok_r(char *str, const char *delim, char **saveptr) { static void usage(BaseChannel *chp, char *p) { - shellPrint(chp, "Usage: "); - shellPrintLine(chp, p); + chprintf(chp, "Usage: %s\r\n", p); } static void list_commands(BaseChannel *chp, const ShellCommand *scp) { while (scp->sc_name != NULL) { - shellPrint(chp, scp->sc_name); - shellPrint(chp, " "); + chprintf(chp, "%s ", scp->sc_name); scp++; } } @@ -86,38 +86,33 @@ static void cmd_info(BaseChannel *chp, int argc, char *argv[]) { return; } - shellPrint(chp, "Kernel version: "); - shellPrintLine(chp, CH_KERNEL_VERSION); -#ifdef __GNUC__ - shellPrint(chp, "GCC Version: "); - shellPrintLine(chp, __VERSION__); + chprintf(chp, "Kernel: %s\r\n", CH_KERNEL_VERSION); +#ifdef CH_COMPILER_NAME + chprintf(chp, "Compiler: %s\r\n", CH_COMPILER_NAME); #endif - shellPrint(chp, "Architecture: "); - shellPrintLine(chp, CH_ARCHITECTURE_NAME); + chprintf(chp, "Architecture: %s\r\n", CH_ARCHITECTURE_NAME); #ifdef CH_CORE_VARIANT_NAME - shellPrint(chp, "Core Variant: "); - shellPrintLine(chp, CH_CORE_VARIANT_NAME); + chprintf(chp, "Core Variant: %s\r\n", CH_CORE_VARIANT_NAME); +#endif +#ifdef CH_PORT_INFO + chprintf(chp, "Port Info: %s\r\n", CH_PORT_INFO); #endif #ifdef PLATFORM_NAME - shellPrint(chp, "Platform: "); - shellPrintLine(chp, PLATFORM_NAME); + chprintf(chp, "Platform: %s\r\n", PLATFORM_NAME); #endif #ifdef BOARD_NAME - shellPrint(chp, "Board: "); - shellPrintLine(chp, BOARD_NAME); + chprintf(chp, "Board: %s\r\n", BOARD_NAME); #endif } static void cmd_systime(BaseChannel *chp, int argc, char *argv[]) { - char buf[12]; (void)argv; if (argc > 0) { usage(chp, "systime"); return; } - sprintf(buf, "%lu", (unsigned long)chTimeNow()); - shellPrintLine(chp, buf); + chprintf(chp, "%lu\r\n", (unsigned long)chTimeNow()); } /** @@ -158,12 +153,11 @@ static msg_t shell_thread(void *p) { char *lp, *cmd, *tokp, line[SHELL_MAX_LINE_LENGTH]; char *args[SHELL_MAX_ARGUMENTS + 1]; - shellPrintLine(chp, ""); - shellPrintLine(chp, "ChibiOS/RT Shell"); + chprintf(chp, "\r\nChibiOS/RT Shell\r\n"); while (TRUE) { - shellPrint(chp, "ch> "); + chprintf(chp, "ch> "); if (shellGetLine(chp, line, sizeof(line))) { - shellPrint(chp, "\nlogout"); + chprintf(chp, "\r\nlogout"); break; } lp = strtok_r(line, " \009", &tokp); @@ -171,7 +165,7 @@ static msg_t shell_thread(void *p) { n = 0; while ((lp = strtok_r(NULL, " \009", &tokp)) != NULL) { if (n >= SHELL_MAX_ARGUMENTS) { - shellPrintLine(chp, "too many arguments"); + chprintf(chp, "too many arguments\r\n"); cmd = NULL; break; } @@ -180,23 +174,27 @@ static msg_t shell_thread(void *p) { args[n] = NULL; if (cmd != NULL) { if (strcasecmp(cmd, "exit") == 0) { - if (n > 0) + if (n > 0) { usage(chp, "exit"); + continue; + } break; } else if (strcasecmp(cmd, "help") == 0) { - if (n > 0) + if (n > 0) { usage(chp, "help"); - shellPrint(chp, "Commands: help exit "); + continue; + } + chprintf(chp, "Commands: help exit "); list_commands(chp, local_commands); if (scp != NULL) list_commands(chp, scp); - shellPrintLine(chp, ""); + chprintf(chp, "\r\n"); } else if (cmdexec(local_commands, chp, cmd, n, args) && ((scp == NULL) || cmdexec(scp, chp, cmd, n, args))) { - shellPrint(chp, cmd); - shellPrintLine(chp, " ?"); + chprintf(chp, "%s", cmd); + chprintf(chp, " ?\r\n"); } } } @@ -228,30 +226,6 @@ Thread *shellCreate(const ShellConfig *scp, size_t size, tprio_t prio) { return chThdCreateFromHeap(NULL, size, prio, shell_thread, (void *)scp); } -/** - * @brief Prints a string. - * - * @param[in] chp pointer to a @p BaseChannel object - * @param[in] msg pointer to the string - */ -void shellPrint(BaseChannel *chp, const char *msg) { - - while (*msg) - chIOPut(chp, *msg++); -} - -/** - * @brief Prints a string with a final newline. - * - * @param[in] chp pointer to a @p BaseChannel object - * @param[in] msg pointer to the string - */ -void shellPrintLine(BaseChannel *chp, const char *msg) { - - shellPrint(chp, msg); - shellPrint(chp, "\r\n"); -} - /** * @brief Reads a whole line from the input channel. * @@ -271,7 +245,7 @@ bool_t shellGetLine(BaseChannel *chp, char *line, unsigned size) { if (c < 0) return TRUE; if (c == 4) { - shellPrintLine(chp, "^D"); + chprintf(chp, "^D"); return TRUE; } if (c == 8) { @@ -284,7 +258,7 @@ bool_t shellGetLine(BaseChannel *chp, char *line, unsigned size) { continue; } if (c == '\r') { - shellPrintLine(chp, ""); + chprintf(chp, "\r\n"); *p = 0; return FALSE; } diff --git a/os/various/shell.h b/os/various/shell.h index 9b3b70513..075d4e264 100644 --- a/os/various/shell.h +++ b/os/various/shell.h @@ -19,8 +19,9 @@ */ /** - * @file shell.h - * @brief Simple CLI shell header. + * @file shell.h + * @brief Simple CLI shell header. + * * @addtogroup SHELL * @{ */ @@ -79,8 +80,6 @@ extern "C" { #endif void shellInit(void); Thread *shellCreate(const ShellConfig *scp, size_t size, tprio_t prio); - void shellPrint(BaseChannel *chp, const char *msg); - void shellPrintLine(BaseChannel *chp, const char *msg); bool_t shellGetLine(BaseChannel *chp, char *line, unsigned size); #ifdef __cplusplus } -- cgit v1.2.3 From a53bc3d266cae5f72c30abed0aa884ade3723192 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 9 Jul 2011 07:32:27 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3137 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/various/shell.c | 1 + 1 file changed, 1 insertion(+) (limited to 'os/various') diff --git a/os/various/shell.c b/os/various/shell.c index b62297fc8..d47df283d 100644 --- a/os/various/shell.c +++ b/os/various/shell.c @@ -153,6 +153,7 @@ static msg_t shell_thread(void *p) { char *lp, *cmd, *tokp, line[SHELL_MAX_LINE_LENGTH]; char *args[SHELL_MAX_ARGUMENTS + 1]; + chRegSetThreadName("shell"); chprintf(chp, "\r\nChibiOS/RT Shell\r\n"); while (TRUE) { chprintf(chp, "ch> "); -- cgit v1.2.3