You can check if check_ptp_offset() function from the following code in the Avnu repo helps. https://github.com/Avnu/tsn-doc/blob/master/misc/check_clocks.c
Thanks, Venkatesan On Thu, Apr 29, 2021 at 9:53 AM Chris Rajula <superraj...@gmail.com> wrote: > Thank you for your response! > > I'm now even more curious as to what the offset value printed by the > LinuxPTP tools actually mean. > > I assumed that since those tools are capable of printing the offset, they > contain code which does just that. > > In my naïve view, I thought that once the slave had been synchronized, the > slave's clock frequency/phase had been adjusted to be somewhat 'locked' to > the freq/phase of the master's clock. > > Isn't that the whole purpose behind PTP? > Keeping track on the difference between master and slave values of seconds > and nanoseconds and adjusting the slave's clock frequency so that slave > calls to eg. clock_realtime result in values with high accuracy (i.e that > the error between slave time and master time is kept low). > > /Alex > > Den tors 29 apr. 2021 00:39Jacob Keller <jacob.e.kel...@intel.com> skrev: > >> >> >> On 4/28/2021 10:14 AM, Chris Rajula wrote: >> > Thank you! >> > >> > It seems like setting the 'step_threshold' solved the stepping issue >> for me. >> > >> > Now, for a follow-up question: >> > I've looked but have not yet found any guide(s) on how to perform the >> > following from within a C program: >> > >> > * Retrieve the master's time >> > * Retrieve the offset between the slave's time and the master's time >> > >> >> So, retrieving offset between the two clocks is pretty complex (hence >> the entire reason PTP exists.. synchronizing clocks is hard!) >> >> You can't just "clock_gettime" on each clock and compare. How do you >> know those times were captured at the same time? >> >> You might be able to use more advanced comparison methods such as PCIe >> PTM (if the clock hardware on the PCIe device supports it, and if you're >> comparing to the ART derived TSC clock...) >> >> For local clocks you could also use the clock comparison functions that >> have the kernel take clock_gettime inside the kernel and use an average. >> But that is just an average, not very precise. >> >> > I assume that it should be as simple as executing two calls to >> > 'clock_gettime', but that implies that I'll have to pass the correct >> > 'clockid_t' values to 'clock_gettime. >> > Getting the system's main clock should be simple by just passing >> > CLOCK_REALTIME, but how can I determine which value of 'clockid_t' >> > corresponds to the slave's PTP-synchronized clock? >> > >> >> You can use ethtool -T to get the PTP clock device, however.... See above. >> >> > I've sifted through 'include/uapi/linux/time.h' but I can't seem to find >> > any PTP-related clock definitions there. >> > Or is my only recourse to go through the LinuxPTP userspace code? >> > >> > Thanks, >> > /Alex >> >> I would recommend looking at how the ioctls for PTP. I don't think there >> are generic offset comparison functions for clocks in general. >> >> Thanks, >> Jake >> >> >> _______________________________________________ >> Linuxptp-users mailing list >> Linuxptp-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linuxptp-users >> > _______________________________________________ > Linuxptp-users mailing list > Linuxptp-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxptp-users >
_______________________________________________ Linuxptp-users mailing list Linuxptp-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-users