Re: [PATCH v1 04/25] lib/vsprintf: Print time and date in human readable format via %pt

From: Andy Shevchenko
Date: Thu Jun 08 2017 - 17:25:19 EST


On Thu, Jun 8, 2017 at 11:42 PM, Rasmus Villemoes
<linux@xxxxxxxxxxxxxxxxxx> wrote:
> On Thu, Jun 08 2017, Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote:
>> On Thu, Jun 8, 2017 at 9:41 PM, Alexandre Belloni
>> <alexandre.belloni@xxxxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxx> wrote:

>> 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),

I will try to look in this direction.

> with fx these options
>
> [ir] ISO (yyyy-mm-dd HH:MM:SS) or raw (seconds since epoch)
> [n] append nanoseconds (.%09ld).

We still need to be able to print time *and/or* year groups
separately. There are users which provide that via procfs or sysfs
(ABI).

> 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.

I understand that, but see above.

> Getting a timespec64* or ktime_t* from <something else> is not that
> bad. There's the compound literal option

Will look at it later, thanks for it.

>
> #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)


--
With Best Regards,
Andy Shevchenko