mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 08:59:33 +00:00
Add function to print a number with grouped digits
Move bootstage's numbering printing code into a generic place so that it can be used by tracing also. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5d3bd34545
commit
b8bcaa3ad3
3 changed files with 31 additions and 18 deletions
|
@ -49,6 +49,7 @@ static int next_id = BOOTSTAGE_ID_USER;
|
|||
enum {
|
||||
BOOTSTAGE_VERSION = 0,
|
||||
BOOTSTAGE_MAGIC = 0xb00757a3,
|
||||
BOOTSTAGE_DIGITS = 9,
|
||||
};
|
||||
|
||||
struct bootstage_hdr {
|
||||
|
@ -165,21 +166,6 @@ uint32_t bootstage_accum(enum bootstage_id id)
|
|||
return duration;
|
||||
}
|
||||
|
||||
static void print_time(unsigned long us_time)
|
||||
{
|
||||
char str[15], *s;
|
||||
int grab = 3;
|
||||
|
||||
/* We don't seem to have %'d in U-Boot */
|
||||
sprintf(str, "%12lu", us_time);
|
||||
for (s = str + 3; *s; s += grab) {
|
||||
if (s != str + 3)
|
||||
putc(s[-1] != ' ' ? ',' : ' ');
|
||||
printf("%.*s", grab, s);
|
||||
grab = 3;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a record name as a printable string
|
||||
*
|
||||
|
@ -208,10 +194,10 @@ static uint32_t print_time_record(enum bootstage_id id,
|
|||
|
||||
if (prev == -1U) {
|
||||
printf("%11s", "");
|
||||
print_time(rec->time_us);
|
||||
print_grouped_ull(rec->time_us, BOOTSTAGE_DIGITS);
|
||||
} else {
|
||||
print_time(rec->time_us);
|
||||
print_time(rec->time_us - prev);
|
||||
print_grouped_ull(rec->time_us, BOOTSTAGE_DIGITS);
|
||||
print_grouped_ull(rec->time_us - prev, BOOTSTAGE_DIGITS);
|
||||
}
|
||||
printf(" %s\n", get_record_name(buf, sizeof(buf), rec));
|
||||
|
||||
|
|
|
@ -178,4 +178,15 @@ int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
|||
#define vscnprintf(buf, size, fmt, args...) vsprintf(buf, fmt, ##args)
|
||||
#endif /* CONFIG_SYS_VSNPRINTF */
|
||||
|
||||
/**
|
||||
* print_grouped_ull() - print a value with digits grouped by ','
|
||||
*
|
||||
* This prints a value with grouped digits, like 12,345,678 to make it easier
|
||||
* to read.
|
||||
*
|
||||
* @val: Value to print
|
||||
* @digits: Number of digiits to print
|
||||
*/
|
||||
void print_grouped_ull(unsigned long long int_val, int digits);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -870,3 +870,19 @@ char *simple_itoa(ulong i)
|
|||
} while (i > 0);
|
||||
return p + 1;
|
||||
}
|
||||
|
||||
/* We don't seem to have %'d in U-Boot */
|
||||
void print_grouped_ull(unsigned long long int_val, int digits)
|
||||
{
|
||||
char str[21], *s;
|
||||
int grab = 3;
|
||||
|
||||
digits = (digits + 2) / 3;
|
||||
sprintf(str, "%*llu", digits * 3, int_val);
|
||||
for (s = str; *s; s += grab) {
|
||||
if (s != str)
|
||||
putc(s[-1] != ' ' ? ',' : ' ');
|
||||
printf("%.*s", grab, s);
|
||||
grab = 3;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue