From: Vadim Fedorenko <vadim.fedorenko@linux.dev>
To: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>
Cc: netdev@vger.kernel.org,
"Richard Cochran" <richardcochran@gmail.com>,
"Christopher Hall" <christopher.s.hall@intel.com>,
"John Stultz" <jstultz@google.com>,
"Frederic Weisbecker" <frederic@kernel.org>,
"Anna-Maria Behnsen" <anna-maria@linutronix.de>,
"Miroslav Lichvar" <mlichvar@redhat.com>,
"Werner Abt" <werner.abt@meinberg-usa.com>,
"David Woodhouse" <dwmw2@infradead.org>,
"Stephen Boyd" <sboyd@kernel.org>,
"Thomas Weißschuh" <thomas.weissschuh@linutronix.de>,
"Kurt Kanzenbach" <kurt@linutronix.de>,
"Nam Cao" <namcao@linutronix.de>,
"Antoine Tenart" <atenart@kernel.org>
Subject: Re: [patch 1/3] timekeeping: Provide ktime_get_clock_ts64()
Date: Sun, 29 Jun 2025 16:49:14 +0100 [thread overview]
Message-ID: <745fd720-4cf5-42c4-9cb6-a4932c6f68ee@linux.dev> (raw)
In-Reply-To: <20250626131708.419101339@linutronix.de>
On 26/06/2025 14:27, Thomas Gleixner wrote:
> PTP implements an inline switch case for taking timestamps from various
> POSIX clock IDs, which already consumes quite some text space. Expanding it
> for auxiliary clocks really becomes too big for inlining.
>
> Provide a out of line version.
>
> The function invalidates the timestamp in case the clock is invalid. The
> invalidation allows to implement a validation check without the need to
> propagate a return value through deep existing call chains.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
> include/linux/timekeeping.h | 1 +
> kernel/time/timekeeping.c | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 35 insertions(+)
>
> --- a/include/linux/timekeeping.h
> +++ b/include/linux/timekeeping.h
> @@ -44,6 +44,7 @@ extern void ktime_get_ts64(struct timesp
> extern void ktime_get_real_ts64(struct timespec64 *tv);
> extern void ktime_get_coarse_ts64(struct timespec64 *ts);
> extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);
> +extern void ktime_get_clock_ts64(clockid_t id, struct timespec64 *ts);
>
> /* Multigrain timestamp interfaces */
> extern void ktime_get_coarse_real_ts64_mg(struct timespec64 *ts);
> --- a/kernel/time/timekeeping.c
> +++ b/kernel/time/timekeeping.c
> @@ -1636,6 +1636,40 @@ void ktime_get_raw_ts64(struct timespec6
> EXPORT_SYMBOL(ktime_get_raw_ts64);
>
> /**
> + * ktime_get_clock_ts64 - Returns time of a clock in a timespec
> + * @id: POSIX clock ID of the clock to read
> + * @ts: Pointer to the timespec64 to be set
> + *
> + * The timestamp is invalidated (@ts->sec is set to -1) if the
> + * clock @id is not available.
> + */
> +void ktime_get_clock_ts64(clockid_t id, struct timespec64 *ts)
> +{
> + /* Invalidate time stamp */
> + ts->tv_sec = -1;
> + ts->tv_nsec = 0;
> +
> + switch (id) {
> + case CLOCK_REALTIME:
> + ktime_get_real_ts64(ts);
> + return;
> + case CLOCK_MONOTONIC:
> + ktime_get_ts64(ts);
> + return;
> + case CLOCK_MONOTONIC_RAW:
> + ktime_get_raw_ts64(ts);
> + return;
> + case CLOCK_AUX ... CLOCK_AUX_LAST:
> + if (IS_ENABLED(CONFIG_POSIX_AUX_CLOCKS))
> + ktime_get_aux_ts64(id, ts);
> + return;
> + default:
> + WARN_ON_ONCE(1);
> + }
> +}
> +EXPORT_SYMBOL_GPL(ktime_get_clock_ts64);
> +
> +/**
> * timekeeping_valid_for_hres - Check if timekeeping is suitable for hres
> */
> int timekeeping_valid_for_hres(void)
>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
next prev parent reply other threads:[~2025-06-29 15:49 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 13:27 [patch 0/3] ptp: Provide support for auxiliary clocks for PTP_SYS_OFFSET_EXTENDED Thomas Gleixner
2025-06-26 13:27 ` [patch 1/3] timekeeping: Provide ktime_get_clock_ts64() Thomas Gleixner
2025-06-27 5:22 ` John Stultz
2025-06-29 15:49 ` Vadim Fedorenko [this message]
2025-06-26 13:27 ` [patch 2/3] ptp: Use ktime_get_clock_ts64() for timestamping Thomas Gleixner
2025-06-27 5:23 ` John Stultz
2025-06-29 15:50 ` Vadim Fedorenko
2025-06-26 13:27 ` [patch 3/3] ptp: Enable auxiliary clocks for PTP_SYS_OFFSET_EXTENDED Thomas Gleixner
2025-06-29 15:57 ` Vadim Fedorenko
2025-07-01 13:00 ` Thomas Gleixner
2025-06-26 14:53 ` [patch 0/3] ptp: Provide support for " Miroslav Lichvar
2025-06-26 18:36 ` Thomas Gleixner
2025-07-01 10:16 ` Paolo Abeni
2025-07-01 12:23 ` Thomas Gleixner
2025-07-01 23:56 ` Jakub Kicinski
2025-07-02 8:19 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=745fd720-4cf5-42c4-9cb6-a4932c6f68ee@linux.dev \
--to=vadim.fedorenko@linux.dev \
--cc=anna-maria@linutronix.de \
--cc=atenart@kernel.org \
--cc=christopher.s.hall@intel.com \
--cc=dwmw2@infradead.org \
--cc=frederic@kernel.org \
--cc=jstultz@google.com \
--cc=kurt@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mlichvar@redhat.com \
--cc=namcao@linutronix.de \
--cc=netdev@vger.kernel.org \
--cc=richardcochran@gmail.com \
--cc=sboyd@kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.weissschuh@linutronix.de \
--cc=werner.abt@meinberg-usa.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.