[PATCH v3 4/4] vdso/gettimeofday: Add support for CLOCK_REALTIME_ALARM
From: Thomas Weißschuh
Date: Tue Nov 10 2026 - 08:54:55 EST
CLOCK_REALTIME_ALARM behaves exactly as CLOCK_REALTIME as far as the
vDSO is concerned. The vDSO library can handle it automatically
correctly. Only the basetime needs to be maintained during the tick.
Reuse the CLOCK_REALTIME basetime for CLOCK_REALTIME_ALARM and update
the userspace hres clock mask to include CLOCK_REALTIME_ALARM.
Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
---
include/vdso/datapage.h | 3 ++-
kernel/time/vsyscall.c | 4 ++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
index 49f388a54e6a..a239a2861d0e 100644
--- a/include/vdso/datapage.h
+++ b/include/vdso/datapage.h
@@ -40,7 +40,8 @@ struct vdso_arch_data {
BIT(CLOCK_MONOTONIC_COARSE))
#define VDSO_RAW (BIT(CLOCK_MONOTONIC_RAW))
#define VDSO_AUX __GENMASK(CLOCK_AUX_LAST, CLOCK_AUX)
-#define VDSO_ALARM BIT(CLOCK_BOOTTIME_ALARM)
+#define VDSO_ALARM (BIT(CLOCK_BOOTTIME_ALARM) | \
+ BIT(CLOCK_REALTIME_ALARM))
/**
* struct vdso_timestamp - basetime per clock_id
diff --git a/kernel/time/vsyscall.c b/kernel/time/vsyscall.c
index 4231b04aec2c..2125c462913b 100644
--- a/kernel/time/vsyscall.c
+++ b/kernel/time/vsyscall.c
@@ -81,6 +81,10 @@ static inline void update_vdso_time_data(struct vdso_time_data *vdata, struct ti
vdso_ts = &vdata->hres_coarse.basetime[CLOCK_TAI];
vdso_ts->sec = tk->xtime_sec + (s64)tk->tai_offset;
vdso_ts->nsec = tk->tkr_mono.xtime_nsec;
+
+ /* CLOCK_REALTIME_ALARM, copy of CLOCK_REALTIME */
+ vdso_ts = &vdata->hres_coarse.basetime[CLOCK_REALTIME_ALARM];
+ *vdso_ts = vdata->hres_coarse.basetime[CLOCK_REALTIME];
}
void update_vsyscall(struct timekeeper *tk)
--
2.56.0