| From: Anna-Maria Gleixner <anna-maria@linutronix.de> |
| Date: Thu, 31 Aug 2017 11:03:05 +0000 |
| Subject: [PATCH 07/25] hrtimer: Reduce conditional code (hres_active) |
| |
| The hrtimer_cpu_base struct has the CONFIG_HIGH_RES_TIMERS conditional |
| struct member hres_active. All related functions to this member are |
| conditional as well. |
| |
| There is no functional change, when the hres_active member is unconditional |
| with all related functions and is set to zero during initialization. This |
| makes the code easier to read. |
| |
| Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| include/linux/hrtimer.h | 17 ++++++----------- |
| kernel/time/hrtimer.c | 30 ++++++++++++++---------------- |
| 2 files changed, 20 insertions(+), 27 deletions(-) |
| |
| --- a/include/linux/hrtimer.h |
| +++ b/include/linux/hrtimer.h |
| @@ -180,9 +180,9 @@ struct hrtimer_cpu_base { |
| unsigned int clock_was_set_seq; |
| bool migration_enabled; |
| bool nohz_active; |
| + unsigned int hres_active : 1; |
| #ifdef CONFIG_HIGH_RES_TIMERS |
| unsigned int in_hrtirq : 1, |
| - hres_active : 1, |
| hang_detected : 1; |
| ktime_t expires_next; |
| struct hrtimer *next_timer; |
| @@ -264,16 +264,16 @@ static inline ktime_t hrtimer_cb_get_tim |
| return timer->base->get_time(); |
| } |
| |
| -#ifdef CONFIG_HIGH_RES_TIMERS |
| -struct clock_event_device; |
| - |
| -extern void hrtimer_interrupt(struct clock_event_device *dev); |
| - |
| static inline int hrtimer_is_hres_active(struct hrtimer *timer) |
| { |
| return timer->base->cpu_base->hres_active; |
| } |
| |
| +#ifdef CONFIG_HIGH_RES_TIMERS |
| +struct clock_event_device; |
| + |
| +extern void hrtimer_interrupt(struct clock_event_device *dev); |
| + |
| /* |
| * The resolution of the clocks. The resolution value is returned in |
| * the clock_getres() system call to give application programmers an |
| @@ -296,11 +296,6 @@ extern unsigned int hrtimer_resolution; |
| |
| #define hrtimer_resolution (unsigned int)LOW_RES_NSEC |
| |
| -static inline int hrtimer_is_hres_active(struct hrtimer *timer) |
| -{ |
| - return 0; |
| -} |
| - |
| static inline void clock_was_set_delayed(void) { } |
| |
| #endif |
| --- a/kernel/time/hrtimer.c |
| +++ b/kernel/time/hrtimer.c |
| @@ -504,6 +504,19 @@ static inline ktime_t hrtimer_update_bas |
| offs_real, offs_boot, offs_tai); |
| } |
| |
| +/* |
| + * Is the high resolution mode active ? |
| + */ |
| +static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *cpu_base) |
| +{ |
| + return cpu_base->hres_active; |
| +} |
| + |
| +static inline int hrtimer_hres_active(void) |
| +{ |
| + return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases)); |
| +} |
| + |
| /* High resolution timer related functions */ |
| #ifdef CONFIG_HIGH_RES_TIMERS |
| |
| @@ -533,19 +546,6 @@ static inline int hrtimer_is_hres_enable |
| } |
| |
| /* |
| - * Is the high resolution mode active ? |
| - */ |
| -static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *cpu_base) |
| -{ |
| - return cpu_base->hres_active; |
| -} |
| - |
| -static inline int hrtimer_hres_active(void) |
| -{ |
| - return __hrtimer_hres_active(this_cpu_ptr(&hrtimer_bases)); |
| -} |
| - |
| -/* |
| * Reprogram the event source with checking both queues for the |
| * next event |
| * Called with interrupts disabled and base->lock held |
| @@ -653,7 +653,6 @@ static void hrtimer_reprogram(struct hrt |
| static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) |
| { |
| base->expires_next = KTIME_MAX; |
| - base->hres_active = 0; |
| } |
| |
| /* |
| @@ -712,8 +711,6 @@ void clock_was_set_delayed(void) |
| |
| #else |
| |
| -static inline int __hrtimer_hres_active(struct hrtimer_cpu_base *b) { return 0; } |
| -static inline int hrtimer_hres_active(void) { return 0; } |
| static inline int hrtimer_is_hres_enabled(void) { return 0; } |
| static inline void hrtimer_switch_to_hres(void) { } |
| static inline void |
| @@ -1572,6 +1569,7 @@ int hrtimers_prepare_cpu(unsigned int cp |
| } |
| |
| cpu_base->cpu = cpu; |
| + cpu_base->hres_active = 0; |
| hrtimer_init_hres(cpu_base); |
| return 0; |
| } |