Re: [PATCH] sched: Support current clocksource handling in fallback sched_clock().

Daniel Walker
2009-05-27T16:26:01Z

On Wed, 2009-05-27 at 09:15 +0900, Paul Mundt wrote:

> unsigned long long __attribute__((weak)) sched_clock(void)
> {
> + /*
> + * Use the current clocksource when it becomes available later in
> + * the boot process, and ensure that it is usable for sched_clock().
> + */
> + if (clock && (clock->flags & CLOCK_SOURCE_USE_FOR_SCHED_CLOCK))
> + return cyc2ns(clock, clocksource_read(clock));
> +
> + /* Otherwise just fall back on jiffies */
> return (unsigned long long)(jiffies - INITIAL_JIFFIES)

Do we really need all this complexity in a fast path? the jiffies
clocksource is static and always ready. Could we instead remove the
usage of "clock" and create a new pointer called "sched_clocksource" and
initialize it to the jiffies clock, and allow the clocksource management
code to update that new pointer based on the
CLOCK_SOURCE_USE_FOR_SCHED_CLOCK flag when new clocksources are
registered/removed/marked unstable etc..

that would eliminate all the code in sched_clock except one line,

unsigned long long __attribute__((weak)) sched_clock(void)
{
return cyc2ns(sched_clocksource, clocksource_read(sched_clocksource));
}

Daniel