On Fri, 16 Jan 2015, Alexandre Belloni wrote: > diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h > index abcafaa20b86..7735902fc5f6 100644 > --- a/include/linux/clocksource.h > +++ b/include/linux/clocksource.h > @@ -210,6 +210,8 @@ struct clocksource { > #define CLOCK_SOURCE_SUSPEND_NONSTOP 0x80 > #define CLOCK_SOURCE_RESELECT 0x100 > > +#define CLOCK_SOURCE_USED 0x200
You track whether the clocksource is enabled or not, right? > /* simplify initialization of mask field */ > #define CLOCKSOURCE_MASK(bits) (cycle_t)((bits) < 64 ? ((1ULL<<(bits))-1) : > -1) > > @@ -282,6 +284,8 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 > mult, u32 shift) > > extern int clocksource_register(struct clocksource*); > extern int clocksource_unregister(struct clocksource*); > +extern int clocksource_enable(struct clocksource *); > +extern void clocksource_disable(struct clocksource *); This should be in kernel/time/timekeeping_internal.h > extern void clocksource_touch_watchdog(void); > extern struct clocksource* clocksource_get_next(void); > extern void clocksource_change_rating(struct clocksource *cs, int rating); > diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c > index b79f39bda7e1..03cfc5a08e3b 100644 > --- a/kernel/time/clocksource.c > +++ b/kernel/time/clocksource.c > @@ -889,6 +889,36 @@ int clocksource_unregister(struct clocksource *cs) > } > EXPORT_SYMBOL(clocksource_unregister); > > +/** > + * clocksource_enable - enable a registered clocksource > + * @cs: clocksource to enable > + */ > +int clocksource_enable(struct clocksource *cs) > +{ > + int ret = 0; > + > + if (cs->enable) > + ret = cs->enable(cs); > + > + if (!ret) > + cs->flags |= CLOCK_SOURCE_USED; > + > + return ret; > +} > +EXPORT_SYMBOL(clocksource_enable); Why on earth do you want to export that? > +/** > + * clocksource_disable - disable a registered clocksource > + * @cs: clocksource to disable > + */ > +void clocksource_disable(struct clocksource *cs) > +{ > + cs->flags &= ~CLOCK_SOURCE_USED; > + if (cs->disable) > + cs->disable(cs); > +} > +EXPORT_SYMBOL(clocksource_disable); Ditto. Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/