Re: [PATCH] clocksource: add enable() and disable() callbacks

From: Ingo Molnar
Date: Fri Dec 12 2008 - 01:37:46 EST



* Magnus Damm <magnus.damm@xxxxxxxxx> wrote:

> +static inline int clocksource_enable(struct clocksource *cs)
> +{
> + return cs->enable ? cs->enable(cs) : 0;
> +}

> +static inline void clocksource_disable(struct clocksource *cs)
> +{
> + if (cs->disable)
> + cs->disable(cs);
> +}

why have the two different styles? The first one should be:

if (cs->enable)
return cs->enable(cs);
return 0;

> @@ -193,11 +193,16 @@ static void change_clocksource(void)
>
> clocksource_forward_now();
>
> - new->raw_time = clock->raw_time;
> + if (clocksource_enable(new))
> + return;

that looks fragile to me: if the enable fails we'll return silently,
while change_clocksource() assumes that things went fine. At least put a
WARN_ON_ONCE() in there.

also, why does it have to fail? If a clocksource cannot be enabled it
should not be offered as a clocksource.

> + clocksource_disable(old);

i do agree with the core purpose here, to allow lowlevel code to
deactivate unused clocksources.

John, Thomas, what's your take on this?

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/