Messages in this thread Patch in this message | | | From | Henrik Austad <> | Subject | [PATCH 1/6] Expose do_timer CPU from tick-common | Date | Tue, 25 Feb 2014 13:33:56 +0100 |
| |
This allows other parts of the kernel access to the tick_do_timer_cpu variable in a controlled manner. The values will differ depending on which mode is compiled in:
* CONFIG_HZ_PERIODIC: One (normally boot-cpu) is responsible for the time update. This will never change unless the CPU is removed (hotplugging). You will normally see a 0 returned every time here.
* CONFIG_NO_HZ_IDLE: system will disable periodic timer-interrupts on the cpu if only the idle-task is running. This means that the timer cpu will change often.
* CONFIG_NO_HZ_FULL: any CPU running only a single task can have timer-interrupts disabled. As for NO_HZ_IDLE, timer CPU will change often.
CC: Thomas Gleixner <tglx@linutronix.de> CC: Peter Zijlstra <peterz@infradead.org> CC: Frederic Weisbecker <fweisbec@gmail.com> CC: John Stultz <john.stultz@linaro.org> Signed-off-by: Henrik Austad <haustad@cisco.com> --- kernel/time/tick-common.c | 12 ++++++++++++ kernel/time/tick-internal.h | 1 + 2 files changed, 13 insertions(+)
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c index 20b2fe3..1729b4b 100644 --- a/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c @@ -348,6 +348,18 @@ void tick_handover_do_timer(int *cpup) } /* + * Return the current timer-CPU (RO) + * + * Warning! this value can (and will) change depending on how timer-ticks are + * handled, the value returned could be outdated the moment it is read by + * userspace. + */ +int tick_expose_cpu(void) +{ + return tick_do_timer_cpu; +} + +/* * Shutdown an event device on a given cpu: * * This is called on a life CPU, when a CPU is dead. So we cannot diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h index 8329669..5051dbd 100644 --- a/kernel/time/tick-internal.h +++ b/kernel/time/tick-internal.h @@ -154,5 +154,6 @@ static inline int tick_device_is_functional(struct clock_event_device *dev) #endif +extern int tick_expose_cpu(void); extern void do_timer(unsigned long ticks); extern void update_wall_time(void); -- 1.7.9.5
| |