Commit b3550164 authored by Arnd Bergmann's avatar Arnd Bergmann

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: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 77f6c0b8
......@@ -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
......
// 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);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment