hrtimer: Move hrtimer_update_function() to hrtimer.c

The usage of the hrtimer base forces hrtimer.h to also expose the base
structure definitions.

Move the function to hrtimer.c to avoid this.

Signed-off-by: Thomas Weißschuh (Schneider Electric) <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260702-hrtimer-header-dependencies-v1-3-c50b19bda473@linutronix.de
This commit is contained in:
Thomas Weißschuh (Schneider Electric)
2026-07-07 23:43:44 +02:00
committed by Thomas Gleixner
parent d3dc7fabd4
commit a116c7582d
2 changed files with 26 additions and 22 deletions
+2 -22
View File
@@ -287,28 +287,8 @@ static inline bool hrtimer_is_queued(struct hrtimer *timer)
return READ_ONCE(timer->is_queued);
}
/**
* hrtimer_update_function - Update the timer's callback function
* @timer: Timer to update
* @function: New callback function
*
* Only safe to call if the timer is not enqueued. Can be called in the callback function if the
* timer is not enqueued at the same time (see the comments above HRTIMER_STATE_ENQUEUED).
*/
static inline void hrtimer_update_function(struct hrtimer *timer,
enum hrtimer_restart (*function)(struct hrtimer *))
{
#ifdef CONFIG_PROVE_LOCKING
guard(raw_spinlock_irqsave)(&timer->base->cpu_base->lock);
if (WARN_ON_ONCE(hrtimer_is_queued(timer)))
return;
if (WARN_ON_ONCE(!function))
return;
#endif
ACCESS_PRIVATE(timer, function) = function;
}
void hrtimer_update_function(struct hrtimer *timer,
enum hrtimer_restart (*function)(struct hrtimer *));
/* Forward a hrtimer so it expires after now: */
extern u64
+24
View File
@@ -1039,6 +1039,30 @@ static inline void unlock_hrtimer_base(const struct hrtimer *timer, unsigned lon
raw_spin_unlock_irqrestore(&timer->base->cpu_base->lock, *flags);
}
/**
* hrtimer_update_function - Update the timer's callback function
* @timer: Timer to update
* @function: New callback function
*
* Only safe to call if the timer is not enqueued. Can be called in the callback function if the
* timer is not enqueued at the same time (see the comments above HRTIMER_STATE_ENQUEUED).
*/
void hrtimer_update_function(struct hrtimer *timer,
enum hrtimer_restart (*function)(struct hrtimer *))
{
#ifdef CONFIG_PROVE_LOCKING
guard(raw_spinlock_irqsave)(&timer->base->cpu_base->lock);
if (WARN_ON_ONCE(hrtimer_is_queued(timer)))
return;
if (WARN_ON_ONCE(!function))
return;
#endif
ACCESS_PRIVATE(timer, function) = function;
}
EXPORT_SYMBOL_GPL(hrtimer_update_function);
/**
* hrtimer_forward() - forward the timer expiry
* @timer: hrtimer to forward