kernel/time/ntp.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-)
The following commit has been merged into the timers/core branch of tip:
Commit-ID: ec93ec22aa10fb5311c0f068ee66c5b6d39788fe
Gitweb: https://git.kernel.org/tip/ec93ec22aa10fb5311c0f068ee66c5b6d39788fe
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Wed, 11 Sep 2024 15:17:44 +02:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Wed, 02 Oct 2024 16:53:39 +02:00
ntp: Move tick_length* into ntp_data
Continue the conversion from static variables to struct based data.
No functional change.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: John Stultz <jstultz@google.com>
Link: https://lore.kernel.org/all/20240911-devel-anna-maria-b4-timers-ptp-ntp-v1-8-2d52f4e13476@linutronix.de
---
kernel/time/ntp.c | 34 ++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index f95f233..2430e69 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
@@ -25,20 +25,21 @@
/**
* struct ntp_data - Structure holding all NTP related state
* @tick_usec: USER_HZ period in microseconds
+ * @tick_length: Adjusted tick length
+ * @tick_length_base: Base value for @tick_length
*
* Protected by the timekeeping locks.
*/
struct ntp_data {
unsigned long tick_usec;
+ u64 tick_length;
+ u64 tick_length_base;
};
static struct ntp_data tk_ntp_data = {
.tick_usec = USER_TICK_USEC,
};
-static u64 tick_length;
-static u64 tick_length_base;
-
#define SECS_PER_DAY 86400
#define MAX_TICKADJ 500LL /* usecs */
#define MAX_TICKADJ_SCALED \
@@ -263,8 +264,8 @@ static void ntp_update_frequency(struct ntp_data *ntpdata)
* Don't wait for the next second_overflow, apply the change to the
* tick length immediately:
*/
- tick_length += new_base - tick_length_base;
- tick_length_base = new_base;
+ ntpdata->tick_length += new_base - ntpdata->tick_length_base;
+ ntpdata->tick_length_base = new_base;
}
static inline s64 ntp_update_offset_fll(s64 offset64, long secs)
@@ -341,8 +342,8 @@ static void __ntp_clear(struct ntp_data *ntpdata)
ntp_update_frequency(ntpdata);
- tick_length = tick_length_base;
- time_offset = 0;
+ ntpdata->tick_length = ntpdata->tick_length_base;
+ time_offset = 0;
ntp_next_leap_sec = TIME64_MAX;
/* Clear PPS state variables */
@@ -360,7 +361,7 @@ void ntp_clear(void)
u64 ntp_tick_length(void)
{
- return tick_length;
+ return tk_ntp_data.tick_length;
}
/**
@@ -391,6 +392,7 @@ ktime_t ntp_get_next_leap(void)
*/
int second_overflow(time64_t secs)
{
+ struct ntp_data *ntpdata = &tk_ntp_data;
s64 delta;
int leap = 0;
s32 rem;
@@ -451,11 +453,11 @@ int second_overflow(time64_t secs)
}
/* Compute the phase adjustment for the next second */
- tick_length = tick_length_base;
+ ntpdata->tick_length = ntpdata->tick_length_base;
- delta = ntp_offset_chunk(time_offset);
- time_offset -= delta;
- tick_length += delta;
+ delta = ntp_offset_chunk(time_offset);
+ time_offset -= delta;
+ ntpdata->tick_length += delta;
/* Check PPS signal */
pps_dec_valid();
@@ -465,18 +467,18 @@ int second_overflow(time64_t secs)
if (time_adjust > MAX_TICKADJ) {
time_adjust -= MAX_TICKADJ;
- tick_length += MAX_TICKADJ_SCALED;
+ ntpdata->tick_length += MAX_TICKADJ_SCALED;
goto out;
}
if (time_adjust < -MAX_TICKADJ) {
time_adjust += MAX_TICKADJ;
- tick_length -= MAX_TICKADJ_SCALED;
+ ntpdata->tick_length -= MAX_TICKADJ_SCALED;
goto out;
}
- tick_length += (s64)(time_adjust * NSEC_PER_USEC / NTP_INTERVAL_FREQ)
- << NTP_SCALE_SHIFT;
+ ntpdata->tick_length += (s64)(time_adjust * NSEC_PER_USEC / NTP_INTERVAL_FREQ)
+ << NTP_SCALE_SHIFT;
time_adjust = 0;
out:
© 2016 - 2024 Red Hat, Inc.