timekeeping: add CONFIG_LEGACY_TIMER_TICK
All platforms that currently do not use generic clockevents roughly call the same set of functions in their timer interrupts: xtime_update(), update_process_times() and profile_tick(), sometimes in a different sequence. Add a helper function that performs all three of them, to make the callers more uniform and simplify the interface. Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
77f6c0b874
commit
b3550164a1
@ -12,6 +12,7 @@ extern int timekeeping_suspended;
|
||||
/* Architecture timer tick functions: */
|
||||
extern void update_process_times(int user);
|
||||
extern void xtime_update(unsigned long ticks);
|
||||
extern void legacy_timer_tick(unsigned long ticks);
|
||||
|
||||
/*
|
||||
* Get and set timeofday
|
||||
|
@ -57,6 +57,13 @@ config POSIX_CPU_TIMERS_TASK_WORK
|
||||
bool
|
||||
default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK
|
||||
|
||||
config LEGACY_TIMER_TICK
|
||||
bool
|
||||
help
|
||||
The legacy timer tick helper is used by platforms that
|
||||
lack support for the generic clockevent framework.
|
||||
New platforms should use generic clockevents instead.
|
||||
|
||||
if GENERIC_CLOCKEVENTS
|
||||
menu "Timers subsystem"
|
||||
|
||||
|
@ -16,6 +16,7 @@ ifeq ($(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST),y)
|
||||
endif
|
||||
obj-$(CONFIG_GENERIC_SCHED_CLOCK) += sched_clock.o
|
||||
obj-$(CONFIG_TICK_ONESHOT) += tick-oneshot.o tick-sched.o
|
||||
obj-$(CONFIG_LEGACY_TIMER_TICK) += tick-legacy.o
|
||||
obj-$(CONFIG_HAVE_GENERIC_VDSO) += vsyscall.o
|
||||
obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o
|
||||
obj-$(CONFIG_TEST_UDELAY) += test_udelay.o
|
||||
|
19
kernel/time/tick-legacy.c
Normal file
19
kernel/time/tick-legacy.c
Normal file
@ -0,0 +1,19 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Timer tick function for architectures that lack generic clockevents,
|
||||
* consolidated here from m68k/ia64/parisc/arm.
|
||||
*/
|
||||
|
||||
#include <linux/irq.h>
|
||||
#include <linux/profile.h>
|
||||
#include <linux/timekeeper_internal.h>
|
||||
|
||||
#include "tick-internal.h"
|
||||
|
||||
void legacy_timer_tick(unsigned long ticks)
|
||||
{
|
||||
if (ticks)
|
||||
xtime_update(ticks);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
profile_tick(CPU_PROFILING);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user