Messages in this thread | | | From | Rasmus Villemoes <> | Subject | Re: [PATCH v1 04/25] lib/vsprintf: Print time and date in human readable format via %pt | Date | Thu, 08 Jun 2017 22:42:40 +0200 |
| |
On Thu, Jun 08 2017, Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
> On Thu, Jun 8, 2017 at 9:41 PM, Alexandre Belloni > <alexandre.belloni@free-electrons.com> wrote: >> On 08/06/2017 at 20:57:05 +0300, Andy Shevchenko wrote: >>> On Thu, Jun 8, 2017 at 6:05 PM, Alexandre Belloni >>> <alexandre.belloni@free-electrons.com> wrote: > >>> > I understand this may not fit your debugging needs but what about pretty >>> > printing time64_t and using rtc_tm_to_time64? >>> >>> There are two downsides as I can see: >>> 1) conversion to and from just for that; >> >> Those are almost all debug messages, I would be fine with that. > > Yeah, but the problem is to pass the reference. All dances around will > uglify the code. > (Obviously we can't pass timespec64/time64_t or anything longer than > 32 bits as is in %p extension) >
I like that this gets rid of some mm/dd/yy and other more or less random format and ends up standardizing yyyy-mm-dd HH:MM:SS. However, I do think %pt should take either ktime_t or timespec64 (obviously by reference), with fx these options
[ir] ISO (yyyy-mm-dd HH:MM:SS) or raw (seconds since epoch) [n] append nanoseconds (.%09ld).
Please don't give people the option of eliding either the time or the date; I've spent too much time dealing with syslog files that don't include the year in the timestamps.
Getting a timespec64* or ktime_t* from <something else> is not that bad. There's the compound literal option
#define rtc_tm2timespec64p(tm) \ (&(struct timespec64){ .tv_sec = rtc_tm_to_time64(tm), .tv_nsec = 0 })
printk("%pt", rtc_tm2timespec64p(tm))
or the two-extra-lines per call-site
struct timespec64 ts; rtc_tm2time64(tm, &ts) printk("%pt", &ts)
Rasmus
| |