diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2013-10-03 11:56:48 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-10-29 20:21:22 -0400 |
commit | fb11c9c63f995afbe0e909f061d9866a722cb4bf (patch) | |
tree | 2a0f0fce4e7d3bd66cffe9d8282d5e618305b667 /drivers/cpuidle | |
parent | 9b29a86f04f87cdb9eaacadf2e2d33a55af1c7cc (diff) |
cpuidle: reduce code duplication inside cpuidle_idle_call()
We are doing this twice in cpuidle_idle_call() routine:
drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP
Would be better if we actually store this in a local variable and
use that. That reduces code duplication and likely makes this piece
of code run faster (in case the compiler wasn't able to optimize it
earlier)
[rjw: Cast the result of bitwise AND to bool explicitly using !!]
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 518b542cad54..86e805986d6f 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -118,6 +118,7 @@ int cpuidle_idle_call(void) | |||
118 | struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); | 118 | struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); |
119 | struct cpuidle_driver *drv; | 119 | struct cpuidle_driver *drv; |
120 | int next_state, entered_state; | 120 | int next_state, entered_state; |
121 | bool broadcast; | ||
121 | 122 | ||
122 | if (off || !initialized) | 123 | if (off || !initialized) |
123 | return -ENODEV; | 124 | return -ENODEV; |
@@ -141,7 +142,9 @@ int cpuidle_idle_call(void) | |||
141 | 142 | ||
142 | trace_cpu_idle_rcuidle(next_state, dev->cpu); | 143 | trace_cpu_idle_rcuidle(next_state, dev->cpu); |
143 | 144 | ||
144 | if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP) | 145 | broadcast = !!(drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP); |
146 | |||
147 | if (broadcast) | ||
145 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, | 148 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, |
146 | &dev->cpu); | 149 | &dev->cpu); |
147 | 150 | ||
@@ -151,7 +154,7 @@ int cpuidle_idle_call(void) | |||
151 | else | 154 | else |
152 | entered_state = cpuidle_enter_state(dev, drv, next_state); | 155 | entered_state = cpuidle_enter_state(dev, drv, next_state); |
153 | 156 | ||
154 | if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP) | 157 | if (broadcast) |
155 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, | 158 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, |
156 | &dev->cpu); | 159 | &dev->cpu); |
157 | 160 | ||