Lines Matching refs:vd
35 static inline bool vdso_clocksource_ok(const struct vdso_data *vd) in vdso_clocksource_ok() argument
37 return vd->clock_mode != VDSO_CLOCKMODE_NONE; in vdso_clocksource_ok()
52 const struct vdso_data *vd; in do_hres_timens() local
59 vd = vdns - (clk == CLOCK_MONOTONIC_RAW ? CS_RAW : CS_HRES_COARSE); in do_hres_timens()
60 vd = __arch_get_timens_vdso_data(vd); in do_hres_timens()
62 vd = &vd[CS_HRES_COARSE]; in do_hres_timens()
64 vd = &vd[CS_RAW]; in do_hres_timens()
65 vdso_ts = &vd->basetime[clk]; in do_hres_timens()
68 seq = vdso_read_begin(vd); in do_hres_timens()
70 if (unlikely(!vdso_clocksource_ok(vd))) in do_hres_timens()
73 cycles = __arch_get_hw_counter(vd->clock_mode, vd); in do_hres_timens()
77 last = vd->cycle_last; in do_hres_timens()
78 ns += vdso_calc_delta(cycles, last, vd->mask, vd->mult); in do_hres_timens()
79 ns = vdso_shift_ns(ns, vd->shift); in do_hres_timens()
81 } while (unlikely(vdso_read_retry(vd, seq))); in do_hres_timens()
98 const struct vdso_data *__arch_get_timens_vdso_data(const struct vdso_data *vd) in __arch_get_timens_vdso_data() argument
110 static __always_inline int do_hres(const struct vdso_data *vd, clockid_t clk, in do_hres() argument
113 const struct vdso_timestamp *vdso_ts = &vd->basetime[clk]; in do_hres()
133 while (unlikely((seq = READ_ONCE(vd->seq)) & 1)) { in do_hres()
135 vd->clock_mode == VDSO_CLOCKMODE_TIMENS) in do_hres()
136 return do_hres_timens(vd, clk, ts); in do_hres()
141 if (unlikely(!vdso_clocksource_ok(vd))) in do_hres()
144 cycles = __arch_get_hw_counter(vd->clock_mode, vd); in do_hres()
148 last = vd->cycle_last; in do_hres()
149 ns += vdso_calc_delta(cycles, last, vd->mask, vd->mult); in do_hres()
150 ns = vdso_shift_ns(ns, vd->shift); in do_hres()
152 } while (unlikely(vdso_read_retry(vd, seq))); in do_hres()
168 const struct vdso_data *vd = __arch_get_timens_vdso_data(vdns); in do_coarse_timens() local
169 const struct vdso_timestamp *vdso_ts = &vd->basetime[clk]; in do_coarse_timens()
176 seq = vdso_read_begin(vd); in do_coarse_timens()
179 } while (unlikely(vdso_read_retry(vd, seq))); in do_coarse_timens()
201 static __always_inline int do_coarse(const struct vdso_data *vd, clockid_t clk, in do_coarse() argument
204 const struct vdso_timestamp *vdso_ts = &vd->basetime[clk]; in do_coarse()
212 while ((seq = READ_ONCE(vd->seq)) & 1) { in do_coarse()
214 vd->clock_mode == VDSO_CLOCKMODE_TIMENS) in do_coarse()
215 return do_coarse_timens(vd, clk, ts); in do_coarse()
222 } while (unlikely(vdso_read_retry(vd, seq))); in do_coarse()
228 __cvdso_clock_gettime_common(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_gettime_common() argument
243 vd = &vd[CS_HRES_COARSE]; in __cvdso_clock_gettime_common()
245 return do_coarse(&vd[CS_HRES_COARSE], clock, ts); in __cvdso_clock_gettime_common()
247 vd = &vd[CS_RAW]; in __cvdso_clock_gettime_common()
251 return do_hres(vd, clock, ts); in __cvdso_clock_gettime_common()
255 __cvdso_clock_gettime_data(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_gettime_data() argument
258 int ret = __cvdso_clock_gettime_common(vd, clock, ts); in __cvdso_clock_gettime_data()
273 __cvdso_clock_gettime32_data(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_gettime32_data() argument
279 ret = __cvdso_clock_gettime_common(vd, clock, &ts); in __cvdso_clock_gettime32_data()
299 __cvdso_gettimeofday_data(const struct vdso_data *vd, in __cvdso_gettimeofday_data() argument
306 if (do_hres(&vd[CS_HRES_COARSE], CLOCK_REALTIME, &ts)) in __cvdso_gettimeofday_data()
315 vd->clock_mode == VDSO_CLOCKMODE_TIMENS) in __cvdso_gettimeofday_data()
316 vd = __arch_get_timens_vdso_data(vd); in __cvdso_gettimeofday_data()
318 tz->tz_minuteswest = vd[CS_HRES_COARSE].tz_minuteswest; in __cvdso_gettimeofday_data()
319 tz->tz_dsttime = vd[CS_HRES_COARSE].tz_dsttime; in __cvdso_gettimeofday_data()
333 __cvdso_time_data(const struct vdso_data *vd, __kernel_old_time_t *time) in __cvdso_time_data() argument
338 vd->clock_mode == VDSO_CLOCKMODE_TIMENS) in __cvdso_time_data()
339 vd = __arch_get_timens_vdso_data(vd); in __cvdso_time_data()
341 t = READ_ONCE(vd[CS_HRES_COARSE].basetime[CLOCK_REALTIME].sec); in __cvdso_time_data()
357 int __cvdso_clock_getres_common(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_getres_common() argument
368 vd->clock_mode == VDSO_CLOCKMODE_TIMENS) in __cvdso_clock_getres_common()
369 vd = __arch_get_timens_vdso_data(vd); in __cvdso_clock_getres_common()
380 ns = READ_ONCE(vd[CS_HRES_COARSE].hrtimer_res); in __cvdso_clock_getres_common()
398 int __cvdso_clock_getres_data(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_getres_data() argument
401 int ret = __cvdso_clock_getres_common(vd, clock, res); in __cvdso_clock_getres_data()
416 __cvdso_clock_getres_time32_data(const struct vdso_data *vd, clockid_t clock, in __cvdso_clock_getres_time32_data() argument
422 ret = __cvdso_clock_getres_common(vd, clock, &ts); in __cvdso_clock_getres_time32_data()