[U-Boot] [PATCH 3/7] Add timing information to printf's for use with bootgraph.pl

Graeme Russ graeme.russ at gmail.com
Thu Sep 1 01:38:01 CEST 2011


Hi Mike, Andrew,

On Thu, Sep 1, 2011 at 8:47 AM, Mike Frysinger <vapier at gentoo.org> wrote:
> On Wednesday, August 31, 2011 18:20:57 Andrew Murray wrote:
>>       va_list args;
>>       uint i;
>>       char printbuffer[CONFIG_SYS_PBSIZE];
>> +     char *buf = printbuffer;
>>
>>       va_start(args, fmt);
>>
>> +#if defined(CONFIG_BOOT_TRACE)
>> +     unsigned long long ticks = get_ticks();
>> +     int secs = ticks / get_tbclk();
>> +     int msec = ((ticks * 1000000) / get_tbclk()) - (secs * 1000000);
>> +
>> +     i += sprintf(buf, "[%5lu.%06lu] ", secs, msec);
>> +     buf += i;
>> +#endif
>> +
>>       /* For this to work, printbuffer must be larger than
>>        * anything we ever want to print.
>>        */
>> -     i = vsprintf(printbuffer, fmt, args);
>> +     i += vsprintf(buf, fmt, args);
>>       va_end(args);
>
> NAK for a few reasons:
>  - i dont see how this could possibly compile warning free
>  - you never initialize "i", only added to it
>  - you call va_start() inbetween variable decls

And correct me if I'm wrong, but EVERY printf() will get the timing info
tacked on - Even the ones without \n which are intermediate prints in
larger messages which is going to lead to very ugly outputs

I think instead we should look at another 'printf() with timestamp'
function which can be used on an as-needed basis

Regards,

Graeme


More information about the U-Boot mailing list