lkml.org 
[lkml]   [2009]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] sched: Support current clocksource handling in fallback sched_clock().
    On Wed, May 27, 2009 at 09:25:25AM -0700, Daniel Walker wrote:
    > 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));
    > }
    >
    It would, but then what would that do to the sched_clock() value? It will
    reset once a CLOCK_SOURCE_USE_FOR_SCHED_CLOCK clocksource comes along,
    which basically means that sched_clock() then rolls back, which is worse
    than simply being delayed a bit. So even if we were to use a special
    sched_clocksource, it still could not be used until it was set up at
    registration time.

    Now we could of course add a sched_clocksource assignment in
    select_clocksource(), but that's really no different than just testing
    'clock' as we do today. All it does is move the flag test in to a
    different path.

    So, I think the current v3 is still the best solution.


    \
     
     \ /
      Last update: 2009-05-28 10:47    [W:3.901 / U:0.260 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site