Lines Matching refs:vdso
59 static inline u64 vgetsns(struct vdso_data *vdso) in vgetsns() argument
61 return ((get_cycles() - vdso->cycle_last) & vdso->mask) * vdso->mult; in vgetsns()
64 static inline int do_realtime(struct vdso_data *vdso, struct timespec *ts) in do_realtime() argument
70 count = read_seqcount_begin(&vdso->tb_seq); in do_realtime()
71 ts->tv_sec = vdso->wall_time_sec; in do_realtime()
72 ns = vdso->wall_time_snsec; in do_realtime()
73 ns += vgetsns(vdso); in do_realtime()
74 ns >>= vdso->shift; in do_realtime()
75 } while (unlikely(read_seqcount_retry(&vdso->tb_seq, count))); in do_realtime()
83 static inline int do_monotonic(struct vdso_data *vdso, struct timespec *ts) in do_monotonic() argument
89 count = read_seqcount_begin(&vdso->tb_seq); in do_monotonic()
90 ts->tv_sec = vdso->monotonic_time_sec; in do_monotonic()
91 ns = vdso->monotonic_time_snsec; in do_monotonic()
92 ns += vgetsns(vdso); in do_monotonic()
93 ns >>= vdso->shift; in do_monotonic()
94 } while (unlikely(read_seqcount_retry(&vdso->tb_seq, count))); in do_monotonic()
102 static inline int do_realtime_coarse(struct vdso_data *vdso, in do_realtime_coarse() argument
108 count = read_seqcount_begin(&vdso->tb_seq); in do_realtime_coarse()
109 ts->tv_sec = vdso->wall_time_coarse_sec; in do_realtime_coarse()
110 ts->tv_nsec = vdso->wall_time_coarse_nsec; in do_realtime_coarse()
111 } while (unlikely(read_seqcount_retry(&vdso->tb_seq, count))); in do_realtime_coarse()
116 static inline int do_monotonic_coarse(struct vdso_data *vdso, in do_monotonic_coarse() argument
122 count = read_seqcount_begin(&vdso->tb_seq); in do_monotonic_coarse()
123 ts->tv_sec = vdso->monotonic_time_coarse_sec; in do_monotonic_coarse()
124 ts->tv_nsec = vdso->monotonic_time_coarse_nsec; in do_monotonic_coarse()
125 } while (unlikely(read_seqcount_retry(&vdso->tb_seq, count))); in do_monotonic_coarse()
135 struct vdso_data *vdso = (struct vdso_data *)get_datapage(); in __vdso_gettimeofday() local
140 count = read_seqcount_begin(&vdso->tz_seq); in __vdso_gettimeofday()
141 tz->tz_minuteswest = vdso->tz_minuteswest; in __vdso_gettimeofday()
142 tz->tz_dsttime = vdso->tz_dsttime; in __vdso_gettimeofday()
143 } while (unlikely(read_seqcount_retry(&vdso->tz_seq, count))); in __vdso_gettimeofday()
149 do_realtime(vdso, (struct timespec *)tv); in __vdso_gettimeofday()
176 struct vdso_data *vdso = (struct vdso_data *)get_datapage(); in __vdso_clock_gettime() local
181 do_realtime(vdso, ts); in __vdso_clock_gettime()
184 do_monotonic(vdso, ts); in __vdso_clock_gettime()
187 do_realtime_coarse(vdso, ts); in __vdso_clock_gettime()
190 do_monotonic_coarse(vdso, ts); in __vdso_clock_gettime()