Re: Getting time in realtime kernel driver

Philippe Gerum <[email protected]>
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
François Legal <[email protected]> writes:

> Le Mercredi, Mai 13, 2026 09:19 CEST, Philippe Gerum <[email protected]> a écrit: 
>  
>> Jan Kiszka <[email protected]> writes:
>> 
>> > On 12.05.26 18:20, François Legal wrote:
>> >> Hello,
>> >> 
>> >> I think I already asked about the same question some time ago, but I think I did not get a working answer, so here I am again.
>> >> 
>> >> On xenomai 3.2 + Ipipe (linux 5.4), I need to be able to get in a RT driver the current linux wall clock (impacted from NTP or PTP).
>> >> I found out I get the correct value with ktime_get_real_ts64. Was willing to use __ktime_get_real_seconds but this one is not precise enought for my application.
>> >> 
>> >> So my question is : is it safe to use ktime_get_real_ts64 from within an RT driver ioctl function, and if not, which API in xenomai gives the exact same time as this one ?
>> >> 
>> >
>> > Nope, it's not safe, neither under legacy I-pipe (your kernel is dead
>> > BTW) nor latest dovetail. Userspace access to the wallclock was hardened
>> > for out-of-band accesses, but in-kernel had no use case, thus was never
>> > considered.
>> >
>> > For userland, the easiest answer is moving to a dovetail kernel and then
>> > using CLOCK_REALTIME. Over I-pipe, we had to model this via a separate
>> > clock named CLOCK_HOST_REALTIME.
>> >
>> > Jan
>> 
>> This may help:
>> 
>> "ktime_get_real_fast_ns: - NMI safe and fast access to clock realtime."
>> 
>> Caveat: with this variant, timestamp is not guaranteed to be monotonic
>> across an update.
>> 
>> -- 
>> Philippe.
>  
> Thanks Philippe.
>
> I tried this one, but I get the same result as with __ktime_get_real_seconds, the date I get is always 1 second late (I get 52 seconds when the actual clock is at 53).
>

What is the exact content of the timespecs?

i.e. as received from:

- ktime_to_timespec64(ktime_get_real_fast_ns()) in kernel space

- clock_gettime(CLOCK_REALTIME, &ts) in userland - assuming this is the
  way you retrieve the reference clock value to compare with.

-- 
Philippe.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.