RE: [EXT] Re: [PATCH v1] timer:clock:ptp: add support the dynamic posix clock alarm set for ptp

From: Po Liu
Date: Tue May 07 2019 - 23:31:06 EST


Hi Richard,

Thank you for your reply.


Br,
Po Liu

> -----Original Message-----
> From: Richard Cochran [mailto:richardcochran@xxxxxxxxx]
> Sent: 2019年5月7日 21:50
> To: Po Liu <po.liu@xxxxxxx>
> Cc: netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linuxppc-
> dev@xxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Y.b. Lu
> <yangbo.lu@xxxxxxx>; Claudiu Manoil <claudiu.manoil@xxxxxxx>;
> davem@xxxxxxxxxxxxx; Leo Li <leoyang.li@xxxxxxx>; Roy Zang
> <roy.zang@xxxxxxx>; Mingkai Hu <mingkai.hu@xxxxxxx>;
> deepa.kernel@xxxxxxxxx
> Subject: [EXT] Re: [PATCH v1] timer:clock:ptp: add support the dynamic posix
> clock alarm set for ptp
>
> Caution: EXT Email
>
> On Sun, May 05, 2019 at 05:02:05AM +0000, Po Liu wrote:
> > Current kernel code do not support the dynamic posix clock alarm set.
> > This code would support it by the posix timer structure.
> >
> > 319 const struct k_clock clock_posix_dynamic = {
> >
> > 320 .clock_getres = pc_clock_getres,
> > 321 .clock_set = pc_clock_settime,
> > 322 .clock_get = pc_clock_gettime,
> > 323 .clock_adj = pc_clock_adjtime,
> > 324 + .timer_create = pc_timer_create,
> > 325 + .timer_del = pc_timer_delete,
> > 326 + .timer_set = pc_timer_set,
> > 327 + .timer_arm = pc_timer_arm,
> > }
> >
>
> Sorry, NAK, since we decided some time ago not to support timer_* operations
> on dynamic clocks. You get much better application level timer performance
> by synchronizing CLOCK_REALTIME to your PHC and using clock_nanosleep()
> with CLOCK_REALTIME or CLOCK_MONOTONIC.

The code intend to get alarm by interrupt of ptp hardware. The code to fix ptp not support to application layer to get the alarm interrupt.
Do you mean the synchronizing at application layer by PHC (using clock_nanosleep()) to the CLOCK_REALTIME source? Then the kernel could using the hrtimer with CLOCK_REALTIME?

>
> > This won't change the user space system call code. Normally the user
> > space set alarm by timer_create() and timer_settime(). Reference code
> > are tools/testing/selftests/ptp/testptp.c.
>
> That program still has misleading examples. Sorry about that. I'll submit a
> patch to remove them.

Is there any replace method for an application code to get alarm interrupt by the ptp source?

>
> > +static int pc_timer_create(struct k_itimer *new_timer) {
> > + return 0;
> > +}
> > +
>
> This of course would never work. Consider what happens when two or more
> timers are created and armed.
>
> Thanks,
> Richard