aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/hrtimer.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 485a634fd6e2..28259c336679 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -112,6 +112,7 @@ enum hrtimer_cb_mode {
112struct hrtimer { 112struct hrtimer {
113 struct rb_node node; 113 struct rb_node node;
114 ktime_t _expires; 114 ktime_t _expires;
115 ktime_t _softexpires;
115 enum hrtimer_restart (*function)(struct hrtimer *); 116 enum hrtimer_restart (*function)(struct hrtimer *);
116 struct hrtimer_clock_base *base; 117 struct hrtimer_clock_base *base;
117 unsigned long state; 118 unsigned long state;
@@ -220,20 +221,37 @@ static inline int hrtimer_is_hres_active(struct hrtimer *timer)
220static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) 221static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time)
221{ 222{
222 timer->_expires = time; 223 timer->_expires = time;
224 timer->_softexpires = time;
223} 225}
226
227static inline void hrtimer_set_expires_range(struct hrtimer *timer, ktime_t time, ktime_t delta)
228{
229 timer->_softexpires = time;
230 timer->_expires = ktime_add_safe(time, delta);
231}
232
233static inline void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, unsigned long delta)
234{
235 timer->_softexpires = time;
236 timer->_expires = ktime_add_safe(time, ns_to_ktime(delta));
237}
238
224static inline void hrtimer_set_expires_tv64(struct hrtimer *timer, s64 tv64) 239static inline void hrtimer_set_expires_tv64(struct hrtimer *timer, s64 tv64)
225{ 240{
226 timer->_expires.tv64 = tv64; 241 timer->_expires.tv64 = tv64;
242 timer->_softexpires.tv64 = tv64;
227} 243}
228 244
229static inline void hrtimer_add_expires(struct hrtimer *timer, ktime_t time) 245static inline void hrtimer_add_expires(struct hrtimer *timer, ktime_t time)
230{ 246{
231 timer->_expires = ktime_add_safe(timer->_expires, time); 247 timer->_expires = ktime_add_safe(timer->_expires, time);
248 timer->_softexpires = ktime_add_safe(timer->_softexpires, time);
232} 249}
233 250
234static inline void hrtimer_add_expires_ns(struct hrtimer *timer, unsigned long ns) 251static inline void hrtimer_add_expires_ns(struct hrtimer *timer, unsigned long ns)
235{ 252{
236 timer->_expires = ktime_add_ns(timer->_expires, ns); 253 timer->_expires = ktime_add_ns(timer->_expires, ns);
254 timer->_softexpires = ktime_add_ns(timer->_softexpires, ns);
237} 255}
238 256
239static inline ktime_t hrtimer_get_expires(const struct hrtimer *timer) 257static inline ktime_t hrtimer_get_expires(const struct hrtimer *timer)
@@ -241,10 +259,19 @@ static inline ktime_t hrtimer_get_expires(const struct hrtimer *timer)
241 return timer->_expires; 259 return timer->_expires;
242} 260}
243 261
262static inline ktime_t hrtimer_get_softexpires(const struct hrtimer *timer)
263{
264 return timer->_softexpires;
265}
266
244static inline s64 hrtimer_get_expires_tv64(const struct hrtimer *timer) 267static inline s64 hrtimer_get_expires_tv64(const struct hrtimer *timer)
245{ 268{
246 return timer->_expires.tv64; 269 return timer->_expires.tv64;
247} 270}
271static inline s64 hrtimer_get_softexpires_tv64(const struct hrtimer *timer)
272{
273 return timer->_softexpires.tv64;
274}
248 275
249static inline s64 hrtimer_get_expires_ns(const struct hrtimer *timer) 276static inline s64 hrtimer_get_expires_ns(const struct hrtimer *timer)
250{ 277{
@@ -334,7 +361,7 @@ static inline int hrtimer_start_expires(struct hrtimer *timer,
334 361
335static inline int hrtimer_restart(struct hrtimer *timer) 362static inline int hrtimer_restart(struct hrtimer *timer)
336{ 363{
337 return hrtimer_start(timer, timer->_expires, HRTIMER_MODE_ABS); 364 return hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
338} 365}
339 366
340/* Query timers: */ 367/* Query timers: */
@@ -391,6 +418,8 @@ extern long hrtimer_nanosleep_restart(struct restart_block *restart_block);
391extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, 418extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl,
392 struct task_struct *tsk); 419 struct task_struct *tsk);
393 420
421extern int schedule_hrtimeout_range(ktime_t *expires, unsigned long delta,
422 const enum hrtimer_mode mode);
394extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode); 423extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode);
395 424
396/* Soft interrupt function to run the hrtimer queues: */ 425/* Soft interrupt function to run the hrtimer queues: */