@@ -87,7 +87,10 @@ extern void __init tick_init(void);
extern int tick_is_oneshot_available(void);
DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
-extern struct tick_device *tick_get_device(int cpu);
+static inline struct tick_device *tick_get_device(int cpu)
+{
+ return &per_cpu(tick_cpu_device, cpu);
+}
# ifdef CONFIG_HIGH_RES_TIMERS
extern int tick_init_highres(void);
@@ -326,7 +326,7 @@ static int __clockevents_try_unbind(struct clock_event_device *ced, int cpu)
return 0;
}
- return ced == per_cpu(tick_cpu_device, cpu).evtdev ? -EAGAIN : -EBUSY;
+ return ced == tick_get_device(cpu)->evtdev ? -EAGAIN : -EBUSY;
}
/*
@@ -675,7 +675,7 @@ static struct device tick_bc_dev = {
static struct tick_device *tick_get_tick_dev(struct device *dev)
{
return dev == &tick_bc_dev ? tick_get_broadcast_device() :
- &per_cpu(tick_cpu_device, dev->id);
+ tick_get_device(dev->id);
}
static __init int tick_broadcast_init_sysfs(void)
@@ -689,7 +689,7 @@ static __init int tick_broadcast_init_sysfs(void)
#else
static struct tick_device *tick_get_tick_dev(struct device *dev)
{
- return &per_cpu(tick_cpu_device, dev->id);
+ return tick_get_device(dev->id);
}
static inline int tick_broadcast_init_sysfs(void) { return 0; }
#endif
@@ -262,7 +262,7 @@ static void tick_do_broadcast(struct cpumask *mask)
*/
if (cpumask_test_cpu(cpu, mask)) {
cpumask_clear_cpu(cpu, mask);
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
td->evtdev->event_handler(td->evtdev);
}
@@ -273,7 +273,7 @@ static void tick_do_broadcast(struct cpumask *mask)
* one of the first device. This works as long as we have this
* misfeature only on x86 (lapic)
*/
- td = &per_cpu(tick_cpu_device, cpumask_first(mask));
+ td = tick_get_device(cpumask_first(mask));
td->evtdev->broadcast(mask);
}
}
@@ -337,7 +337,7 @@ static void tick_do_broadcast_on_off(unsigned long *reason)
raw_spin_lock_irqsave(&tick_broadcast_lock, flags);
cpu = smp_processor_id();
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
dev = td->evtdev;
bc = tick_broadcast_device.evtdev;
@@ -581,7 +581,7 @@ again:
now = ktime_get();
/* Find all expired events */
for_each_cpu(cpu, tick_broadcast_oneshot_mask) {
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
if (td->evtdev->next_event.tv64 <= now.tv64) {
cpumask_set_cpu(cpu, tmpmask);
/*
@@ -700,7 +700,7 @@ int tick_broadcast_oneshot_control(unsigned long reason)
* idle code, so we can't be moved away.
*/
cpu = smp_processor_id();
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
dev = td->evtdev;
if (!(dev->features & CLOCK_EVT_FEAT_C3STOP))
@@ -824,7 +824,7 @@ static void tick_broadcast_init_next_event(struct cpumask *mask,
int cpu;
for_each_cpu(cpu, mask) {
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
if (td->evtdev)
td->evtdev->next_event = expires;
}
@@ -53,11 +53,6 @@ int tick_do_timer_cpu __read_mostly = TICK_DO_TIMER_BOOT;
/*
* Debugging: see timer_list.c
*/
-struct tick_device *tick_get_device(int cpu)
-{
- return &per_cpu(tick_cpu_device, cpu);
-}
-
/**
* tick_is_oneshot_available - check for a oneshot capable event device
*/
@@ -296,7 +291,7 @@ void tick_check_new_device(struct clock_event_device *newdev)
if (!cpumask_test_cpu(cpu, newdev->cpumask))
goto out_bc;
- td = &per_cpu(tick_cpu_device, cpu);
+ td = tick_get_device(cpu);
curdev = td->evtdev;
/* cpu local device ? */
@@ -356,7 +351,7 @@ void tick_handover_do_timer(int *cpup)
*/
void tick_shutdown(unsigned int *cpup)
{
- struct tick_device *td = &per_cpu(tick_cpu_device, *cpup);
+ struct tick_device *td = tick_get_device(*cpup);
struct clock_event_device *dev = td->evtdev;
td->mode = TICKDEV_MODE_PERIODIC;
There are multiple users of tick_get_device() which are currently using &per_cpu(tick_cpu_device, cpu) directly. Would be better to move definition of tick_get_device() to tick.h and move others to use this routine instead. This change reduced size of bzImage for x86 by 96 bytes. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- include/linux/tick.h | 5 ++++- kernel/time/clockevents.c | 6 +++--- kernel/time/tick-broadcast.c | 12 ++++++------ kernel/time/tick-common.c | 9 ++------- 4 files changed, 15 insertions(+), 17 deletions(-)