hrtimer: Factor out __hrtimer_start_range_ns()
Preparatory patch for softirq based hrtimers to avoid code duplication, factor out the __hrtimer_start_range_ns() function from hrtimer_start_range_ns(). No functional change. Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> Cc: Christoph Hellwig <hch@lst.de> Cc: John Stultz <john.stultz@linaro.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: keescook@chromium.org Link: http://lkml.kernel.org/r/20171221104205.7269-24-anna-maria@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
3ec7a3ee9f
commit
138a6b7ae4
|
@ -905,22 +905,11 @@ static inline ktime_t hrtimer_update_lowres(struct hrtimer *timer, ktime_t tim,
|
|||
return tim;
|
||||
}
|
||||
|
||||
/**
|
||||
* hrtimer_start_range_ns - (re)start an hrtimer
|
||||
* @timer: the timer to be added
|
||||
* @tim: expiry time
|
||||
* @delta_ns: "slack" range for the timer
|
||||
* @mode: timer mode: absolute (HRTIMER_MODE_ABS) or
|
||||
* relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED)
|
||||
*/
|
||||
void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
|
||||
u64 delta_ns, const enum hrtimer_mode mode)
|
||||
static int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
|
||||
u64 delta_ns, const enum hrtimer_mode mode,
|
||||
struct hrtimer_clock_base *base)
|
||||
{
|
||||
struct hrtimer_clock_base *base, *new_base;
|
||||
unsigned long flags;
|
||||
int leftmost;
|
||||
|
||||
base = lock_hrtimer_base(timer, &flags);
|
||||
struct hrtimer_clock_base *new_base;
|
||||
|
||||
/* Remove an active timer from the queue: */
|
||||
remove_hrtimer(timer, base, true);
|
||||
|
@ -935,12 +924,27 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
|
|||
/* Switch the timer base, if necessary: */
|
||||
new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
|
||||
|
||||
leftmost = enqueue_hrtimer(timer, new_base, mode);
|
||||
if (!leftmost)
|
||||
goto unlock;
|
||||
return enqueue_hrtimer(timer, new_base, mode);
|
||||
}
|
||||
/**
|
||||
* hrtimer_start_range_ns - (re)start an hrtimer
|
||||
* @timer: the timer to be added
|
||||
* @tim: expiry time
|
||||
* @delta_ns: "slack" range for the timer
|
||||
* @mode: timer mode: absolute (HRTIMER_MODE_ABS) or
|
||||
* relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED)
|
||||
*/
|
||||
void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
|
||||
u64 delta_ns, const enum hrtimer_mode mode)
|
||||
{
|
||||
struct hrtimer_clock_base *base;
|
||||
unsigned long flags;
|
||||
|
||||
base = lock_hrtimer_base(timer, &flags);
|
||||
|
||||
if (__hrtimer_start_range_ns(timer, tim, delta_ns, mode, base))
|
||||
hrtimer_reprogram(timer);
|
||||
|
||||
hrtimer_reprogram(timer);
|
||||
unlock:
|
||||
unlock_hrtimer_base(timer, &flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(hrtimer_start_range_ns);
|
||||
|
|
Loading…
Reference in New Issue