Fixed bug #538.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7358 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
96efc48888
commit
d05fb1e4ff
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.sp,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -60,7 +60,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state\r\n");
|
chprintf(chp, " addr stack prio refs state\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -91,7 +91,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "memstreams.h"
|
#include "memstreams.h"
|
||||||
|
|
||||||
#define MAX_FILLER 11
|
#define MAX_FILLER 11
|
||||||
#define FLOAT_PRECISION 100000
|
#define FLOAT_PRECISION 5
|
||||||
|
|
||||||
static char *long_to_string_with_divisor(char *p,
|
static char *long_to_string_with_divisor(char *p,
|
||||||
long num,
|
long num,
|
||||||
|
@ -73,9 +73,16 @@ static char *ltoa(char *p, long num, unsigned radix) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CHPRINTF_USE_FLOAT
|
#if CHPRINTF_USE_FLOAT
|
||||||
static char *ftoa(char *p, double num) {
|
static long pow10[] = {10, 100, 1000, 10000, 100000, 1000000, 10000000,
|
||||||
|
100000000, 1000000000, 10000000000, 100000000000,
|
||||||
|
1000000000000, 10000000000000};
|
||||||
|
|
||||||
|
static char *ftoa(char *p, double num, unsigned long precision) {
|
||||||
long l;
|
long l;
|
||||||
unsigned long precision = FLOAT_PRECISION;
|
|
||||||
|
if (precision == 0)
|
||||||
|
precision = FLOAT_PRECISION;
|
||||||
|
precision = pow10[precision - 1];
|
||||||
|
|
||||||
l = (long)num;
|
l = (long)num;
|
||||||
p = long_to_string_with_divisor(p, l, 10, 0);
|
p = long_to_string_with_divisor(p, l, 10, 0);
|
||||||
|
@ -137,7 +144,7 @@ void chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) {
|
||||||
left_align = TRUE;
|
left_align = TRUE;
|
||||||
}
|
}
|
||||||
filler = ' ';
|
filler = ' ';
|
||||||
if ((*fmt == '.') || (*fmt == '0')) {
|
if (*fmt == '0') {
|
||||||
fmt++;
|
fmt++;
|
||||||
filler = '0';
|
filler = '0';
|
||||||
}
|
}
|
||||||
|
@ -211,7 +218,7 @@ void chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) {
|
||||||
*p++ = '-';
|
*p++ = '-';
|
||||||
f = -f;
|
f = -f;
|
||||||
}
|
}
|
||||||
p = ftoa(p, f);
|
p = ftoa(p, f, precision);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case 'X':
|
case 'X':
|
||||||
|
@ -290,8 +297,9 @@ int chsnprintf(char *str, size_t size, const char *fmt, ...) {
|
||||||
MemoryStream ms;
|
MemoryStream ms;
|
||||||
BaseSequentialStream *chp;
|
BaseSequentialStream *chp;
|
||||||
|
|
||||||
/* Memory stream object to be used as a string writer.*/
|
/* Memory stream object to be used as a string writer, reserving one
|
||||||
msObjectInit(&ms, (uint8_t *)str, size, 0);
|
byte for the final zero.*/
|
||||||
|
msObjectInit(&ms, (uint8_t *)str, size - 1, 0);
|
||||||
|
|
||||||
/* Performing the print operation using the common code.*/
|
/* Performing the print operation using the common code.*/
|
||||||
chp = (BaseSequentialStream *)&ms;
|
chp = (BaseSequentialStream *)&ms;
|
||||||
|
@ -300,8 +308,8 @@ int chsnprintf(char *str, size_t size, const char *fmt, ...) {
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
/* Final zero and size return.*/
|
/* Final zero and size return.*/
|
||||||
chSequentialStreamPut(chp, 0);
|
str[ms.eos] = 0;
|
||||||
return ms.eos - 1;
|
return ms.eos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -361,7 +361,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state\r\n");
|
chprintf(chp, " addr stack prio refs state\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s %lu\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s %lu\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -361,7 +361,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s %lu\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s %lu\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state], (uint32_t)tp->p_time);
|
states[tp->p_state], (uint32_t)tp->p_time);
|
||||||
|
|
|
@ -368,7 +368,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state\r\n");
|
chprintf(chp, " addr stack prio refs state\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s %lu\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s %lu\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -367,7 +367,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
|
@ -361,7 +361,7 @@ static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state time\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state]);
|
states[tp->p_state]);
|
||||||
|
|
Loading…
Reference in New Issue